From 35a4be4ee6013eacb4493c247f75f9bebe52979b Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 23 Jan 2022 17:04:16 +0100 Subject: [PATCH 001/182] use tox for local testing with multiple python versions --- poetry.lock | 104 ++++++++++++++++++++++++++++++++++++++++++++++--- pyproject.toml | 3 +- tox.ini | 9 +++++ 3 files changed, 109 insertions(+), 7 deletions(-) create mode 100644 tox.ini diff --git a/poetry.lock b/poetry.lock index be7fec3..43ff91c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -141,6 +141,14 @@ requests = ">=1.0.0" [package.extras] yaml = ["PyYAML (>=3.10)"] +[[package]] +name = "distlib" +version = "0.3.4" +description = "Distribution utilities" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "docopt" version = "0.6.2" @@ -149,6 +157,18 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "filelock" +version = "3.4.2" +description = "A platform independent file lock." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] +testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] + [[package]] name = "flake8" version = "4.0.1" @@ -318,7 +338,7 @@ python-versions = "*" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" @@ -341,11 +361,23 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "platformdirs" +version = "2.4.1" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] + [[package]] name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" @@ -365,7 +397,7 @@ python-versions = "*" name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" @@ -389,7 +421,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" name = "pyparsing" version = "3.0.6" description = "Python parsing module" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" @@ -520,10 +552,32 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "tox" +version = "3.24.5" +description = "tox is a generic virtualenv management and test command line tool" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} +filelock = ">=3.0.0" +packaging = ">=14" +pluggy = ">=0.12.0" +py = ">=1.4.17" +six = ">=1.14.0" +toml = ">=0.9.4" +virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" + +[package.extras] +docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] + [[package]] name = "typed-ast" version = "1.4.3" @@ -577,6 +631,24 @@ brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "virtualenv" +version = "20.13.0" +description = "Virtual Python Environment builder" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +distlib = ">=0.3.1,<1" +filelock = ">=3.2,<4" +platformdirs = ">=2,<3" +six = ">=1.9.0,<2" + +[package.extras] +docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] +testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] + [[package]] name = "werkzeug" version = "2.0.2" @@ -603,7 +675,7 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytes [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "b54f622e5630967a5ee4078dedf7ad331cc9e3b064bfcd71c839583c002be28f" +content-hash = "15798b3b3958a5650ed91f13d02450c2fcc0caebeb2fd23c79c6a63e7244aa39" [metadata.files] appdirs = [ @@ -699,9 +771,17 @@ coveralls = [ {file = "coveralls-3.3.1-py2.py3-none-any.whl", hash = "sha256:f42015f31d386b351d4226389b387ae173207058832fbf5c8ec4b40e27b16026"}, {file = "coveralls-3.3.1.tar.gz", hash = "sha256:b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea"}, ] +distlib = [ + {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, + {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, +] docopt = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, ] +filelock = [ + {file = "filelock-3.4.2-py3-none-any.whl", hash = "sha256:cf0fc6a2f8d26bd900f19bf33915ca70ba4dd8c56903eeb14e1e7a2fd7590146"}, + {file = "filelock-3.4.2.tar.gz", hash = "sha256:38b4f4c989f9d06d44524df1b24bd19e167d851f19b50bf3e3559952dddc5b80"}, +] flake8 = [ {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, @@ -847,6 +927,10 @@ pathspec = [ peewee = [ {file = "peewee-3.14.8.tar.gz", hash = "sha256:01bd7f734defb08d7a3346a0c0ca7011bc8d0d685934ec0e001b3371d522ec53"}, ] +platformdirs = [ + {file = "platformdirs-2.4.1-py3-none-any.whl", hash = "sha256:1d7385c7db91728b83efd0ca99a5afb296cab9d0ed8313a45ed8ba17967ecfca"}, + {file = "platformdirs-2.4.1.tar.gz", hash = "sha256:440633ddfebcc36264232365d7840a970e75e1018d15b4327d11f91909045fda"}, +] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, @@ -986,6 +1070,10 @@ toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +tox = [ + {file = "tox-3.24.5-py2.py3-none-any.whl", hash = "sha256:be3362472a33094bce26727f5f771ca0facf6dafa217f65875314e9a6600c95c"}, + {file = "tox-3.24.5.tar.gz", hash = "sha256:67e0e32c90e278251fea45b696d0fef3879089ccbe979b0c556d35d5a70e2993"}, +] typed-ast = [ {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"}, {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"}, @@ -1034,6 +1122,10 @@ urllib3 = [ {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"}, ] +virtualenv = [ + {file = "virtualenv-20.13.0-py2.py3-none-any.whl", hash = "sha256:339f16c4a86b44240ba7223d0f93a7887c3ca04b5f9c8129da7958447d079b09"}, + {file = "virtualenv-20.13.0.tar.gz", hash = "sha256:d8458cf8d59d0ea495ad9b34c2599487f8a7772d796f9910858376d1600dd2dd"}, +] werkzeug = [ {file = "Werkzeug-2.0.2-py3-none-any.whl", hash = "sha256:63d3dc1cf60e7b7e35e97fa9861f7397283b75d765afcaefd993d6046899de8f"}, {file = "Werkzeug-2.0.2.tar.gz", hash = "sha256:aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a"}, diff --git a/pyproject.toml b/pyproject.toml index 2af639c..64d6f78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ readme = "README.md" include = ["run.py"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.8" apscheduler = "^3.6.3" pyrss2gen = "^1.1" profig = "^0.5.1" @@ -17,6 +17,7 @@ Flask = "^2.0.1" requests = "^2.25.1" coverage = "^5.5" peewee = "^3.14.8" +tox = "^3.24.5" [tool.poetry.dev-dependencies] rope = "^0.16.0" diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..c4ac41c --- /dev/null +++ b/tox.ini @@ -0,0 +1,9 @@ +[tox] +isolated_build = true +envlist = py38, py39 + +[testenv] +whitelist_externals = poetry +commands = + poetry install -v + poetry run pytest tests/ From e70611aa574c1bfaacbb96681014480da01114d2 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 23 Jan 2022 17:08:41 +0100 Subject: [PATCH 002/182] compatible with python 3.8 --- .github/workflows/pytest.yml | 4 +- poetry.lock | 245 ++++++++++++++++++++--------------- 2 files changed, 140 insertions(+), 109 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 6b4ba3b..bdf03a8 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -6,8 +6,8 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.9, 3.9.6] - poetry-version: [1.1.7] + python-version: [3.8.12, 3.9.10] + poetry-version: [1.1.12] os: [ubuntu-18.04, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: diff --git a/poetry.lock b/poetry.lock index 43ff91c..c305e46 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,17 +42,28 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "attrs" -version = "21.2.0" +version = "21.4.0" description = "Classes Without Boilerplate" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "backports.zoneinfo" +version = "0.2.1" +description = "Backport of the standard library zoneinfo module" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +tzdata = ["tzdata"] [[package]] name = "black" @@ -86,7 +97,7 @@ python-versions = "*" [[package]] name = "charset-normalizer" -version = "2.0.9" +version = "2.0.10" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false @@ -215,7 +226,7 @@ dotenv = ["python-dotenv"] [[package]] name = "flask-apscheduler" -version = "1.12.2" +version = "1.12.3" description = "Adds APScheduler support to Flask" category = "main" optional = false @@ -236,11 +247,11 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.8.2" +version = "4.10.1" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] zipp = ">=0.5" @@ -248,7 +259,7 @@ zipp = ">=0.5" [package.extras] docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] [[package]] name = "iniconfig" @@ -419,7 +430,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pyparsing" -version = "3.0.6" +version = "3.0.7" description = "Python parsing module" category = "main" optional = false @@ -501,11 +512,12 @@ optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" [package.dependencies] +"backports.zoneinfo" = {version = "*", markers = "python_version >= \"3.6\" and python_version < \"3.9\""} tzdata = {version = "*", markers = "python_version >= \"3.6\""} [[package]] name = "regex" -version = "2021.11.10" +version = "2022.1.18" description = "Alternative regular expression module, to replace re." category = "dev" optional = false @@ -513,7 +525,7 @@ python-versions = "*" [[package]] name = "requests" -version = "2.26.0" +version = "2.27.1" description = "Python HTTP for Humans." category = "main" optional = false @@ -611,6 +623,7 @@ optional = false python-versions = ">=3.6" [package.dependencies] +"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} pytz-deprecation-shim = "*" tzdata = {version = "*", markers = "platform_system == \"Windows\""} @@ -620,7 +633,7 @@ test = ["pytest-mock (>=3.3)", "pytest (>=4.3)"] [[package]] name = "urllib3" -version = "1.26.7" +version = "1.26.8" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false @@ -662,20 +675,20 @@ watchdog = ["watchdog"] [[package]] name = "zipp" -version = "3.6.0" +version = "3.7.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [metadata] lock-version = "1.1" -python-versions = "^3.9" -content-hash = "15798b3b3958a5650ed91f13d02450c2fcc0caebeb2fd23c79c6a63e7244aa39" +python-versions = "^3.8" +content-hash = "79d96a01febb3d55127734be5b86aefdaab09d1f400efd8cbbcd55faf00030cb" [metadata.files] appdirs = [ @@ -691,8 +704,26 @@ atomicwrites = [ {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, ] attrs = [ - {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, - {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +"backports.zoneinfo" = [ + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, + {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, ] black = [ {file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"}, @@ -702,8 +733,8 @@ certifi = [ {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.9.tar.gz", hash = "sha256:b0b883e8e874edfdece9c28f314e3dd5badf067342e42fb162203335ae61aa2c"}, - {file = "charset_normalizer-2.0.9-py3-none-any.whl", hash = "sha256:1eecaa09422db5be9e29d7fc65664e6c33bd06f9ced7838578ba40d58bdf3721"}, + {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"}, + {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"}, ] click = [ {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"}, @@ -795,15 +826,15 @@ flask = [ {file = "Flask-2.0.2.tar.gz", hash = "sha256:7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2"}, ] flask-apscheduler = [ - {file = "Flask-APScheduler-1.12.2.tar.gz", hash = "sha256:b9fe174b90d201d8beeba5522b023208f7bb6e2583fc02fea4be4bce5ee8f9e5"}, + {file = "Flask-APScheduler-1.12.3.tar.gz", hash = "sha256:d60948d1f2be9eb4772f68c3308ba3f973755219d13947266f89292ad6df63fc"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.8.2-py3-none-any.whl", hash = "sha256:53ccfd5c134223e497627b9815d5030edf77d2ed573922f7a0b8f8bb81a1c100"}, - {file = "importlib_metadata-4.8.2.tar.gz", hash = "sha256:75bdec14c397f528724c1bfd9709d660b33a4d2e77387a3358f20b848bb5e5fb"}, + {file = "importlib_metadata-4.10.1-py3-none-any.whl", hash = "sha256:899e2a40a8c4a1aec681feef45733de8a6c58f3f6a0dbed2eb6574b4387a77b6"}, + {file = "importlib_metadata-4.10.1.tar.gz", hash = "sha256:951f0d8a5b7260e9db5e41d429285b5f451e928479f19d80818878527d36e95e"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, @@ -951,8 +982,8 @@ pyflakes = [ {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, ] pyparsing = [ - {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"}, - {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"}, + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pyrss2gen = [ {file = "PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7"}, @@ -978,84 +1009,84 @@ pytz-deprecation-shim = [ {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, ] regex = [ - {file = "regex-2021.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9345b6f7ee578bad8e475129ed40123d265464c4cfead6c261fd60fc9de00bcf"}, - {file = "regex-2021.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:416c5f1a188c91e3eb41e9c8787288e707f7d2ebe66e0a6563af280d9b68478f"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0538c43565ee6e703d3a7c3bdfe4037a5209250e8502c98f20fea6f5fdf2965"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee1227cf08b6716c85504aebc49ac827eb88fcc6e51564f010f11a406c0a667"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6650f16365f1924d6014d2ea770bde8555b4a39dc9576abb95e3cd1ff0263b36"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30ab804ea73972049b7a2a5c62d97687d69b5a60a67adca07eb73a0ddbc9e29f"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68a067c11463de2a37157930d8b153005085e42bcb7ad9ca562d77ba7d1404e0"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:162abfd74e88001d20cb73ceaffbfe601469923e875caf9118333b1a4aaafdc4"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9ed0b1e5e0759d6b7f8e2f143894b2a7f3edd313f38cf44e1e15d360e11749b"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:473e67837f786404570eae33c3b64a4b9635ae9f00145250851a1292f484c063"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2fee3ed82a011184807d2127f1733b4f6b2ff6ec7151d83ef3477f3b96a13d03"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d5fd67df77bab0d3f4ea1d7afca9ef15c2ee35dfb348c7b57ffb9782a6e4db6e"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5d408a642a5484b9b4d11dea15a489ea0928c7e410c7525cd892f4d04f2f617b"}, - {file = "regex-2021.11.10-cp310-cp310-win32.whl", hash = "sha256:98ba568e8ae26beb726aeea2273053c717641933836568c2a0278a84987b2a1a"}, - {file = "regex-2021.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:780b48456a0f0ba4d390e8b5f7c661fdd218934388cde1a974010a965e200e12"}, - {file = "regex-2021.11.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dba70f30fd81f8ce6d32ddeef37d91c8948e5d5a4c63242d16a2b2df8143aafc"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1f54b9b4b6c53369f40028d2dd07a8c374583417ee6ec0ea304e710a20f80a0"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbb9dc00e39f3e6c0ef48edee202f9520dafb233e8b51b06b8428cfcb92abd30"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666abff54e474d28ff42756d94544cdfd42e2ee97065857413b72e8a2d6a6345"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5537f71b6d646f7f5f340562ec4c77b6e1c915f8baae822ea0b7e46c1f09b733"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2e07c6a26ed4bea91b897ee2b0835c21716d9a469a96c3e878dc5f8c55bb23"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca5f18a75e1256ce07494e245cdb146f5a9267d3c702ebf9b65c7f8bd843431e"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:74cbeac0451f27d4f50e6e8a8f3a52ca074b5e2da9f7b505c4201a57a8ed6286"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3598893bde43091ee5ca0a6ad20f08a0435e93a69255eeb5f81b85e81e329264"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:50a7ddf3d131dc5633dccdb51417e2d1910d25cbcf842115a3a5893509140a3a"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:61600a7ca4bcf78a96a68a27c2ae9389763b5b94b63943d5158f2a377e09d29a"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:563d5f9354e15e048465061509403f68424fef37d5add3064038c2511c8f5e00"}, - {file = "regex-2021.11.10-cp36-cp36m-win32.whl", hash = "sha256:93a5051fcf5fad72de73b96f07d30bc29665697fb8ecdfbc474f3452c78adcf4"}, - {file = "regex-2021.11.10-cp36-cp36m-win_amd64.whl", hash = "sha256:b483c9d00a565633c87abd0aaf27eb5016de23fed952e054ecc19ce32f6a9e7e"}, - {file = "regex-2021.11.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fff55f3ce50a3ff63ec8e2a8d3dd924f1941b250b0aac3d3d42b687eeff07a8e"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32d2a2b02ccbef10145df9135751abea1f9f076e67a4e261b05f24b94219e36"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53db2c6be8a2710b359bfd3d3aa17ba38f8aa72a82309a12ae99d3c0c3dcd74d"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2207ae4f64ad3af399e2d30dde66f0b36ae5c3129b52885f1bffc2f05ec505c8"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5ca078bb666c4a9d1287a379fe617a6dccd18c3e8a7e6c7e1eb8974330c626a"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd33eb9bdcfbabab3459c9ee651d94c842bc8a05fabc95edf4ee0c15a072495e"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05b7d6d7e64efe309972adab77fc2af8907bb93217ec60aa9fe12a0dad35874f"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:42b50fa6666b0d50c30a990527127334d6b96dd969011e843e726a64011485da"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6e1d2cc79e8dae442b3fa4a26c5794428b98f81389af90623ffcc650ce9f6732"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:0416f7399e918c4b0e074a0f66e5191077ee2ca32a0f99d4c187a62beb47aa05"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ce298e3d0c65bd03fa65ffcc6db0e2b578e8f626d468db64fdf8457731052942"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dc07f021ee80510f3cd3af2cad5b6a3b3a10b057521d9e6aaeb621730d320c5a"}, - {file = "regex-2021.11.10-cp37-cp37m-win32.whl", hash = "sha256:e71255ba42567d34a13c03968736c5d39bb4a97ce98188fafb27ce981115beec"}, - {file = "regex-2021.11.10-cp37-cp37m-win_amd64.whl", hash = "sha256:07856afef5ffcc052e7eccf3213317fbb94e4a5cd8177a2caa69c980657b3cb4"}, - {file = "regex-2021.11.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba05430e819e58544e840a68b03b28b6d328aff2e41579037e8bab7653b37d83"}, - {file = "regex-2021.11.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7f301b11b9d214f83ddaf689181051e7f48905568b0c7017c04c06dfd065e244"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aaa4e0705ef2b73dd8e36eeb4c868f80f8393f5f4d855e94025ce7ad8525f50"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:788aef3549f1924d5c38263104dae7395bf020a42776d5ec5ea2b0d3d85d6646"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f8af619e3be812a2059b212064ea7a640aff0568d972cd1b9e920837469eb3cb"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85bfa6a5413be0ee6c5c4a663668a2cad2cbecdee367630d097d7823041bdeec"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f23222527b307970e383433daec128d769ff778d9b29343fb3496472dc20dabe"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da1a90c1ddb7531b1d5ff1e171b4ee61f6345119be7351104b67ff413843fe94"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f5be7805e53dafe94d295399cfbe5227f39995a997f4fd8539bf3cbdc8f47ca8"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a955b747d620a50408b7fdf948e04359d6e762ff8a85f5775d907ceced715129"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:139a23d1f5d30db2cc6c7fd9c6d6497872a672db22c4ae1910be22d4f4b2068a"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ca49e1ab99593438b204e00f3970e7a5f70d045267051dfa6b5f4304fcfa1dbf"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96fc32c16ea6d60d3ca7f63397bff5c75c5a562f7db6dec7d412f7c4d2e78ec0"}, - {file = "regex-2021.11.10-cp38-cp38-win32.whl", hash = "sha256:0617383e2fe465732af4509e61648b77cbe3aee68b6ac8c0b6fe934db90be5cc"}, - {file = "regex-2021.11.10-cp38-cp38-win_amd64.whl", hash = "sha256:a3feefd5e95871872673b08636f96b61ebef62971eab044f5124fb4dea39919d"}, - {file = "regex-2021.11.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7f325be2804246a75a4f45c72d4ce80d2443ab815063cdf70ee8fb2ca59ee1b"}, - {file = "regex-2021.11.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:537ca6a3586931b16a85ac38c08cc48f10fc870a5b25e51794c74df843e9966d"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef2afb0fd1747f33f1ee3e209bce1ed582d1896b240ccc5e2697e3275f037c7"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:432bd15d40ed835a51617521d60d0125867f7b88acf653e4ed994a1f8e4995dc"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b43c2b8a330a490daaef5a47ab114935002b13b3f9dc5da56d5322ff218eeadb"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:962b9a917dd7ceacbe5cd424556914cb0d636001e393b43dc886ba31d2a1e449"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa8c626d6441e2d04b6ee703ef2d1e17608ad44c7cb75258c09dd42bacdfc64b"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c5fb32cc6077abad3bbf0323067636d93307c9fa93e072771cf9a64d1c0f3ef"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cd410a1cbb2d297c67d8521759ab2ee3f1d66206d2e4328502a487589a2cb21b"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e6096b0688e6e14af6a1b10eaad86b4ff17935c49aa774eac7c95a57a4e8c296"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:529801a0d58809b60b3531ee804d3e3be4b412c94b5d267daa3de7fadef00f49"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f594b96fe2e0821d026365f72ac7b4f0b487487fb3d4aaf10dd9d97d88a9737"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2409b5c9cef7054dde93a9803156b411b677affc84fca69e908b1cb2c540025d"}, - {file = "regex-2021.11.10-cp39-cp39-win32.whl", hash = "sha256:3b5df18db1fccd66de15aa59c41e4f853b5df7550723d26aa6cb7f40e5d9da5a"}, - {file = "regex-2021.11.10-cp39-cp39-win_amd64.whl", hash = "sha256:83ee89483672b11f8952b158640d0c0ff02dc43d9cb1b70c1564b49abe92ce29"}, - {file = "regex-2021.11.10.tar.gz", hash = "sha256:f341ee2df0999bfdf7a95e448075effe0db212a59387de1a70690e4acb03d4c6"}, + {file = "regex-2022.1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:34316bf693b1d2d29c087ee7e4bb10cdfa39da5f9c50fa15b07489b4ab93a1b5"}, + {file = "regex-2022.1.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a0b9f6a1a15d494b35f25ed07abda03209fa76c33564c09c9e81d34f4b919d7"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f99112aed4fb7cee00c7f77e8b964a9b10f69488cdff626ffd797d02e2e4484f"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a2bf98ac92f58777c0fafc772bf0493e67fcf677302e0c0a630ee517a43b949"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8618d9213a863c468a865e9d2ec50221015f7abf52221bc927152ef26c484b4c"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b52cc45e71657bc4743a5606d9023459de929b2a198d545868e11898ba1c3f59"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e12949e5071c20ec49ef00c75121ed2b076972132fc1913ddf5f76cae8d10b4"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b02e3e72665cd02afafb933453b0c9f6c59ff6e3708bd28d0d8580450e7e88af"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abfcb0ef78df0ee9df4ea81f03beea41849340ce33a4c4bd4dbb99e23ec781b6"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6213713ac743b190ecbf3f316d6e41d099e774812d470422b3a0f137ea635832"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:61ebbcd208d78658b09e19c78920f1ad38936a0aa0f9c459c46c197d11c580a0"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b013f759cd69cb0a62de954d6d2096d648bc210034b79b1881406b07ed0a83f9"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9187500d83fd0cef4669385cbb0961e227a41c0c9bc39219044e35810793edf7"}, + {file = "regex-2022.1.18-cp310-cp310-win32.whl", hash = "sha256:94c623c331a48a5ccc7d25271399aff29729fa202c737ae3b4b28b89d2b0976d"}, + {file = "regex-2022.1.18-cp310-cp310-win_amd64.whl", hash = "sha256:1a171eaac36a08964d023eeff740b18a415f79aeb212169080c170ec42dd5184"}, + {file = "regex-2022.1.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:49810f907dfe6de8da5da7d2b238d343e6add62f01a15d03e2195afc180059ed"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d2f5c3f7057530afd7b739ed42eb04f1011203bc5e4663e1e1d01bb50f813e3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85ffd6b1cb0dfb037ede50ff3bef80d9bf7fa60515d192403af6745524524f3b"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba37f11e1d020969e8a779c06b4af866ffb6b854d7229db63c5fdddfceaa917f"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e27ea1ebe4a561db75a880ac659ff439dec7f55588212e71700bb1ddd5af9"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37978254d9d00cda01acc1997513f786b6b971e57b778fbe7c20e30ae81a97f3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54a1eb9fd38f2779e973d2f8958fd575b532fe26013405d1afb9ee2374e7ab8"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:768632fd8172ae03852e3245f11c8a425d95f65ff444ce46b3e673ae5b057b74"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:de2923886b5d3214be951bc2ce3f6b8ac0d6dfd4a0d0e2a4d2e5523d8046fdfb"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1333b3ce73269f986b1fa4d5d395643810074dc2de5b9d262eb258daf37dc98f"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:d19a34f8a3429bd536996ad53597b805c10352a8561d8382e05830df389d2b43"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d2f355a951f60f0843f2368b39970e4667517e54e86b1508e76f92b44811a8a"}, + {file = "regex-2022.1.18-cp36-cp36m-win32.whl", hash = "sha256:2245441445099411b528379dee83e56eadf449db924648e5feb9b747473f42e3"}, + {file = "regex-2022.1.18-cp36-cp36m-win_amd64.whl", hash = "sha256:25716aa70a0d153cd844fe861d4f3315a6ccafce22b39d8aadbf7fcadff2b633"}, + {file = "regex-2022.1.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7e070d3aef50ac3856f2ef5ec7214798453da878bb5e5a16c16a61edf1817cc3"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22709d701e7037e64dae2a04855021b62efd64a66c3ceed99dfd684bfef09e38"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9099bf89078675c372339011ccfc9ec310310bf6c292b413c013eb90ffdcafc"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04611cc0f627fc4a50bc4a9a2e6178a974c6a6a4aa9c1cca921635d2c47b9c87"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:552a39987ac6655dad4bf6f17dd2b55c7b0c6e949d933b8846d2e312ee80005a"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e031899cb2bc92c0cf4d45389eff5b078d1936860a1be3aa8c94fa25fb46ed8"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2dacb3dae6b8cc579637a7b72f008bff50a94cde5e36e432352f4ca57b9e54c4"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e5c31d70a478b0ca22a9d2d76d520ae996214019d39ed7dd93af872c7f301e52"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb804c7d0bfbd7e3f33924ff49757de9106c44e27979e2492819c16972ec0da2"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:36b2d700a27e168fa96272b42d28c7ac3ff72030c67b32f37c05616ebd22a202"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:16f81025bb3556eccb0681d7946e2b35ff254f9f888cff7d2120e8826330315c"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:da80047524eac2acf7c04c18ac7a7da05a9136241f642dd2ed94269ef0d0a45a"}, + {file = "regex-2022.1.18-cp37-cp37m-win32.whl", hash = "sha256:6ca45359d7a21644793de0e29de497ef7f1ae7268e346c4faf87b421fea364e6"}, + {file = "regex-2022.1.18-cp37-cp37m-win_amd64.whl", hash = "sha256:38289f1690a7e27aacd049e420769b996826f3728756859420eeee21cc857118"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6014038f52b4b2ac1fa41a58d439a8a00f015b5c0735a0cd4b09afe344c94899"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b5d6f9aed3153487252d00a18e53f19b7f52a1651bc1d0c4b5844bc286dfa52"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d24b03daf7415f78abc2d25a208f234e2c585e5e6f92f0204d2ab7b9ab48e3"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf594cc7cc9d528338d66674c10a5b25e3cde7dd75c3e96784df8f371d77a298"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd914db437ec25bfa410f8aa0aa2f3ba87cdfc04d9919d608d02330947afaeab"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90b6840b6448203228a9d8464a7a0d99aa8fa9f027ef95fe230579abaf8a6ee1"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11772be1eb1748e0e197a40ffb82fb8fd0d6914cd147d841d9703e2bef24d288"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a602bdc8607c99eb5b391592d58c92618dcd1537fdd87df1813f03fed49957a6"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7e26eac9e52e8ce86f915fd33380f1b6896a2b51994e40bb094841e5003429b4"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:519c0b3a6fbb68afaa0febf0d28f6c4b0a1074aefc484802ecb9709faf181607"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3c7ea86b9ca83e30fa4d4cd0eaf01db3ebcc7b2726a25990966627e39577d729"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:51f02ca184518702975b56affde6c573ebad4e411599005ce4468b1014b4786c"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:385ccf6d011b97768a640e9d4de25412204fbe8d6b9ae39ff115d4ff03f6fe5d"}, + {file = "regex-2022.1.18-cp38-cp38-win32.whl", hash = "sha256:1f8c0ae0a0de4e19fddaaff036f508db175f6f03db318c80bbc239a1def62d02"}, + {file = "regex-2022.1.18-cp38-cp38-win_amd64.whl", hash = "sha256:760c54ad1b8a9b81951030a7e8e7c3ec0964c1cb9fee585a03ff53d9e531bb8e"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:93c20777a72cae8620203ac11c4010365706062aa13aaedd1a21bb07adbb9d5d"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6aa427c55a0abec450bca10b64446331b5ca8f79b648531138f357569705bc4a"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38baee6bdb7fe1b110b6b3aaa555e6e872d322206b7245aa39572d3fc991ee4"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:752e7ddfb743344d447367baa85bccd3629c2c3940f70506eb5f01abce98ee68"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8acef4d8a4353f6678fd1035422a937c2170de58a2b29f7da045d5249e934101"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c73d2166e4b210b73d1429c4f1ca97cea9cc090e5302df2a7a0a96ce55373f1c"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24c89346734a4e4d60ecf9b27cac4c1fee3431a413f7aa00be7c4d7bbacc2c4d"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:596f5ae2eeddb79b595583c2e0285312b2783b0ec759930c272dbf02f851ff75"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ecfe51abf7f045e0b9cdde71ca9e153d11238679ef7b5da6c82093874adf3338"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1d6301f5288e9bdca65fab3de6b7de17362c5016d6bf8ee4ba4cbe833b2eda0f"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:93cce7d422a0093cfb3606beae38a8e47a25232eea0f292c878af580a9dc7605"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cf0db26a1f76aa6b3aa314a74b8facd586b7a5457d05b64f8082a62c9c49582a"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:defa0652696ff0ba48c8aff5a1fac1eef1ca6ac9c660b047fc8e7623c4eb5093"}, + {file = "regex-2022.1.18-cp39-cp39-win32.whl", hash = "sha256:6db1b52c6f2c04fafc8da17ea506608e6be7086715dab498570c3e55e4f8fbd1"}, + {file = "regex-2022.1.18-cp39-cp39-win_amd64.whl", hash = "sha256:ebaeb93f90c0903233b11ce913a7cb8f6ee069158406e056f884854c737d2442"}, + {file = "regex-2022.1.18.tar.gz", hash = "sha256:97f32dc03a8054a4c4a5ab5d761ed4861e828b2c200febd4e46857069a483916"}, ] requests = [ - {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, - {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"}, + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] rope = [ {file = "rope-0.16.0-py2-none-any.whl", hash = "sha256:ae1fa2fd56f64f4cc9be46493ce54bed0dd12dee03980c61a4393d89d84029ad"}, @@ -1119,8 +1150,8 @@ tzlocal = [ {file = "tzlocal-4.1.tar.gz", hash = "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09"}, ] urllib3 = [ - {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, - {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"}, + {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, + {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, ] virtualenv = [ {file = "virtualenv-20.13.0-py2.py3-none-any.whl", hash = "sha256:339f16c4a86b44240ba7223d0f93a7887c3ca04b5f9c8129da7958447d079b09"}, @@ -1131,6 +1162,6 @@ werkzeug = [ {file = "Werkzeug-2.0.2.tar.gz", hash = "sha256:aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a"}, ] zipp = [ - {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"}, - {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"}, + {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, + {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, ] From ccf0b2b688bbfab8e050ae8bd576bc1e5e348cb0 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 23 Jan 2022 17:11:46 +0100 Subject: [PATCH 003/182] downgrade because latest minor releases are not yet available --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index bdf03a8..ff50a69 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -6,7 +6,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8.12, 3.9.10] + python-version: [3.8.10, 3.9.9] poetry-version: [1.1.12] os: [ubuntu-18.04, macos-latest, windows-latest] runs-on: ${{ matrix.os }} From 865472af51a6760cf97ffb71fc6d289985dbc1df Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 23 Jan 2022 18:22:23 +0100 Subject: [PATCH 004/182] prepare migration script to add ulid column --- dbmigration/migrate_from_2.1_to_3.0.py | 38 ++++++++++++++++++++++++++ poetry.lock | 14 +++++++++- pyproject.toml | 1 + 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 dbmigration/migrate_from_2.1_to_3.0.py diff --git a/dbmigration/migrate_from_2.1_to_3.0.py b/dbmigration/migrate_from_2.1_to_3.0.py new file mode 100644 index 0000000..e421d6e --- /dev/null +++ b/dbmigration/migrate_from_2.1_to_3.0.py @@ -0,0 +1,38 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +import sqlite3 +import datetime +from ulid import ULID + +# add column ulid +connection = sqlite3.connect("db.sqlite") +cursor = connection.cursor() +script = """ +PRAGMA foreign_keys = OFF; +BEGIN TRANSACTION; +ALTER TABLE comment ADD ulid INTEGER; +COMMIT; +PRAGMA foreign_keys = ON; +""" +cursor.executescript(script) +connection.close() + +# fill in ulid column +connection = sqlite3.connect("db.sqlite") +cursor = connection.cursor() +updates = [] +for row in cursor.execute('SELECT * FROM comment'): + row_id = row[0] + string_created = row[2] + date_created = datetime.datetime.strptime(string_created, "%Y-%m-%d %H:%M:%S") + ulid = ULID.from_datetime(date_created) + update = "UPDATE comment SET ulid = " + str(int(ulid)) + " WHERE id = " + str(row_id) + print(update) + updates.append(update) + +for update in updates: + pass + connection.execute(update) +connection.commit() +connection.close() diff --git a/poetry.lock b/poetry.lock index c305e46..70cb658 100644 --- a/poetry.lock +++ b/poetry.lock @@ -495,6 +495,14 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" [package.dependencies] six = ">=1.5" +[[package]] +name = "python-ulid" +version = "1.0.3" +description = "Universally Unique Lexicographically Sortable Identifier" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pytz" version = "2021.3" @@ -688,7 +696,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "79d96a01febb3d55127734be5b86aefdaab09d1f400efd8cbbcd55faf00030cb" +content-hash = "24b77862cfbece0c68447f4d026bed51431e3a655a92dde2697368e758bfac89" [metadata.files] appdirs = [ @@ -1000,6 +1008,10 @@ python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] +python-ulid = [ + {file = "python-ulid-1.0.3.tar.gz", hash = "sha256:5dd8b969312a40e2212cec9c1ad63f25d4b6eafd92ee3195883e0287b6e9d19e"}, + {file = "python_ulid-1.0.3-py3-none-any.whl", hash = "sha256:8704dc20f547f531fe3a41d4369842d737a0f275403b909d0872e7ea0fe8d6f2"}, +] pytz = [ {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, diff --git a/pyproject.toml b/pyproject.toml index 64d6f78..718ebee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,6 +18,7 @@ requests = "^2.25.1" coverage = "^5.5" peewee = "^3.14.8" tox = "^3.24.5" +python-ulid = "^1.0.3" [tool.poetry.dev-dependencies] rope = "^0.16.0" From 9352ca665d7c7c7aceb6cd8e87e6fdfcb3353f59 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 25 Jan 2022 07:12:59 +0100 Subject: [PATCH 005/182] init script to create an empty db --- dbmigration/create_empty_db.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 dbmigration/create_empty_db.py diff --git a/dbmigration/create_empty_db.py b/dbmigration/create_empty_db.py new file mode 100644 index 0000000..8bb64ac --- /dev/null +++ b/dbmigration/create_empty_db.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +import sqlite3 + +connection = sqlite3.connect("db.sqlite") +cursor = connection.cursor() + +# What script performs: +# - first, remove site table: crash here if table doesn't exist (compatibility test without effort) +# - remove site_id colum from comment table +script = """ +CREATE TABLE comment ( + id INTEGER NOT NULL PRIMARY KEY, + url VARCHAR(255) NOT NULL, + notified DATETIME, + created DATETIME NOT NULL, + published DATETIME, + author_name VARCHAR(255) NOT NULL, + author_site VARCHAR(255) NOT NULL, + author_gravatar varchar(255), + content TEXT NOT NULL +, ulid INTEGER); +""" + +cursor.executescript(script) +connection.close() \ No newline at end of file From 52b962b0c608d37da54a3a80850fbbb241dab8ad Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 25 Jan 2022 07:52:56 +0100 Subject: [PATCH 006/182] draft web admin page --- run.py | 3 +- stacosys/core/templater.py | 1 + stacosys/interface/webadmin.py | 28 +++++++++++++ .../templates/fr/web_comment_approval.tpl | 41 +++++++++++++++++++ 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 stacosys/interface/webadmin.py create mode 100644 stacosys/templates/fr/web_comment_approval.tpl diff --git a/run.py b/run.py index 735dfdf..520e9ac 100644 --- a/run.py +++ b/run.py @@ -14,6 +14,7 @@ from stacosys.core.mailer import Mailer from stacosys.interface import app from stacosys.interface import api from stacosys.interface import form +from stacosys.interface import webadmin from stacosys.interface import scheduler @@ -106,7 +107,7 @@ def stacosys_server(config_pathname): # inject config parameters into flask app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) - logger.info(f"start interfaces {api} {form}") + logger.info(f"start interfaces {api} {form} {webadmin}") # start Flask app.run( diff --git a/stacosys/core/templater.py b/stacosys/core/templater.py index d3d4564..9b00964 100644 --- a/stacosys/core/templater.py +++ b/stacosys/core/templater.py @@ -11,6 +11,7 @@ class Template(Enum): NEW_COMMENT = "new_comment" NOTIFY_MESSAGE = "notify_message" RSS_TITLE_MESSAGE = "rss_title_message" + WEB_COMMENT_APPROVAL = "web_comment_approval" class Templater: diff --git a/stacosys/interface/webadmin.py b/stacosys/interface/webadmin.py new file mode 100644 index 0000000..5f0ca50 --- /dev/null +++ b/stacosys/interface/webadmin.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import logging +import os +from stacosys.core.templater import Templater, Template + +from flask import jsonify, request +from flask import render_template + +from stacosys.db import dao +from stacosys.interface import app + +logger = logging.getLogger(__name__) + + +current_path = os.path.dirname(__file__) +template_path = os.path.abspath(os.path.join(current_path, "../templates")) +templater = Templater(template_path) + +@app.route("/web/comment", methods=["GET"]) +def web_comment_approval(): + lang = "fr" + return templater.get_template(lang, Template.WEB_COMMENT_APPROVAL).render( + name="Yax") + + + diff --git a/stacosys/templates/fr/web_comment_approval.tpl b/stacosys/templates/fr/web_comment_approval.tpl new file mode 100644 index 0000000..9f16c78 --- /dev/null +++ b/stacosys/templates/fr/web_comment_approval.tpl @@ -0,0 +1,41 @@ + + + + + +Stacosys + + + +
+

Modération des commentaires

+ +
+
+ + + + + + + + + + + + + + + + + +
AuteurCommentaireArticleActions
GégéMerci pour ce commentaire ! Malheureusement je n'ai pas utilisé Isso suffisamment longtemps pour être en capacité de vous aider avec MathJax. Suite à cet [évènement](https://blogduyax.madyanne.fr/2019/je-vous-lavais-bien-dit/) je suis revenu à [mon ancestral système de commentaires](https://blogduyax.madyanne.fr/2020/bilan-hebergement-2020/)./2019/refonte-complete-du-blog/ + + +
+
+ + + \ No newline at end of file From 9b2c14e3a0476bf2cb1125d706e868cb978036a0 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 30 Jan 2022 18:56:52 +0100 Subject: [PATCH 007/182] draft web admin: no action, no security --- run.py | 18 +++---- stacosys/db/dao.py | 4 ++ stacosys/interface/__init__.py | 3 ++ stacosys/interface/templates/admin_fr.html | 61 ++++++++++++++++++++++ stacosys/interface/web/admin.py | 24 +++++++++ stacosys/interface/webadmin.py | 28 ---------- 6 files changed, 101 insertions(+), 37 deletions(-) create mode 100644 stacosys/interface/templates/admin_fr.html create mode 100644 stacosys/interface/web/admin.py delete mode 100644 stacosys/interface/webadmin.py diff --git a/run.py b/run.py index 520e9ac..3608da2 100644 --- a/run.py +++ b/run.py @@ -1,21 +1,21 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- -import sys -import os import argparse -import logging import hashlib +import logging +import os +import sys from stacosys.conf.config import Config, ConfigParameter -from stacosys.db import database -from stacosys.core.rss import Rss from stacosys.core.mailer import Mailer -from stacosys.interface import app +from stacosys.core.rss import Rss +from stacosys.db import database from stacosys.interface import api +from stacosys.interface import app from stacosys.interface import form -from stacosys.interface import webadmin from stacosys.interface import scheduler +from stacosys.interface.web import admin # configure logging @@ -33,7 +33,6 @@ def configure_logging(level): def stacosys_server(config_pathname): - # configure logging logger = logging.getLogger(__name__) configure_logging(logging.INFO) @@ -107,7 +106,8 @@ def stacosys_server(config_pathname): # inject config parameters into flask app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) - logger.info(f"start interfaces {api} {form} {webadmin}") + app.config.update(SITE_URL=conf.get(ConfigParameter.SITE_URL)) + logger.info(f"start interfaces {api} {form} {admin}") # start Flask app.run( diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index 0a14761..e24fec2 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -29,6 +29,10 @@ def find_not_notified_comments(): return Comment.select().where(Comment.notified.is_null()) +def find_not_published_comments(): + return Comment.select().where(Comment.published.is_null()) + + def find_published_comments_by_url(url): return Comment.select(Comment).where((Comment.url == url) & (Comment.published.is_null(False))).order_by( +Comment.published) diff --git a/stacosys/interface/__init__.py b/stacosys/interface/__init__.py index 1fab892..ee1c258 100644 --- a/stacosys/interface/__init__.py +++ b/stacosys/interface/__init__.py @@ -4,3 +4,6 @@ from flask import Flask app = Flask(__name__) + +# Set the secret key to some random bytes. Keep this really secret! +app.secret_key = b'_5#y2L"F4Q8z\n\xec]/' \ No newline at end of file diff --git a/stacosys/interface/templates/admin_fr.html b/stacosys/interface/templates/admin_fr.html new file mode 100644 index 0000000..ee77e35 --- /dev/null +++ b/stacosys/interface/templates/admin_fr.html @@ -0,0 +1,61 @@ + + + + + +Stacosys + + + +
+

Modération des commentaires

+
+
+ {% with messages = get_flashed_messages() %} + {% if messages %} +
+ {% for message in messages %} +

{{ message }}

+ {% endfor %} +
+ {% endif %} + {% endwith %} + + + + + + + + + + + + {% for comment in comments %} + + + + + + + + {% endfor %} + +
DateAuteurCommentaireArticleActions
{{ comment.created }}{{ comment.author_name }}{{ comment.content }}{{ comment.url }} +
+ + + +
+
+ + + +
+
+
+ + + \ No newline at end of file diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py new file mode 100644 index 0000000..29f97f2 --- /dev/null +++ b/stacosys/interface/web/admin.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import logging + +from flask import request, redirect, flash, render_template + +from stacosys.db import dao +from stacosys.interface import app + +logger = logging.getLogger(__name__) + + +@app.route("/web", methods=["GET"]) +def admin_homepage(): + lang = "fr" + comments = dao.find_not_published_comments() + return render_template("admin_" + lang + ".html", comments=comments, baseurl=app.config.get("SITE_URL")) + + +@app.route("/web", methods=["POST"]) +def admin_action(): + flash(request.form.get("comment") + " " + request.form.get("action")) + return redirect('/web') diff --git a/stacosys/interface/webadmin.py b/stacosys/interface/webadmin.py deleted file mode 100644 index 5f0ca50..0000000 --- a/stacosys/interface/webadmin.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import logging -import os -from stacosys.core.templater import Templater, Template - -from flask import jsonify, request -from flask import render_template - -from stacosys.db import dao -from stacosys.interface import app - -logger = logging.getLogger(__name__) - - -current_path = os.path.dirname(__file__) -template_path = os.path.abspath(os.path.join(current_path, "../templates")) -templater = Templater(template_path) - -@app.route("/web/comment", methods=["GET"]) -def web_comment_approval(): - lang = "fr" - return templater.get_template(lang, Template.WEB_COMMENT_APPROVAL).render( - name="Yax") - - - From 91b4dc9e2a5c1c4bb5063d1836634e94cdc435e3 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 30 Jan 2022 18:57:39 +0100 Subject: [PATCH 008/182] prefix api endpoints --- stacosys/interface/api.py | 6 +++--- tests/test_api.py | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/stacosys/interface/api.py b/stacosys/interface/api.py index cab2905..042f0fc 100644 --- a/stacosys/interface/api.py +++ b/stacosys/interface/api.py @@ -11,12 +11,12 @@ from stacosys.interface import app logger = logging.getLogger(__name__) -@app.route("/ping", methods=["GET"]) +@app.route("/api/ping", methods=["GET"]) def ping(): return "OK" -@app.route("/comments", methods=["GET"]) +@app.route("/api/comments", methods=["GET"]) def query_comments(): comments = [] url = request.args.get("url", "") @@ -36,7 +36,7 @@ def query_comments(): return jsonify({"data": comments}) -@app.route("/comments/count", methods=["GET"]) +@app.route("/api/comments/count", methods=["GET"]) def get_comments_count(): url = request.args.get("url", "") return jsonify({"count": dao.count_published_comments(url)}) diff --git a/tests/test_api.py b/tests/test_api.py index 9428f45..b162153 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -31,27 +31,27 @@ def client(): def test_api_ping(client): - resp = client.get('/ping') + resp = client.get('/api/ping') assert resp.data == b"OK" def test_api_count_global(client): - resp = client.get('/comments/count') + resp = client.get('/api/comments/count') d = json.loads(resp.data) assert d and d['count'] == 2 def test_api_count_url(client): - resp = client.get('/comments/count?url=/site1') + resp = client.get('/api/comments/count?url=/site1') d = json.loads(resp.data) assert d and d['count'] == 1 - resp = client.get('/comments/count?url=/site2') + resp = client.get('/api/comments/count?url=/site2') d = json.loads(resp.data) assert d and d['count'] == 0 def test_api_comment(client): - resp = client.get('/comments?url=/site1') + resp = client.get('/api/comments?url=/site1') d = json.loads(resp.data) assert d and len(d['data']) == 1 comment = d['data'][0] @@ -60,6 +60,6 @@ def test_api_comment(client): def test_api_comment_not_found(client): - resp = client.get('/comments?url=/site2') + resp = client.get('/api/comments?url=/site2') d = json.loads(resp.data) assert d and d['data'] == [] From 392c6bc748afd461aa5aa023959bd22ca34b977e Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 30 Jan 2022 19:07:22 +0100 Subject: [PATCH 009/182] localize web template --- run.py | 1 + stacosys/interface/web/admin.py | 4 +- .../templates/fr/web_comment_approval.tpl | 41 ------------------- 3 files changed, 3 insertions(+), 43 deletions(-) delete mode 100644 stacosys/templates/fr/web_comment_approval.tpl diff --git a/run.py b/run.py index 3608da2..b1b3fa9 100644 --- a/run.py +++ b/run.py @@ -107,6 +107,7 @@ def stacosys_server(config_pathname): # inject config parameters into flask app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) app.config.update(SITE_URL=conf.get(ConfigParameter.SITE_URL)) + app.config.update(LANG=conf.get(ConfigParameter.LANG)) logger.info(f"start interfaces {api} {form} {admin}") # start Flask diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index 29f97f2..df77ba9 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -13,9 +13,9 @@ logger = logging.getLogger(__name__) @app.route("/web", methods=["GET"]) def admin_homepage(): - lang = "fr" comments = dao.find_not_published_comments() - return render_template("admin_" + lang + ".html", comments=comments, baseurl=app.config.get("SITE_URL")) + return render_template("admin_" + app.config.get("LANG") + ".html", comments=comments, + baseurl=app.config.get("SITE_URL")) @app.route("/web", methods=["POST"]) diff --git a/stacosys/templates/fr/web_comment_approval.tpl b/stacosys/templates/fr/web_comment_approval.tpl deleted file mode 100644 index 9f16c78..0000000 --- a/stacosys/templates/fr/web_comment_approval.tpl +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -Stacosys - - - -
-

Modération des commentaires

- -
-
- - - - - - - - - - - - - - - - - -
AuteurCommentaireArticleActions
GégéMerci pour ce commentaire ! Malheureusement je n'ai pas utilisé Isso suffisamment longtemps pour être en capacité de vous aider avec MathJax. Suite à cet [évènement](https://blogduyax.madyanne.fr/2019/je-vous-lavais-bien-dit/) je suis revenu à [mon ancestral système de commentaires](https://blogduyax.madyanne.fr/2020/bilan-hebergement-2020/)./2019/refonte-complete-du-blog/ - - -
-
- - - \ No newline at end of file From 67262ec7855950fb04f770e0e84721a2b1155966 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 30 Jan 2022 20:11:34 +0100 Subject: [PATCH 010/182] add simple login page --- stacosys/interface/templates/admin_fr.html | 13 ++++--- stacosys/interface/templates/login_fr.html | 42 ++++++++++++++++++++++ stacosys/interface/web/admin.py | 35 +++++++++++++++--- 3 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 stacosys/interface/templates/login_fr.html diff --git a/stacosys/interface/templates/admin_fr.html b/stacosys/interface/templates/admin_fr.html index ee77e35..bfe3221 100644 --- a/stacosys/interface/templates/admin_fr.html +++ b/stacosys/interface/templates/admin_fr.html @@ -8,10 +8,13 @@
-

Modération des commentaires

+

Modération des commentaires

+
- {% with messages = get_flashed_messages() %} + {% with messages = get_flashed_messages() %} {% if messages %}
{% for message in messages %} @@ -19,7 +22,7 @@ {% endfor %}
{% endif %} - {% endwith %} + {% endwith %} @@ -38,12 +41,12 @@
{{ comment.content }} {{ comment.url }} -
+
-
+ diff --git a/stacosys/interface/templates/login_fr.html b/stacosys/interface/templates/login_fr.html new file mode 100644 index 0000000..e43d951 --- /dev/null +++ b/stacosys/interface/templates/login_fr.html @@ -0,0 +1,42 @@ + + + + + +Stacosys + + + + +
+

Modération des commentaires

+
+
+ {% with messages = get_flashed_messages() %} + {% if messages %} +
+ {% for message in messages %} +

{{ message }}

+ {% endfor %} +
+ {% endif %} + {% endwith %} + +

+

+

+

+ + +
+
+

Cette page a été conçue par Yax avec Simple.css.

+
+ + diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index df77ba9..32104e5 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -3,22 +3,49 @@ import logging -from flask import request, redirect, flash, render_template +from flask import request, redirect, flash, render_template, session from stacosys.db import dao from stacosys.interface import app logger = logging.getLogger(__name__) +user = {"username": "admin", "password": "toto"} -@app.route("/web", methods=["GET"]) + +@app.route('/web/login', methods=['POST', 'GET']) +def login(): + if request.method == 'POST': + username = request.form.get('username') + password = request.form.get('password') + if username == user['username'] and password == user['password']: + session['user'] = username + return redirect('/web/admin') + + flash("Identifiant ou mot de passe incorrect") + return redirect('/web/login') + + return render_template("login_" + app.config.get("LANG") + ".html") + + +@app.route('/web/logout', methods=["GET"]) +def logout(): + session.pop('user') + return redirect('/web/login') + + +@app.route("/web/admin", methods=["GET"]) def admin_homepage(): + if not ('user' in session and session['user'] == user['username']): + flash("Vous avez été déconnecté.") + return redirect('/web/login') + comments = dao.find_not_published_comments() return render_template("admin_" + app.config.get("LANG") + ".html", comments=comments, baseurl=app.config.get("SITE_URL")) -@app.route("/web", methods=["POST"]) +@app.route("/web/admin", methods=["POST"]) def admin_action(): flash(request.form.get("comment") + " " + request.form.get("action")) - return redirect('/web') + return redirect('/web/admin') From 2e74425108da1c8913f2400eeebcc6301026a8c1 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 31 Jan 2022 12:56:18 +0100 Subject: [PATCH 011/182] add config for web login --- config.ini | 5 +++++ run.py | 2 ++ stacosys/conf/config.py | 3 +++ stacosys/interface/web/admin.py | 10 +++++++--- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/config.ini b/config.ini index 80f7e56..fda705f 100755 --- a/config.ini +++ b/config.ini @@ -34,3 +34,8 @@ ssl = false port = 587 login = blog@mydomain.com password = MYPASSWORD + +[web] +username = admin +; SHA-256 hashed password (https://coding.tools/sha256) +password = 8C6976E5B5410415BDE908BD4DEE15DFB167A9C873FC4BB8A81F6F2AB448A918 diff --git a/run.py b/run.py index b1b3fa9..03cb94b 100644 --- a/run.py +++ b/run.py @@ -108,6 +108,8 @@ def stacosys_server(config_pathname): app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) app.config.update(SITE_URL=conf.get(ConfigParameter.SITE_URL)) app.config.update(LANG=conf.get(ConfigParameter.LANG)) + app.config.update(WEB_USERNAME=conf.get(ConfigParameter.WEB_USERNAME)) + app.config.update(WEB_PASSWORD=conf.get(ConfigParameter.WEB_PASSWORD)) logger.info(f"start interfaces {api} {form} {admin}") # start Flask diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index 9793aca..cb68c0b 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -37,6 +37,9 @@ class ConfigParameter(Enum): SITE_ADMIN_EMAIL = "site.admin_email" SITE_REDIRECT = "site.redirect" + WEB_USERNAME = "web.username" + WEB_PASSWORD = "web.password" + class Config: def __init__(self): diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index 32104e5..c4d7a3c 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import hashlib import logging from flask import request, redirect, flash, render_template, session @@ -10,7 +11,10 @@ from stacosys.interface import app logger = logging.getLogger(__name__) -user = {"username": "admin", "password": "toto"} + +def is_login_ok(username, password): + hashed = hashlib.sha256(password.encode()).hexdigest().upper() + return app.config.get("WEB_USERNAME") == username and app.config.get("WEB_PASSWORD") == hashed @app.route('/web/login', methods=['POST', 'GET']) @@ -18,7 +22,7 @@ def login(): if request.method == 'POST': username = request.form.get('username') password = request.form.get('password') - if username == user['username'] and password == user['password']: + if is_login_ok(username, password): session['user'] = username return redirect('/web/admin') @@ -36,7 +40,7 @@ def logout(): @app.route("/web/admin", methods=["GET"]) def admin_homepage(): - if not ('user' in session and session['user'] == user['username']): + if not ('user' in session and session['user'] == app.config.get("WEB_USERNAME")): flash("Vous avez été déconnecté.") return redirect('/web/login') From 1ae37ff18eef3608f722ec70339e191ad976a198 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Feb 2022 21:23:30 +0100 Subject: [PATCH 012/182] route admin --- run.py | 4 ++-- stacosys/interface/web/admin.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/run.py b/run.py index 03cb94b..df5517d 100644 --- a/run.py +++ b/run.py @@ -105,9 +105,9 @@ def stacosys_server(config_pathname): ) # inject config parameters into flask - app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) - app.config.update(SITE_URL=conf.get(ConfigParameter.SITE_URL)) app.config.update(LANG=conf.get(ConfigParameter.LANG)) + app.config.update(SITE_URL=conf.get(ConfigParameter.SITE_URL)) + app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) app.config.update(WEB_USERNAME=conf.get(ConfigParameter.WEB_USERNAME)) app.config.update(WEB_PASSWORD=conf.get(ConfigParameter.WEB_PASSWORD)) logger.info(f"start interfaces {api} {form} {admin}") diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index c4d7a3c..255787d 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -11,6 +11,14 @@ from stacosys.interface import app logger = logging.getLogger(__name__) +app.add_url_rule("/web", endpoint="index") +app.add_url_rule("/web/", endpoint="index") + + +@app.endpoint("index") +def index(): + return redirect('/web/admin') + def is_login_ok(username, password): hashed = hashlib.sha256(password.encode()).hexdigest().upper() @@ -35,7 +43,7 @@ def login(): @app.route('/web/logout', methods=["GET"]) def logout(): session.pop('user') - return redirect('/web/login') + return redirect('/web/admin') @app.route("/web/admin", methods=["GET"]) @@ -52,4 +60,6 @@ def admin_homepage(): @app.route("/web/admin", methods=["POST"]) def admin_action(): flash(request.form.get("comment") + " " + request.form.get("action")) + # rebuild RSS + #rss.generate() return redirect('/web/admin') From 7f2ff74ebe8997de0d3042cf3e0b0bac82210f17 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 13 Feb 2022 19:01:51 +0100 Subject: [PATCH 013/182] remove IMAP part --- run.py | 9 -- stacosys/conf/config.py | 7 - stacosys/core/cron.py | 88 +---------- stacosys/core/imap.py | 161 -------------------- stacosys/core/mailer.py | 39 ----- stacosys/core/rss.py | 35 ++--- stacosys/core/templater.py | 23 --- stacosys/interface/scheduler.py | 23 +-- stacosys/templates/en/approve_comment.tpl | 9 -- stacosys/templates/en/drop_comment.tpl | 9 -- stacosys/templates/en/new_comment.tpl | 16 -- stacosys/templates/en/notify_message.tpl | 1 - stacosys/templates/en/rss_title_message.tpl | 1 - stacosys/templates/fr/approve_comment.tpl | 9 -- stacosys/templates/fr/drop_comment.tpl | 9 -- stacosys/templates/fr/new_comment.tpl | 16 -- stacosys/templates/fr/notify_message.tpl | 1 - stacosys/templates/fr/rss_title_message.tpl | 1 - tests/test_config.py | 17 +-- tests/test_imap.py | 33 ---- tests/test_templater.py | 52 ------- 21 files changed, 24 insertions(+), 535 deletions(-) delete mode 100755 stacosys/core/imap.py delete mode 100644 stacosys/core/templater.py delete mode 100644 stacosys/templates/en/approve_comment.tpl delete mode 100644 stacosys/templates/en/drop_comment.tpl delete mode 100644 stacosys/templates/en/new_comment.tpl delete mode 100644 stacosys/templates/en/notify_message.tpl delete mode 100644 stacosys/templates/en/rss_title_message.tpl delete mode 100644 stacosys/templates/fr/approve_comment.tpl delete mode 100644 stacosys/templates/fr/drop_comment.tpl delete mode 100644 stacosys/templates/fr/new_comment.tpl delete mode 100644 stacosys/templates/fr/notify_message.tpl delete mode 100644 stacosys/templates/fr/rss_title_message.tpl delete mode 100644 tests/test_imap.py delete mode 100644 tests/test_templater.py diff --git a/run.py b/run.py index df5517d..4f8095f 100644 --- a/run.py +++ b/run.py @@ -72,11 +72,6 @@ def stacosys_server(config_pathname): # configure mailer mailer = Mailer( - conf.get(ConfigParameter.IMAP_HOST), - conf.get_int(ConfigParameter.IMAP_PORT), - conf.get_bool(ConfigParameter.IMAP_SSL), - conf.get(ConfigParameter.IMAP_LOGIN), - conf.get(ConfigParameter.IMAP_PASSWORD), conf.get(ConfigParameter.SMTP_HOST), conf.get_int(ConfigParameter.SMTP_PORT), conf.get_bool(ConfigParameter.SMTP_STARTTLS), @@ -94,14 +89,10 @@ def stacosys_server(config_pathname): # configure scheduler conf.put(ConfigParameter.SITE_TOKEN, hashlib.sha1(conf.get(ConfigParameter.SITE_NAME).encode('utf-8')).hexdigest()) scheduler.configure( - conf.get_int(ConfigParameter.IMAP_POLLING), conf.get_int(ConfigParameter.COMMENT_POLLING), - conf.get(ConfigParameter.LANG), conf.get(ConfigParameter.SITE_NAME), - conf.get(ConfigParameter.SITE_TOKEN), conf.get(ConfigParameter.SITE_ADMIN_EMAIL), mailer, - rss, ) # inject config parameters into flask diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index cb68c0b..bbfe15e 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -17,13 +17,6 @@ class ConfigParameter(Enum): RSS_PROTO = "rss.proto" RSS_FILE = "rss.file" - IMAP_POLLING = "imap.polling" - IMAP_SSL = "imap.ssl" - IMAP_HOST = "imap.host" - IMAP_PORT = "imap.port" - IMAP_LOGIN = "imap.login" - IMAP_PASSWORD = "imap.password" - SMTP_STARTTLS = "smtp.starttls" SMTP_SSL = "smtp.ssl" SMTP_HOST = "smtp.host" diff --git a/stacosys/core/cron.py b/stacosys/core/cron.py index beed2ad..4be8b35 100644 --- a/stacosys/core/cron.py +++ b/stacosys/core/cron.py @@ -2,92 +2,13 @@ # -*- coding: utf-8 -*- import logging -import os -import re -from stacosys.core.mailer import Mailer -from stacosys.core.rss import Rss -from stacosys.core.templater import Templater, Template from stacosys.db import dao -from stacosys.model.email import Email - -REGEX_EMAIL_SUBJECT = r".*STACOSYS.*\[(\d+)\:(\w+)\]" logger = logging.getLogger(__name__) -current_path = os.path.dirname(__file__) -template_path = os.path.abspath(os.path.join(current_path, "../templates")) -templater = Templater(template_path) - -def fetch_mail_answers(lang, mailer: Mailer, rss: Rss, site_token): - while True: - msgs = mailer.fetch() - if len(msgs) == 0: - break - msg = msgs[0] - _process_answer_msg(msg, lang, mailer, rss, site_token) - mailer.delete(msg.id) - - -def _process_answer_msg(msg, lang, mailer: Mailer, rss: Rss, site_token): - # filter stacosys e-mails - m = re.search(REGEX_EMAIL_SUBJECT, msg.subject, re.DOTALL) - if not m: - return - - comment_id = int(m.group(1)) - submitted_token = m.group(2) - - # validate token - if submitted_token != site_token: - logger.warning("ignore corrupted email. Unknown token %d" % comment_id) - return - - if not msg.plain_text_content: - logger.warning("ignore empty email") - return - - _reply_comment_email(lang, mailer, rss, msg, comment_id) - - -def _reply_comment_email(lang, mailer: Mailer, rss: Rss, email: Email, comment_id): - # retrieve comment - comment = dao.find_comment_by_id(comment_id) - if not comment: - logger.warning("unknown comment %d" % comment_id) - return - - if comment.published: - logger.warning("ignore already published email. token %d" % comment_id) - return - - # safe logic: no answer or unknown answer is a go for publishing - if email.plain_text_content[:2].upper() == "NO": - logger.info("discard comment: %d" % comment_id) - dao.delete_comment(comment) - new_email_body = templater.get_template(lang, Template.DROP_COMMENT).render( - original=email.plain_text_content - ) - if not mailer.send(email.from_addr, "Re: " + email.subject, new_email_body): - logger.warning("minor failure. cannot send rejection mail " + email.subject) - else: - # save publishing datetime - dao.publish_comment(comment) - logger.info("commit comment: %d" % comment_id) - - # rebuild RSS - rss.generate() - - # send approval confirmation email to admin - new_email_body = templater.get_template(lang, Template.APPROVE_COMMENT).render( - original=email.plain_text_content - ) - if not mailer.send(email.from_addr, "Re: " + email.subject, new_email_body): - logger.warning("minor failure. cannot send approval email " + email.subject) - - -def submit_new_comment(lang, site_name, site_token, site_admin_email, mailer): +def submit_new_comment(site_name, site_admin_email, mailer): for comment in dao.find_not_notified_comments(): comment_list = ( "author: %s" % comment.author_name, @@ -98,13 +19,10 @@ def submit_new_comment(lang, site_name, site_token, site_admin_email, mailer): "%s" % comment.content, "", ) - comment_text = "\n".join(comment_list) - email_body = templater.get_template(lang, Template.NEW_COMMENT).render( - url=comment.url, comment=comment_text - ) + email_body = "\n".join(comment_list) # send email to notify admin - subject = "STACOSYS %s: [%d:%s]" % (site_name, comment.id, site_token) + subject = "STACOSYS %s" % site_name if mailer.send(site_admin_email, subject, email_body): logger.debug("new comment processed ") diff --git a/stacosys/core/imap.py b/stacosys/core/imap.py deleted file mode 100755 index b53da1d..0000000 --- a/stacosys/core/imap.py +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import base64 -import datetime -import email -import imaplib -import logging -import re -from email.message import Message - -from stacosys.model.email import Attachment, Email, Part - -filename_re = re.compile('filename="(.+)"|filename=([^;\n\r"\']+)', re.I | re.S) - - -class Mailbox(object): - def __init__(self, host, port, ssl, login, password): - self.logger = logging.getLogger(__name__) - self.host = host - self.port = port - self.ssl = ssl - self.login = login - self.password = password - - def __enter__(self): - if self.ssl: - self.imap = imaplib.IMAP4_SSL(self.host, self.port) - else: - self.imap = imaplib.IMAP4(self.host, self.port) - self.imap.login(self.login, self.password) - return self - - def __exit__(self, _type, value, traceback): - self.imap.close() - self.imap.logout() - - def get_count(self): - self.imap.select("Inbox") - _, data = self.imap.search(None, "ALL") - return sum(1 for _ in data[0].split()) - - def fetch_raw_message(self, num): - self.imap.select("Inbox") - _, data = self.imap.fetch(str(num), "(RFC822)") - email_msg = email.message_from_bytes(data[0][1]) - return email_msg - - def fetch_message(self, num): - raw_msg = self.fetch_raw_message(num) - - parts = [] - attachments = [] - plain_text_content = "no plain-text part" - for part in raw_msg.walk(): - if part.is_multipart(): - continue - - if _is_part_attachment(part): - attachments.append(_get_attachment(part)) - else: - try: - content = _to_plain_text_content(part) - parts.append( - Part(content=content, content_type=part.get_content_type()) - ) - if part.get_content_type() == "text/plain": - plain_text_content = content - except Exception: - logging.exception("cannot extract content from mail part") - - return Email( - id=num, - encoding="UTF-8", - date=_parse_date(raw_msg["Date"]).strftime("%Y-%m-%d %H:%M:%S"), - from_addr=raw_msg["From"], - to_addr=raw_msg["To"], - subject=_email_non_ascii_to_uft8(raw_msg["Subject"]), - parts=parts, - attachments=attachments, - plain_text_content=plain_text_content, - ) - - def delete_message(self, num): - self.imap.select("Inbox") - self.imap.store(str(num), "+FLAGS", r"\Deleted") - self.imap.expunge() - - def delete_all(self): - self.imap.select("Inbox") - _, data = self.imap.search(None, "ALL") - for num in data[0].split(): - self.imap.store(num, "+FLAGS", r"\Deleted") - self.imap.expunge() - - def print_msgs(self): - self.imap.select("Inbox") - _, data = self.imap.search(None, "ALL") - for num in reversed(data[0].split()): - status, data = self.imap.fetch(num, "(RFC822)") - self.logger.debug("Message %s\n%s\n" % (num, data[0][1])) - - -def _parse_date(v): - if v is None: - return datetime.datetime.now() - tt = email.utils.parsedate_tz(v) - if tt is None: - return datetime.datetime.now() - timestamp = email.utils.mktime_tz(tt) - date = datetime.datetime.fromtimestamp(timestamp) - return date - - -def _to_utf8(string, charset): - return string.decode(charset).encode("UTF-8").decode("UTF-8") - - -def _email_non_ascii_to_uft8(string): - # RFC 1342 is a recommendation that provides a way to represent non ASCII - # characters inside e-mail in a way that won’t confuse e-mail servers - subject = "" - for v, charset in email.header.decode_header(string): - if charset is None or charset == 'unknown-8bit': - if type(v) is bytes: - v = v.decode() - subject = subject + v - else: - subject = subject + _to_utf8(v, charset) - return subject - - -def _to_plain_text_content(part: Message) -> str: - content = part.get_payload(decode=True) - charset = part.get_param("charset", None) - if charset: - content = _to_utf8(content, charset) - elif type(content) == bytes: - content = content.decode("utf8") - # RFC 3676: remove automatic word-wrapping - return content.replace(" \r\n", " ") - - -def _is_part_attachment(part): - return part.get("Content-Disposition", None) - - -def _get_attachment(part) -> Attachment: - content_disposition = part.get("Content-Disposition", None) - r = filename_re.findall(content_disposition) - if r: - filename = sorted(r[0])[1] - else: - filename = "undefined" - content = base64.b64encode(part.get_payload(decode=True)) - content = content.decode() - return Attachment( - filename=_email_non_ascii_to_uft8(filename), - content=content, - content_type=part.get_content_type(), - ) diff --git a/stacosys/core/mailer.py b/stacosys/core/mailer.py index c8a2ffd..5d8fa11 100644 --- a/stacosys/core/mailer.py +++ b/stacosys/core/mailer.py @@ -8,19 +8,12 @@ from email.mime.text import MIMEText from email.message import EmailMessage from logging.handlers import SMTPHandler -from stacosys.core import imap - logger = logging.getLogger(__name__) class Mailer: def __init__( self, - imap_host, - imap_port, - imap_ssl, - imap_login, - imap_password, smtp_host, smtp_port, smtp_starttls, @@ -29,11 +22,6 @@ class Mailer: smtp_password, site_admin_email, ): - self._imap_host = imap_host - self._imap_port = imap_port - self._imap_ssl = imap_ssl - self._imap_login = imap_login - self._imap_password = imap_password self._smtp_host = smtp_host self._smtp_port = smtp_port self._smtp_starttls = smtp_starttls @@ -42,26 +30,6 @@ class Mailer: self._smtp_password = smtp_password self._site_admin_email = site_admin_email - def _open_mailbox(self): - return imap.Mailbox( - self._imap_host, - self._imap_port, - self._imap_ssl, - self._imap_login, - self._imap_password, - ) - - def fetch(self): - msgs = [] - try: - with self._open_mailbox() as mbox: - count = mbox.get_count() - for num in range(count): - msgs.append(mbox.fetch_message(num + 1)) - except Exception: - logger.exception("fetch mail exception") - return msgs - def send(self, to_email, subject, message): # Create the container (outer) email message. @@ -87,13 +55,6 @@ class Mailer: success = False return success - def delete(self, id): - try: - with self._open_mailbox() as mbox: - mbox.delete_message(id) - except Exception: - logger.exception("delete mail exception") - def get_error_handler(self): if self._smtp_ssl: mail_handler = SSLSMTPHandler( diff --git a/stacosys/core/rss.py b/stacosys/core/rss.py index 79366af..c3e3e9a 100644 --- a/stacosys/core/rss.py +++ b/stacosys/core/rss.py @@ -1,52 +1,44 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- -import os from datetime import datetime -import markdown import PyRSS2Gen +import markdown -from stacosys.core.templater import Templater, Template from stacosys.model.comment import Comment class Rss: def __init__( - self, - lang, - rss_file, - rss_proto, - site_name, - site_url, + self, + lang, + rss_file, + rss_proto, + site_name, + site_url, ): self._lang = lang self._rss_file = rss_file self._rss_proto = rss_proto self._site_name = site_name self._site_url = site_url - current_path = os.path.dirname(__file__) - template_path = os.path.abspath(os.path.join(current_path, "../templates")) - self._templater = Templater(template_path) def generate(self): - rss_title = self._templater.get_template( - self._lang, Template.RSS_TITLE_MESSAGE - ).render(site=self._site_name) md = markdown.Markdown() items = [] for row in ( - Comment.select() - .where(Comment.published) - .order_by(-Comment.published) - .limit(10) + Comment.select() + .where(Comment.published) + .order_by(-Comment.published) + .limit(10) ): item_link = "%s://%s%s" % (self._rss_proto, self._site_url, row.url) items.append( PyRSS2Gen.RSSItem( title="%s - %s://%s%s" - % (self._rss_proto, row.author_name, self._site_url, row.url), + % (self._rss_proto, row.author_name, self._site_url, row.url), link=item_link, description=md.convert(row.content), guid=PyRSS2Gen.Guid("%s/%d" % (item_link, row.id)), @@ -54,10 +46,11 @@ class Rss: ) ) + rss_title = 'Commentaires du site "%s"' % self._site_name rss = PyRSS2Gen.RSS2( title=rss_title, link="%s://%s" % (self._rss_proto, self._site_url), - description='Commentaires du site "%s"' % self._site_name, + description=rss_title, lastBuildDate=datetime.now(), items=items, ) diff --git a/stacosys/core/templater.py b/stacosys/core/templater.py deleted file mode 100644 index 9b00964..0000000 --- a/stacosys/core/templater.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from enum import Enum -from jinja2 import Environment, FileSystemLoader - - -class Template(Enum): - DROP_COMMENT = "drop_comment" - APPROVE_COMMENT = "approve_comment" - NEW_COMMENT = "new_comment" - NOTIFY_MESSAGE = "notify_message" - RSS_TITLE_MESSAGE = "rss_title_message" - WEB_COMMENT_APPROVAL = "web_comment_approval" - - -class Templater: - def __init__(self, template_path): - self._env = Environment(loader=FileSystemLoader(template_path)) - - def get_template(self, lang, template: Template): - return self._env.get_template(lang + "/" + template.value + ".tpl") - diff --git a/stacosys/interface/scheduler.py b/stacosys/interface/scheduler.py index 33ea3ef..e6615e4 100644 --- a/stacosys/interface/scheduler.py +++ b/stacosys/interface/scheduler.py @@ -9,31 +9,20 @@ class JobConfig(object): JOBS: list = [] - SCHEDULER_EXECUTORS = {"default": {"type": "threadpool", "max_workers": 4}} + SCHEDULER_EXECUTORS = {"default": {"type": "threadpool", "max_workers": 1}} def __init__( self, - imap_polling_seconds, new_comment_polling_seconds, - lang, site_name, - site_token, site_admin_email, mailer, - rss, ): self.JOBS = [ - { - "id": "fetch_mail", - "func": "stacosys.core.cron:fetch_mail_answers", - "args": [lang, mailer, rss, site_token], - "trigger": "interval", - "seconds": imap_polling_seconds, - }, { "id": "submit_new_comment", "func": "stacosys.core.cron:submit_new_comment", - "args": [lang, site_name, site_token, site_admin_email, mailer], + "args": [site_name, site_admin_email, mailer], "trigger": "interval", "seconds": new_comment_polling_seconds, }, @@ -41,25 +30,17 @@ class JobConfig(object): def configure( - imap_polling, comment_polling, - lang, site_name, - site_token, site_admin_email, mailer, - rss, ): app.config.from_object( JobConfig( - imap_polling, comment_polling, - lang, site_name, - site_token, site_admin_email, mailer, - rss, ) ) scheduler = APScheduler() diff --git a/stacosys/templates/en/approve_comment.tpl b/stacosys/templates/en/approve_comment.tpl deleted file mode 100644 index 145ca2c..0000000 --- a/stacosys/templates/en/approve_comment.tpl +++ /dev/null @@ -1,9 +0,0 @@ -Hi, - -The comment should be published soon. It has been approved. - --- -Stacosys - - -{{ original }} diff --git a/stacosys/templates/en/drop_comment.tpl b/stacosys/templates/en/drop_comment.tpl deleted file mode 100644 index 6aaed72..0000000 --- a/stacosys/templates/en/drop_comment.tpl +++ /dev/null @@ -1,9 +0,0 @@ -Hi, - -The comment will not be published. It has been dropped. - --- -Stacosys - - -{{ original }} diff --git a/stacosys/templates/en/new_comment.tpl b/stacosys/templates/en/new_comment.tpl deleted file mode 100644 index 490f714..0000000 --- a/stacosys/templates/en/new_comment.tpl +++ /dev/null @@ -1,16 +0,0 @@ -Hi, - -A new comment has been submitted for post {{ url }} - -You have two choices: -- reject the comment by replying NO (or no), -- accept the comment by sending back the email as it is. - -If you choose the latter option, Stacosys is going to publish the commennt. - -Please find comment details below: - -{{ comment }} - --- -Stacosys diff --git a/stacosys/templates/en/notify_message.tpl b/stacosys/templates/en/notify_message.tpl deleted file mode 100644 index 94a261f..0000000 --- a/stacosys/templates/en/notify_message.tpl +++ /dev/null @@ -1 +0,0 @@ -New comment diff --git a/stacosys/templates/en/rss_title_message.tpl b/stacosys/templates/en/rss_title_message.tpl deleted file mode 100644 index b0b1e30..0000000 --- a/stacosys/templates/en/rss_title_message.tpl +++ /dev/null @@ -1 +0,0 @@ -{{ site }} : comments diff --git a/stacosys/templates/fr/approve_comment.tpl b/stacosys/templates/fr/approve_comment.tpl deleted file mode 100644 index 35668d4..0000000 --- a/stacosys/templates/fr/approve_comment.tpl +++ /dev/null @@ -1,9 +0,0 @@ -Bonjour, - -Le commentaire sera bientôt publié. Il a été approuvé. - --- -Stacosys - - -{{ original }} diff --git a/stacosys/templates/fr/drop_comment.tpl b/stacosys/templates/fr/drop_comment.tpl deleted file mode 100644 index 70e13ed..0000000 --- a/stacosys/templates/fr/drop_comment.tpl +++ /dev/null @@ -1,9 +0,0 @@ -Bonjour, - -Le commentaire ne sera pas publié. Il a été rejeté. - --- -Stacosys - - -{{ original }} diff --git a/stacosys/templates/fr/new_comment.tpl b/stacosys/templates/fr/new_comment.tpl deleted file mode 100644 index 5671563..0000000 --- a/stacosys/templates/fr/new_comment.tpl +++ /dev/null @@ -1,16 +0,0 @@ -Bonjour, - -Un nouveau commentaire a été posté pour l'article {{ url }} - -Vous avez deux réponses possibles : -- rejeter le commentaire en répondant NO (ou no), -- accepter le commentaire en renvoyant cet email tel quel. - -Si cette dernière option est choisie, Stacosys publiera le commentaire très bientôt. - -Voici les détails concernant le commentaire : - -{{ comment }} - --- -Stacosys diff --git a/stacosys/templates/fr/notify_message.tpl b/stacosys/templates/fr/notify_message.tpl deleted file mode 100644 index 5455f77..0000000 --- a/stacosys/templates/fr/notify_message.tpl +++ /dev/null @@ -1 +0,0 @@ -Nouveau commentaire diff --git a/stacosys/templates/fr/rss_title_message.tpl b/stacosys/templates/fr/rss_title_message.tpl deleted file mode 100644 index db993f6..0000000 --- a/stacosys/templates/fr/rss_title_message.tpl +++ /dev/null @@ -1 +0,0 @@ -{{ site }} : commentaires diff --git a/tests/test_config.py b/tests/test_config.py index 3bee34b..8fc4765 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -7,8 +7,7 @@ from stacosys.conf.config import Config, ConfigParameter EXPECTED_DB_SQLITE_FILE = "db.sqlite" EXPECTED_HTTP_PORT = 8080 -EXPECTED_IMAP_PORT = "5000" -EXPECTED_IMAP_LOGIN = "user" +EXPECTED_LANG = "fr" class ConfigTestCase(unittest.TestCase): @@ -17,24 +16,18 @@ class ConfigTestCase(unittest.TestCase): self.conf = Config() self.conf.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) self.conf.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) - self.conf.put(ConfigParameter.IMAP_PORT, EXPECTED_IMAP_PORT) self.conf.put(ConfigParameter.SMTP_STARTTLS, "yes") - self.conf.put(ConfigParameter.IMAP_SSL, "false") def test_exists(self): self.assertTrue(self.conf.exists(ConfigParameter.DB_SQLITE_FILE)) - self.assertFalse(self.conf.exists(ConfigParameter.IMAP_HOST)) def test_get(self): self.assertEqual(self.conf.get(ConfigParameter.DB_SQLITE_FILE), EXPECTED_DB_SQLITE_FILE) self.assertEqual(self.conf.get(ConfigParameter.HTTP_PORT), EXPECTED_HTTP_PORT) self.assertIsNone(self.conf.get(ConfigParameter.HTTP_HOST)) self.assertEqual(self.conf.get(ConfigParameter.HTTP_PORT), EXPECTED_HTTP_PORT) - self.assertEqual(self.conf.get(ConfigParameter.IMAP_PORT), EXPECTED_IMAP_PORT) - self.assertEqual(self.conf.get_int(ConfigParameter.IMAP_PORT), int(EXPECTED_IMAP_PORT)) self.assertEqual(self.conf.get_int(ConfigParameter.HTTP_PORT), 8080) self.assertTrue(self.conf.get_bool(ConfigParameter.SMTP_STARTTLS)) - self.assertFalse(self.conf.get_bool(ConfigParameter.IMAP_SSL)) try: self.conf.get_bool(ConfigParameter.DB_SQLITE_FILE) self.assertTrue(False) @@ -42,7 +35,7 @@ class ConfigTestCase(unittest.TestCase): pass def test_put(self): - self.assertFalse(self.conf.exists(ConfigParameter.IMAP_LOGIN)) - self.conf.put(ConfigParameter.IMAP_LOGIN, EXPECTED_IMAP_LOGIN) - self.assertTrue(self.conf.exists(ConfigParameter.IMAP_LOGIN)) - self.assertEqual(self.conf.get(ConfigParameter.IMAP_LOGIN), EXPECTED_IMAP_LOGIN) + self.assertFalse(self.conf.exists(ConfigParameter.LANG)) + self.conf.put(ConfigParameter.LANG, EXPECTED_LANG) + self.assertTrue(self.conf.exists(ConfigParameter.LANG)) + self.assertEqual(self.conf.get(ConfigParameter.LANG), EXPECTED_LANG) diff --git a/tests/test_imap.py b/tests/test_imap.py deleted file mode 100644 index 474fe85..0000000 --- a/tests/test_imap.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/python -# -*- coding: UTF-8 -*- - -import datetime -import unittest -from email.header import Header -from email.message import Message - -from stacosys.core import imap - - -class ImapTestCase(unittest.TestCase): - - def test_utf8_decode(self): - h = Header(s="Chez Darty vous avez re\udcc3\udca7u un nouvel aspirateur Vacuum gratuit jl8nz", - charset="unknown-8bit") - decoded = imap._email_non_ascii_to_uft8(h) - self.assertEqual(decoded, "Chez Darty vous avez reçu un nouvel aspirateur Vacuum gratuit jl8nz") - - def test_parse_date(self): - now = datetime.datetime.now() - self.assertGreaterEqual(imap._parse_date(None), now) - parsed = imap._parse_date("Wed, 8 Dec 2021 20:05:20 +0100") - self.assertEqual(parsed.day, 8) - self.assertEqual(parsed.month, 12) - self.assertEqual(parsed.year, 2021) - # do not compare hours. don't care about timezone - - def test_to_plain_text_content(self): - msg = Message() - payload = b"non\r\n\r\nLe 08/12/2021 \xc3\xa0 20:04, kianby@free.fr a \xc3\xa9crit\xc2\xa0:\r\n> Bonjour,\r\n>\r\n> Un nouveau commentaire a \xc3\xa9t\xc3\xa9 post\xc3\xa9 pour l'article /2021/rester-discret-sur-github//\r\n>\r\n> Vous avez deux r\xc3\xa9ponses possibles :\r\n> - rejeter le commentaire en r\xc3\xa9pondant NO (ou no),\r\n> - accepter le commentaire en renvoyant cet email tel quel.\r\n>\r\n> Si cette derni\xc3\xa8re option est choisie, Stacosys publiera le commentaire tr\xc3\xa8s bient\xc3\xb4t.\r\n>\r\n> Voici les d\xc3\xa9tails concernant le commentaire :\r\n>\r\n> author: ET Rate\r\n> site:\r\n> date: 2021-12-08 20:03:58\r\n> url: /2021/rester-discret-sur-github//\r\n>\r\n> gfdgdgf\r\n>\r\n>\r\n> --\r\n> Stacosys\r\n" - msg.set_payload(payload, "UTF-8") - self.assertTrue(imap._to_plain_text_content(msg)) diff --git a/tests/test_templater.py b/tests/test_templater.py deleted file mode 100644 index 117d19d..0000000 --- a/tests/test_templater.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/python -# -*- coding: UTF-8 -*- - -import os -import unittest - -from stacosys.core.templater import Templater, Template - - -class TemplateTestCase(unittest.TestCase): - - def get_template_content(self, lang, template_name, **kwargs): - current_path = os.path.dirname(__file__) - template_path = os.path.abspath(os.path.join(current_path, "../stacosys/templates")) - template = Templater(template_path).get_template(lang, template_name) - return template.render(kwargs) - - def test_approve_comment(self): - content = self.get_template_content("fr", Template.APPROVE_COMMENT, original="[texte]") - self.assertTrue(content.startswith("Bonjour,\n\nLe commentaire sera bientôt publié.")) - self.assertTrue(content.endswith("[texte]")) - content = self.get_template_content("en", Template.APPROVE_COMMENT, original="[texte]") - self.assertTrue(content.startswith("Hi,\n\nThe comment should be published soon.")) - self.assertTrue(content.endswith("[texte]")) - - def test_drop_comment(self): - content = self.get_template_content("fr", Template.DROP_COMMENT, original="[texte]") - self.assertTrue(content.startswith("Bonjour,\n\nLe commentaire ne sera pas publié.")) - self.assertTrue(content.endswith("[texte]")) - content = self.get_template_content("en", Template.DROP_COMMENT, original="[texte]") - self.assertTrue(content.startswith("Hi,\n\nThe comment will not be published.")) - self.assertTrue(content.endswith("[texte]")) - - def test_new_comment(self): - content = self.get_template_content("fr", Template.NEW_COMMENT, comment="[comment]") - self.assertTrue(content.startswith("Bonjour,\n\nUn nouveau commentaire a été posté")) - self.assertTrue(content.endswith("[comment]\n\n--\nStacosys")) - content = self.get_template_content("en", Template.NEW_COMMENT, comment="[comment]") - self.assertTrue(content.startswith("Hi,\n\nA new comment has been submitted")) - self.assertTrue(content.endswith("[comment]\n\n--\nStacosys")) - - def test_notify_message(self): - content = self.get_template_content("fr", Template.NOTIFY_MESSAGE) - self.assertEqual("Nouveau commentaire", content) - content = self.get_template_content("en", Template.NOTIFY_MESSAGE) - self.assertEqual("New comment", content) - - def test_rss_title(self): - content = self.get_template_content("fr", Template.RSS_TITLE_MESSAGE, site="[site]") - self.assertEqual("[site] : commentaires", content) - content = self.get_template_content("en", Template.RSS_TITLE_MESSAGE, site="[site]") - self.assertEqual("[site] : comments", content) From 185641e6d0ec4fb5930b5215563cdbbb1e734b44 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 14 Feb 2022 21:51:50 +0100 Subject: [PATCH 014/182] simplify mailer --- config.ini | 14 +---- run.py | 8 --- stacosys/conf/config.py | 2 - stacosys/core/cron.py | 4 +- stacosys/core/mailer.py | 107 ++++++-------------------------- stacosys/interface/scheduler.py | 5 +- tests/test_config.py | 2 - 7 files changed, 24 insertions(+), 118 deletions(-) diff --git a/config.ini b/config.ini index fda705f..5698572 100755 --- a/config.ini +++ b/config.ini @@ -19,19 +19,9 @@ port = 8100 proto = https file = comments.xml -[imap] -polling = 120 -host = mail.gandi.net -ssl = false -port = 993 -login = blog@mydomain.com -password = MYPASSWORD - [smtp] -host = mail.gandi.net -starttls = true -ssl = false -port = 587 +host = smtp.mail.com +port = 465 login = blog@mydomain.com password = MYPASSWORD diff --git a/run.py b/run.py index 4f8095f..5a669f5 100644 --- a/run.py +++ b/run.py @@ -74,24 +74,16 @@ def stacosys_server(config_pathname): mailer = Mailer( conf.get(ConfigParameter.SMTP_HOST), conf.get_int(ConfigParameter.SMTP_PORT), - conf.get_bool(ConfigParameter.SMTP_STARTTLS), - conf.get_bool(ConfigParameter.SMTP_SSL), conf.get(ConfigParameter.SMTP_LOGIN), conf.get(ConfigParameter.SMTP_PASSWORD), conf.get(ConfigParameter.SITE_ADMIN_EMAIL) ) - # configure mailer logger - mail_handler = mailer.get_error_handler() - logger.addHandler(mail_handler) - app.logger.addHandler(mail_handler) - # configure scheduler conf.put(ConfigParameter.SITE_TOKEN, hashlib.sha1(conf.get(ConfigParameter.SITE_NAME).encode('utf-8')).hexdigest()) scheduler.configure( conf.get_int(ConfigParameter.COMMENT_POLLING), conf.get(ConfigParameter.SITE_NAME), - conf.get(ConfigParameter.SITE_ADMIN_EMAIL), mailer, ) diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index bbfe15e..9e923d4 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -17,8 +17,6 @@ class ConfigParameter(Enum): RSS_PROTO = "rss.proto" RSS_FILE = "rss.file" - SMTP_STARTTLS = "smtp.starttls" - SMTP_SSL = "smtp.ssl" SMTP_HOST = "smtp.host" SMTP_PORT = "smtp.port" SMTP_LOGIN = "smtp.login" diff --git a/stacosys/core/cron.py b/stacosys/core/cron.py index 4be8b35..2dd87c0 100644 --- a/stacosys/core/cron.py +++ b/stacosys/core/cron.py @@ -8,7 +8,7 @@ from stacosys.db import dao logger = logging.getLogger(__name__) -def submit_new_comment(site_name, site_admin_email, mailer): +def submit_new_comment(site_name, mailer): for comment in dao.find_not_notified_comments(): comment_list = ( "author: %s" % comment.author_name, @@ -23,7 +23,7 @@ def submit_new_comment(site_name, site_admin_email, mailer): # send email to notify admin subject = "STACOSYS %s" % site_name - if mailer.send(site_admin_email, subject, email_body): + if mailer.send(subject, email_body): logger.debug("new comment processed ") # save notification datetime diff --git a/stacosys/core/mailer.py b/stacosys/core/mailer.py index 5d8fa11..defa09a 100644 --- a/stacosys/core/mailer.py +++ b/stacosys/core/mailer.py @@ -3,109 +3,40 @@ import logging import smtplib -import email.utils +import ssl + from email.mime.text import MIMEText -from email.message import EmailMessage -from logging.handlers import SMTPHandler logger = logging.getLogger(__name__) class Mailer: def __init__( - self, - smtp_host, - smtp_port, - smtp_starttls, - smtp_ssl, - smtp_login, - smtp_password, - site_admin_email, + self, + smtp_host, + smtp_port, + smtp_login, + smtp_password, + site_admin_email, ): self._smtp_host = smtp_host self._smtp_port = smtp_port - self._smtp_starttls = smtp_starttls - self._smtp_ssl = smtp_ssl self._smtp_login = smtp_login self._smtp_password = smtp_password self._site_admin_email = site_admin_email - def send(self, to_email, subject, message): + def send(self, subject, message): + sender = self._smtp_login + receivers = [self._site_admin_email] - # Create the container (outer) email message. msg = MIMEText(message) msg["Subject"] = subject - msg["To"] = to_email - msg["From"] = self._smtp_login + msg["To"] = self._site_admin_email + msg["From"] = sender - success = True - try: - if self._smtp_ssl: - s = smtplib.SMTP_SSL(self._smtp_host, self._smtp_port) - else: - s = smtplib.SMTP(self._smtp_host, self._smtp_port) - if self._smtp_starttls: - s.starttls() - if self._smtp_login: - s.login(self._smtp_login, self._smtp_password) - s.send_message(msg) - s.quit() - except Exception: - logger.exception("send mail exception") - success = False - return success - - def get_error_handler(self): - if self._smtp_ssl: - mail_handler = SSLSMTPHandler( - mailhost=( - self._smtp_host, - self._smtp_port, - ), - credentials=( - self._smtp_login, - self._smtp_password, - ), - fromaddr=self._smtp_login, - toaddrs=self._site_admin_email, - subject="Stacosys error", - ) - else: - mail_handler = SMTPHandler( - mailhost=( - self._smtp_host, - self._smtp_port, - ), - credentials=( - self._smtp_login, - self._smtp_password, - ), - fromaddr=self._smtp_login, - toaddrs=self._site_admin_email, - subject="Stacosys error", - ) - mail_handler.setLevel(logging.ERROR) - return mail_handler - - -class SSLSMTPHandler(SMTPHandler): - def emit(self, record): - """ - Emit a record. - - Format the record and send it to the specified addressees. - """ - try: - smtp = smtplib.SMTP_SSL(self.mailhost, self.mailport) - msg = EmailMessage() - msg["From"] = self.fromaddr - msg["To"] = ",".join(self.toaddrs) - msg["Subject"] = self.getSubject(record) - msg["Date"] = email.utils.localtime() - msg.set_content(self.format(record)) - if self.username: - smtp.login(self.username, self.password) - smtp.send_message(msg) - smtp.quit() - except Exception: - self.handleError(record) + context = ssl.create_default_context() + with smtplib.SMTP_SSL(self._smtp_host, self._smtp_port, context=context) as server: + server.login(self._smtp_login, self._smtp_password) + server.send_message(msg, sender, receivers) + return True + return False diff --git a/stacosys/interface/scheduler.py b/stacosys/interface/scheduler.py index e6615e4..1de9a0e 100644 --- a/stacosys/interface/scheduler.py +++ b/stacosys/interface/scheduler.py @@ -15,14 +15,13 @@ class JobConfig(object): self, new_comment_polling_seconds, site_name, - site_admin_email, mailer, ): self.JOBS = [ { "id": "submit_new_comment", "func": "stacosys.core.cron:submit_new_comment", - "args": [site_name, site_admin_email, mailer], + "args": [site_name, mailer], "trigger": "interval", "seconds": new_comment_polling_seconds, }, @@ -32,14 +31,12 @@ class JobConfig(object): def configure( comment_polling, site_name, - site_admin_email, mailer, ): app.config.from_object( JobConfig( comment_polling, site_name, - site_admin_email, mailer, ) ) diff --git a/tests/test_config.py b/tests/test_config.py index 8fc4765..e98a9e8 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -16,7 +16,6 @@ class ConfigTestCase(unittest.TestCase): self.conf = Config() self.conf.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) self.conf.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) - self.conf.put(ConfigParameter.SMTP_STARTTLS, "yes") def test_exists(self): self.assertTrue(self.conf.exists(ConfigParameter.DB_SQLITE_FILE)) @@ -27,7 +26,6 @@ class ConfigTestCase(unittest.TestCase): self.assertIsNone(self.conf.get(ConfigParameter.HTTP_HOST)) self.assertEqual(self.conf.get(ConfigParameter.HTTP_PORT), EXPECTED_HTTP_PORT) self.assertEqual(self.conf.get_int(ConfigParameter.HTTP_PORT), 8080) - self.assertTrue(self.conf.get_bool(ConfigParameter.SMTP_STARTTLS)) try: self.conf.get_bool(ConfigParameter.DB_SQLITE_FILE) self.assertTrue(False) From 5f2827470619c24525d6c7557705aaabe41895b0 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 18 Feb 2022 18:21:12 +0100 Subject: [PATCH 015/182] remove cron tasks --- config.ini | 1 - dbmigration/create_empty_db.py | 3 -- dbmigration/migrate_from_2.1_to_3.0.py | 38 ---------------------- poetry.lock | 26 +++++++-------- pyproject.toml | 2 +- run.py | 12 ++----- stacosys/conf/config.py | 2 -- stacosys/core/cron.py | 32 ------------------ stacosys/interface/form.py | 37 +++++++++++++++++++-- stacosys/interface/scheduler.py | 45 -------------------------- 10 files changed, 50 insertions(+), 148 deletions(-) delete mode 100644 dbmigration/migrate_from_2.1_to_3.0.py delete mode 100644 stacosys/core/cron.py delete mode 100644 stacosys/interface/scheduler.py diff --git a/config.ini b/config.ini index 5698572..17e4cd3 100755 --- a/config.ini +++ b/config.ini @@ -3,7 +3,6 @@ [main] lang = fr db_sqlite_file = db.sqlite -newcomment_polling = 60 [site] name = "My blog" diff --git a/dbmigration/create_empty_db.py b/dbmigration/create_empty_db.py index 8bb64ac..a597869 100644 --- a/dbmigration/create_empty_db.py +++ b/dbmigration/create_empty_db.py @@ -6,9 +6,6 @@ import sqlite3 connection = sqlite3.connect("db.sqlite") cursor = connection.cursor() -# What script performs: -# - first, remove site table: crash here if table doesn't exist (compatibility test without effort) -# - remove site_id colum from comment table script = """ CREATE TABLE comment ( id INTEGER NOT NULL PRIMARY KEY, diff --git a/dbmigration/migrate_from_2.1_to_3.0.py b/dbmigration/migrate_from_2.1_to_3.0.py deleted file mode 100644 index e421d6e..0000000 --- a/dbmigration/migrate_from_2.1_to_3.0.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/python -# -*- coding: UTF-8 -*- - -import sqlite3 -import datetime -from ulid import ULID - -# add column ulid -connection = sqlite3.connect("db.sqlite") -cursor = connection.cursor() -script = """ -PRAGMA foreign_keys = OFF; -BEGIN TRANSACTION; -ALTER TABLE comment ADD ulid INTEGER; -COMMIT; -PRAGMA foreign_keys = ON; -""" -cursor.executescript(script) -connection.close() - -# fill in ulid column -connection = sqlite3.connect("db.sqlite") -cursor = connection.cursor() -updates = [] -for row in cursor.execute('SELECT * FROM comment'): - row_id = row[0] - string_created = row[2] - date_created = datetime.datetime.strptime(string_created, "%Y-%m-%d %H:%M:%S") - ulid = ULID.from_datetime(date_created) - update = "UPDATE comment SET ulid = " + str(int(ulid)) + " WHERE id = " + str(row_id) - print(update) - updates.append(update) - -for update in updates: - pass - connection.execute(update) -connection.commit() -connection.close() diff --git a/poetry.lock b/poetry.lock index 70cb658..4073351 100644 --- a/poetry.lock +++ b/poetry.lock @@ -54,6 +54,14 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +[[package]] +name = "background" +version = "0.2.1" +description = "It does what it says it does." +category = "main" +optional = false +python-versions = "*" + [[package]] name = "backports.zoneinfo" version = "0.2.1" @@ -495,14 +503,6 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" [package.dependencies] six = ">=1.5" -[[package]] -name = "python-ulid" -version = "1.0.3" -description = "Universally Unique Lexicographically Sortable Identifier" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "pytz" version = "2021.3" @@ -696,7 +696,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "24b77862cfbece0c68447f4d026bed51431e3a655a92dde2697368e758bfac89" +content-hash = "1062100a70ba0ca6a9f5db6470d0a980784af1d9b96d0bb681e1b65bacc204cf" [metadata.files] appdirs = [ @@ -715,6 +715,10 @@ attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] +background = [ + {file = "background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802"}, + {file = "background-0.2.1.tar.gz", hash = "sha256:4a5ed40b4a2a9f3340b1402862725d35016dc2490f95d89a2de47c3ddf215b91"}, +] "backports.zoneinfo" = [ {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, @@ -1008,10 +1012,6 @@ python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] -python-ulid = [ - {file = "python-ulid-1.0.3.tar.gz", hash = "sha256:5dd8b969312a40e2212cec9c1ad63f25d4b6eafd92ee3195883e0287b6e9d19e"}, - {file = "python_ulid-1.0.3-py3-none-any.whl", hash = "sha256:8704dc20f547f531fe3a41d4369842d737a0f275403b909d0872e7ea0fe8d6f2"}, -] pytz = [ {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, diff --git a/pyproject.toml b/pyproject.toml index 718ebee..4dd72e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ requests = "^2.25.1" coverage = "^5.5" peewee = "^3.14.8" tox = "^3.24.5" -python-ulid = "^1.0.3" +background = "^0.2.1" [tool.poetry.dev-dependencies] rope = "^0.16.0" diff --git a/run.py b/run.py index 5a669f5..b295253 100644 --- a/run.py +++ b/run.py @@ -2,7 +2,6 @@ # -*- coding: UTF-8 -*- import argparse -import hashlib import logging import os import sys @@ -14,7 +13,6 @@ from stacosys.db import database from stacosys.interface import api from stacosys.interface import app from stacosys.interface import form -from stacosys.interface import scheduler from stacosys.interface.web import admin @@ -79,20 +77,14 @@ def stacosys_server(config_pathname): conf.get(ConfigParameter.SITE_ADMIN_EMAIL) ) - # configure scheduler - conf.put(ConfigParameter.SITE_TOKEN, hashlib.sha1(conf.get(ConfigParameter.SITE_NAME).encode('utf-8')).hexdigest()) - scheduler.configure( - conf.get_int(ConfigParameter.COMMENT_POLLING), - conf.get(ConfigParameter.SITE_NAME), - mailer, - ) - # inject config parameters into flask app.config.update(LANG=conf.get(ConfigParameter.LANG)) + app.config.update(SITE_NAME=conf.get(ConfigParameter.SITE_NAME)) app.config.update(SITE_URL=conf.get(ConfigParameter.SITE_URL)) app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) app.config.update(WEB_USERNAME=conf.get(ConfigParameter.WEB_USERNAME)) app.config.update(WEB_PASSWORD=conf.get(ConfigParameter.WEB_PASSWORD)) + app.config.update(MAILER=mailer) logger.info(f"start interfaces {api} {form} {admin}") # start Flask diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index 9e923d4..4e77fb1 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -9,7 +9,6 @@ import profig class ConfigParameter(Enum): DB_SQLITE_FILE = "main.db_sqlite_file" LANG = "main.lang" - COMMENT_POLLING = "main.newcomment_polling" HTTP_HOST = "http.host" HTTP_PORT = "http.port" @@ -24,7 +23,6 @@ class ConfigParameter(Enum): SITE_NAME = "site.name" SITE_URL = "site.url" - SITE_TOKEN = "site.token" SITE_ADMIN_EMAIL = "site.admin_email" SITE_REDIRECT = "site.redirect" diff --git a/stacosys/core/cron.py b/stacosys/core/cron.py deleted file mode 100644 index 2dd87c0..0000000 --- a/stacosys/core/cron.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import logging - -from stacosys.db import dao - -logger = logging.getLogger(__name__) - - -def submit_new_comment(site_name, mailer): - for comment in dao.find_not_notified_comments(): - comment_list = ( - "author: %s" % comment.author_name, - "site: %s" % comment.author_site, - "date: %s" % comment.created, - "url: %s" % comment.url, - "", - "%s" % comment.content, - "", - ) - email_body = "\n".join(comment_list) - - # send email to notify admin - subject = "STACOSYS %s" % site_name - if mailer.send(subject, email_body): - logger.debug("new comment processed ") - - # save notification datetime - dao.notify_comment(comment) - else: - logger.warning("rescheduled. send mail failure " + subject) diff --git a/stacosys/interface/form.py b/stacosys/interface/form.py index 085c586..8bdabc0 100644 --- a/stacosys/interface/form.py +++ b/stacosys/interface/form.py @@ -1,8 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- - import logging +import background from flask import abort, redirect, request from stacosys.db import dao @@ -13,7 +13,6 @@ logger = logging.getLogger(__name__) @app.route("/newcomment", methods=["POST"]) def new_form_comment(): - data = request.form logger.info("form data " + str(data)) @@ -40,7 +39,10 @@ def new_form_comment(): abort(400) # add a row to Comment table - dao.create_comment(url, author_name, author_site, author_gravatar, message) + comment = dao.create_comment(url, author_name, author_site, author_gravatar, message) + + # send notification e-mail asynchronously + submit_new_comment(comment) return redirect(app.config.get("SITE_REDIRECT"), code=302) @@ -51,3 +53,32 @@ def check_form_data(d): return not filtered +@background.task +def submit_new_comment(comment): + comment_list = ( + "Web admin interface: %s/web/admin" % app.config.get("SITE_URL"), + "", + "author: %s" % comment.author_name, + "site: %s" % comment.author_site, + "date: %s" % comment.created, + "url: %s" % comment.url, + "", + "%s" % comment.content, + "", + ) + email_body = "\n".join(comment_list) + + # send email to notify admin + subject = "STACOSYS " + app.config.get("SITE_NAME") + if app.config.get("MAILER").send(subject, email_body): + logger.debug("new comment processed") + + # save notification datetime + dao.notify_comment(comment) + else: + logger.warning("rescheduled. send mail failure " + subject) + + +@background.callback +def submit_new_comment_callback(future): + pass diff --git a/stacosys/interface/scheduler.py b/stacosys/interface/scheduler.py deleted file mode 100644 index 1de9a0e..0000000 --- a/stacosys/interface/scheduler.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from flask_apscheduler import APScheduler -from stacosys.interface import app - - -class JobConfig(object): - - JOBS: list = [] - - SCHEDULER_EXECUTORS = {"default": {"type": "threadpool", "max_workers": 1}} - - def __init__( - self, - new_comment_polling_seconds, - site_name, - mailer, - ): - self.JOBS = [ - { - "id": "submit_new_comment", - "func": "stacosys.core.cron:submit_new_comment", - "args": [site_name, mailer], - "trigger": "interval", - "seconds": new_comment_polling_seconds, - }, - ] - - -def configure( - comment_polling, - site_name, - mailer, -): - app.config.from_object( - JobConfig( - comment_polling, - site_name, - mailer, - ) - ) - scheduler = APScheduler() - scheduler.init_app(app) - scheduler.start() From ed430799f5aac37d4052d5957b47369c56afb646 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 18 Feb 2022 18:25:59 +0100 Subject: [PATCH 016/182] remove flash apscheduler package --- poetry.lock | 33 +-------------------------------- pyproject.toml | 1 - 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/poetry.lock b/poetry.lock index 4073351..8c87e49 100644 --- a/poetry.lock +++ b/poetry.lock @@ -232,19 +232,6 @@ Werkzeug = ">=2.0" async = ["asgiref (>=3.2)"] dotenv = ["python-dotenv"] -[[package]] -name = "flask-apscheduler" -version = "1.12.3" -description = "Adds APScheduler support to Flask" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -apscheduler = ">=3.2.0,<4.0.0" -flask = ">=0.10.1" -python-dateutil = ">=2.4.2" - [[package]] name = "idna" version = "3.3" @@ -492,17 +479,6 @@ toml = "*" [package.extras] testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] -[[package]] -name = "python-dateutil" -version = "2.8.2" -description = "Extensions to the standard Python datetime module" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" - -[package.dependencies] -six = ">=1.5" - [[package]] name = "pytz" version = "2021.3" @@ -696,7 +672,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "1062100a70ba0ca6a9f5db6470d0a980784af1d9b96d0bb681e1b65bacc204cf" +content-hash = "1db9a9c6f78a4148493fa7ab87741373fd6eccd7c078657de7dd00d3af8482b9" [metadata.files] appdirs = [ @@ -837,9 +813,6 @@ flask = [ {file = "Flask-2.0.2-py3-none-any.whl", hash = "sha256:cb90f62f1d8e4dc4621f52106613488b5ba826b2e1e10a33eac92f723093ab6a"}, {file = "Flask-2.0.2.tar.gz", hash = "sha256:7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2"}, ] -flask-apscheduler = [ - {file = "Flask-APScheduler-1.12.3.tar.gz", hash = "sha256:d60948d1f2be9eb4772f68c3308ba3f973755219d13947266f89292ad6df63fc"}, -] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, @@ -1008,10 +981,6 @@ pytest-cov = [ {file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"}, {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, ] -python-dateutil = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] pytz = [ {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, diff --git a/pyproject.toml b/pyproject.toml index 4dd72e5..f01c90c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,6 @@ apscheduler = "^3.6.3" pyrss2gen = "^1.1" profig = "^0.5.1" markdown = "^3.1.1" -flask_apscheduler = "^1.11.0" Flask = "^2.0.1" requests = "^2.25.1" coverage = "^5.5" From 04c2d8f685c5600a16d7073845fceffe42b5aa3b Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 18 Feb 2022 18:26:17 +0100 Subject: [PATCH 017/182] todo action handler --- run.py | 1 + stacosys/interface/web/admin.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/run.py b/run.py index b295253..b9b7e14 100644 --- a/run.py +++ b/run.py @@ -85,6 +85,7 @@ def stacosys_server(config_pathname): app.config.update(WEB_USERNAME=conf.get(ConfigParameter.WEB_USERNAME)) app.config.update(WEB_PASSWORD=conf.get(ConfigParameter.WEB_PASSWORD)) app.config.update(MAILER=mailer) + app.config.update(RSS=rss) logger.info(f"start interfaces {api} {form} {admin}") # start Flask diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index 255787d..a282965 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -60,6 +60,7 @@ def admin_homepage(): @app.route("/web/admin", methods=["POST"]) def admin_action(): flash(request.form.get("comment") + " " + request.form.get("action")) + # TODO process action # rebuild RSS - #rss.generate() + app.config.get("RSS").generate() return redirect('/web/admin') From de07987ed12678d6e8ea3660505d96a7dabd9edf Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Feb 2022 11:44:11 +0100 Subject: [PATCH 018/182] Finalize version 3.0 --- README.md | 21 +-- poetry.lock | 187 +++++++++------------ pyproject.toml | 2 +- run.py | 3 +- stacosys/db/database.py | 16 +- stacosys/interface/templates/login_fr.html | 2 +- stacosys/interface/web/admin.py | 22 ++- tests/test_api.py | 3 +- tests/test_db.py | 3 +- tests/test_form.py | 3 +- 10 files changed, 118 insertions(+), 144 deletions(-) diff --git a/README.md b/README.md index 321fe82..98b075e 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,7 @@ ## Stacosys -Stacosys (aka STAtic blog COmment SYStem) is a fork of [Pecosys](http://github.com/kianby/pecosys) trying to fix Pecosys design drawbacks and to provide an humble alternative to comment hosting services like Disqus. Stacosys protects your readers's privacy. - -Stacosys works with any static blog or even a simple HTML page. It uses e-mails to communicate with the blog administrator. It doesn't sound *hype* but I'm an old-school guy. E-mails are reliable and an universal way to communicate. You can answer from any device using an e-mail client. +Stacosys (aka STAtic blog COmment SYStem) is a fork of [Pecosys](http://github.com/kianby/pecosys) trying to fix Pecosys design drawbacks and to provide a basic alternative to comment hosting services like Disqus. Stacosys works with any static blog or even a simple HTML page. ### Features overview @@ -16,25 +14,24 @@ Stacosys main feature is comment management. Here is the workflow: - Readers submit comments via a comment form embedded in blog pages -- Blog administrator receives an email notification from Stacosys when a +- Blog administrator receives an e-mail notification from Stacosys when a comment is submitted -- Blog administrator can approve or drop the comment by replying to e-mail +- Blog administrator can approve or drop the comment through a simple web admin interface - Stacosys stores approved comment in its database. -Privacy concerns: only surname, gravatar id and comment itself are stored in DB. E-mail is requested in submission form (but optional) to resolve gravatar id and it it not sent to stacosys. +Privacy concerns: only surname, gravatar id and comment itself are stored in DB. E-mail is optionally requested in submission form to resolve gravatar id but never sent to Stacosys. -Stacosys is localized (english and french). +Stacosys is more or less localized (english and french). ### Technically speaking, how does it work? -Stacosys can be hosted on the same server or on a different server than the blog. Stacosys offers a REST API to retrieve and post comments. Static blog is HTML-based and a piece of JavaScript code interacts with Stacosys using HTTP requests. Each page has a unique id and a simple request allows to retrieve comments for a given page. Similarly a form request allows to post a comment which is relayed to the administrator by e-mail. For this purpose a dedicated email is assigned to Stacosys. - +Stacosys offers a REST API to retrieve and post comments. Static blog is HTML-based and a piece of JavaScript code interacts with Stacosys using HTTP requests. Each page has a unique id and a request allows retrieving comments for a given page. Similarly, a form request allows to post a comment which is relayed to the administrator by e-mail. For this purpose an SMTP configuration is needed. ### Little FAQ *How do you block spammers?* -- Current comment form is basic: no captcha support but protected by an honey pot. +- Current comment form is basic: no captcha support but protected by a honeypot. *Which database is used?* @@ -49,8 +46,8 @@ Stacosys can be hosted on the same server or on a different server than the blog ### Installation -Build is based on [Poetry](https://python-poetry.org/) but you can also use [published releases](https://github.com/kianby/stacosys/releases) or [Docker image](https://hub.docker.com/r/kianby/stacosys). +Build and Dependency management relies on [Poetry](https://python-poetry.org/), but you can also use [published releases](https://github.com/kianby/stacosys/releases) or [Docker image](https://hub.docker.com/r/kianby/stacosys). ### Improvements -Stacosys fits my needs and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork the project and enhance the project if you need more features. +Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. diff --git a/poetry.lock b/poetry.lock index 8c87e49..a778f91 100644 --- a/poetry.lock +++ b/poetry.lock @@ -105,7 +105,7 @@ python-versions = "*" [[package]] name = "charset-normalizer" -version = "2.0.10" +version = "2.0.12" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false @@ -116,7 +116,7 @@ unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.0.3" +version = "8.0.4" description = "Composable command line interface toolkit" category = "main" optional = false @@ -178,7 +178,7 @@ python-versions = "*" [[package]] name = "filelock" -version = "3.4.2" +version = "3.6.0" description = "A platform independent file lock." category = "main" optional = false @@ -203,7 +203,7 @@ pyflakes = ">=2.4.0,<2.5.0" [[package]] name = "flake8-black" -version = "0.2.3" +version = "0.2.4" description = "flake8 plugin to call black as a code style validator" category = "dev" optional = false @@ -216,7 +216,7 @@ toml = "*" [[package]] name = "flask" -version = "2.0.2" +version = "2.0.3" description = "A simple framework for building complex web applications." category = "main" optional = false @@ -242,7 +242,7 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.10.1" +version = "4.11.1" description = "Read metadata from Python packages" category = "main" optional = false @@ -254,7 +254,7 @@ zipp = ">=0.5" [package.extras] docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "iniconfig" @@ -266,11 +266,11 @@ python-versions = "*" [[package]] name = "itsdangerous" -version = "2.0.1" +version = "2.1.0" description = "Safely pass data to untrusted environments and back." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "jinja2" @@ -302,11 +302,11 @@ testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" -version = "2.0.1" +version = "2.1.0" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "mccabe" @@ -361,7 +361,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "peewee" -version = "3.14.8" +version = "3.14.9" description = "a little orm" category = "main" optional = false @@ -369,7 +369,7 @@ python-versions = "*" [[package]] name = "platformdirs" -version = "2.4.1" +version = "2.5.0" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false @@ -584,7 +584,7 @@ python-versions = "*" [[package]] name = "typing-extensions" -version = "4.0.1" +version = "4.1.1" description = "Backported and Experimental Type Hints for Python 3.6+" category = "dev" optional = false @@ -630,7 +630,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.13.0" +version = "20.13.1" description = "Virtual Python Environment builder" category = "main" optional = false @@ -648,7 +648,7 @@ testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", [[package]] name = "werkzeug" -version = "2.0.2" +version = "2.0.3" description = "The comprehensive WSGI web application library." category = "main" optional = false @@ -721,12 +721,12 @@ certifi = [ {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"}, - {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"}, + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] click = [ - {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"}, - {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"}, + {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, + {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, ] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, @@ -798,36 +798,36 @@ docopt = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, ] filelock = [ - {file = "filelock-3.4.2-py3-none-any.whl", hash = "sha256:cf0fc6a2f8d26bd900f19bf33915ca70ba4dd8c56903eeb14e1e7a2fd7590146"}, - {file = "filelock-3.4.2.tar.gz", hash = "sha256:38b4f4c989f9d06d44524df1b24bd19e167d851f19b50bf3e3559952dddc5b80"}, + {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, + {file = "filelock-3.6.0.tar.gz", hash = "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85"}, ] flake8 = [ {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, ] flake8-black = [ - {file = "flake8-black-0.2.3.tar.gz", hash = "sha256:c199844bc1b559d91195ebe8620216f21ed67f2cc1ff6884294c91a0d2492684"}, - {file = "flake8_black-0.2.3-py3-none-any.whl", hash = "sha256:cc080ba5b3773b69ba102b6617a00cc4ecbad8914109690cfda4d565ea435d96"}, + {file = "flake8-black-0.2.4.tar.gz", hash = "sha256:a7871bfd1cbff431a1fc91ba60ae154510c80f575e6b9a2bbb13dfb4650afd22"}, + {file = "flake8_black-0.2.4-py3-none-any.whl", hash = "sha256:0a70dfd97c8439827f365dc6dbc6c8c9cc087f0833625c6cc6848ff7876256be"}, ] flask = [ - {file = "Flask-2.0.2-py3-none-any.whl", hash = "sha256:cb90f62f1d8e4dc4621f52106613488b5ba826b2e1e10a33eac92f723093ab6a"}, - {file = "Flask-2.0.2.tar.gz", hash = "sha256:7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2"}, + {file = "Flask-2.0.3-py3-none-any.whl", hash = "sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f"}, + {file = "Flask-2.0.3.tar.gz", hash = "sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.10.1-py3-none-any.whl", hash = "sha256:899e2a40a8c4a1aec681feef45733de8a6c58f3f6a0dbed2eb6574b4387a77b6"}, - {file = "importlib_metadata-4.10.1.tar.gz", hash = "sha256:951f0d8a5b7260e9db5e41d429285b5f451e928479f19d80818878527d36e95e"}, + {file = "importlib_metadata-4.11.1-py3-none-any.whl", hash = "sha256:e0bc84ff355328a4adfc5240c4f211e0ab386f80aa640d1b11f0618a1d282094"}, + {file = "importlib_metadata-4.11.1.tar.gz", hash = "sha256:175f4ee440a0317f6e8d81b7f8d4869f93316170a65ad2b007d2929186c8052c"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] itsdangerous = [ - {file = "itsdangerous-2.0.1-py3-none-any.whl", hash = "sha256:5174094b9637652bdb841a3029700391451bd092ba3db90600dea710ba28e97c"}, - {file = "itsdangerous-2.0.1.tar.gz", hash = "sha256:9e724d68fc22902a1435351f84c3fb8623f303fffcc566a4cb952df8c572cff0"}, + {file = "itsdangerous-2.1.0-py3-none-any.whl", hash = "sha256:29285842166554469a56d427addc0843914172343784cb909695fdbe90a3e129"}, + {file = "itsdangerous-2.1.0.tar.gz", hash = "sha256:d848fcb8bc7d507c4546b448574e8a44fc4ea2ba84ebf8d783290d53e81992f5"}, ] jinja2 = [ {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, @@ -838,75 +838,46 @@ markdown = [ {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, ] markupsafe = [ - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3028252424c72b2602a323f70fbf50aa80a5d3aa616ea6add4ba21ae9cc9da4c"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:290b02bab3c9e216da57c1d11d2ba73a9f73a614bbdcc027d299a60cdfabb11a"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e104c0c2b4cd765b4e83909cde7ec61a1e313f8a75775897db321450e928cce"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24c3be29abb6b34052fd26fc7a8e0a49b1ee9d282e3665e8ad09a0a68faee5b3"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204730fd5fe2fe3b1e9ccadb2bd18ba8712b111dcabce185af0b3b5285a7c989"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d3b64c65328cb4cd252c94f83e66e3d7acf8891e60ebf588d7b493a55a1dbf26"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:96de1932237abe0a13ba68b63e94113678c379dca45afa040a17b6e1ad7ed076"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75bb36f134883fdbe13d8e63b8675f5f12b80bb6627f7714c7d6c5becf22719f"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-win32.whl", hash = "sha256:4056f752015dfa9828dce3140dbadd543b555afb3252507348c493def166d454"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:d4e702eea4a2903441f2735799d217f4ac1b55f7d8ad96ab7d4e25417cb0827c"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f0eddfcabd6936558ec020130f932d479930581171368fd728efcfb6ef0dd357"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddea4c352a488b5e1069069f2f501006b1a4362cb906bee9a193ef1245a7a61"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09c86c9643cceb1d87ca08cdc30160d1b7ab49a8a21564868921959bd16441b8"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a0abef2ca47b33fb615b491ce31b055ef2430de52c5b3fb19a4042dbc5cadb"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:736895a020e31b428b3382a7887bfea96102c529530299f426bf2e636aacec9e"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:679cbb78914ab212c49c67ba2c7396dc599a8479de51b9a87b174700abd9ea49"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84ad5e29bf8bab3ad70fd707d3c05524862bddc54dc040982b0dbcff36481de7"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-win32.whl", hash = "sha256:8da5924cb1f9064589767b0f3fc39d03e3d0fb5aa29e0cb21d43106519bd624a"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:454ffc1cbb75227d15667c09f164a0099159da0c1f3d2636aa648f12675491ad"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:142119fb14a1ef6d758912b25c4e803c3ff66920635c44078666fe7cc3f8f759"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b2a5a856019d2833c56a3dcac1b80fe795c95f401818ea963594b345929dffa7"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d1fb9b2eec3c9714dd936860850300b51dbaa37404209c8d4cb66547884b7ed"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c0285e91414f5c8f621a17b69fc0088394ccdaa961ef469e833dbff64bd5ea"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f02cf7221d5cd915d7fa58ab64f7ee6dd0f6cddbb48683debf5d04ae9b1c2cc1"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5653619b3eb5cbd35bfba3c12d575db2a74d15e0e1c08bf1db788069d410ce8"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d2f5d97fcbd004c03df8d8fe2b973fe2b14e7bfeb2cfa012eaa8759ce9a762f"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-win32.whl", hash = "sha256:3cace1837bc84e63b3fd2dfce37f08f8c18aeb81ef5cf6bb9b51f625cb4e6cd8"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:023af8c54fe63530545f70dd2a2a7eed18d07a9a77b94e8bf1e2ff7f252db9a3"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d66624f04de4af8bbf1c7f21cc06649c1c69a7f84109179add573ce35e46d448"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c532d5ab79be0199fa2658e24a02fce8542df196e60665dd322409a03db6a52c"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ec74fada3841b8c5f4c4f197bea916025cb9aa3fe5abf7d52b655d042f956"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c653fde75a6e5eb814d2a0a89378f83d1d3f502ab710904ee585c38888816c"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:961eb86e5be7d0973789f30ebcf6caab60b844203f4396ece27310295a6082c7"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:598b65d74615c021423bd45c2bc5e9b59539c875a9bdb7e5f2a6b92dfcfc268d"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:599941da468f2cf22bf90a84f6e2a65524e87be2fce844f96f2dd9a6c9d1e635"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-win32.whl", hash = "sha256:e6f7f3f41faffaea6596da86ecc2389672fa949bd035251eab26dc6697451d05"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7"}, + {file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"}, ] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, @@ -941,11 +912,11 @@ pathspec = [ {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] peewee = [ - {file = "peewee-3.14.8.tar.gz", hash = "sha256:01bd7f734defb08d7a3346a0c0ca7011bc8d0d685934ec0e001b3371d522ec53"}, + {file = "peewee-3.14.9.tar.gz", hash = "sha256:69c1b88dc89b184231cc1ce6df241075aca5cec43e89749cc4a63108f9ceea47"}, ] platformdirs = [ - {file = "platformdirs-2.4.1-py3-none-any.whl", hash = "sha256:1d7385c7db91728b83efd0ca99a5afb296cab9d0ed8313a45ed8ba17967ecfca"}, - {file = "platformdirs-2.4.1.tar.gz", hash = "sha256:440633ddfebcc36264232365d7840a970e75e1018d15b4327d11f91909045fda"}, + {file = "platformdirs-2.5.0-py3-none-any.whl", hash = "sha256:30671902352e97b1eafd74ade8e4a694782bd3471685e78c32d0fdfd3aa7e7bb"}, + {file = "platformdirs-2.5.0.tar.gz", hash = "sha256:8ec11dfba28ecc0715eb5fb0147a87b1bf325f349f3da9aab2cd6b50b96b692b"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, @@ -1119,8 +1090,8 @@ typed-ast = [ {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"}, ] typing-extensions = [ - {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, - {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, ] tzdata = [ {file = "tzdata-2021.5-py2.py3-none-any.whl", hash = "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5"}, @@ -1135,12 +1106,12 @@ urllib3 = [ {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, ] virtualenv = [ - {file = "virtualenv-20.13.0-py2.py3-none-any.whl", hash = "sha256:339f16c4a86b44240ba7223d0f93a7887c3ca04b5f9c8129da7958447d079b09"}, - {file = "virtualenv-20.13.0.tar.gz", hash = "sha256:d8458cf8d59d0ea495ad9b34c2599487f8a7772d796f9910858376d1600dd2dd"}, + {file = "virtualenv-20.13.1-py2.py3-none-any.whl", hash = "sha256:45e1d053cad4cd453181ae877c4ffc053546ae99e7dd049b9ff1d9be7491abf7"}, + {file = "virtualenv-20.13.1.tar.gz", hash = "sha256:e0621bcbf4160e4e1030f05065c8834b4e93f4fcc223255db2a823440aca9c14"}, ] werkzeug = [ - {file = "Werkzeug-2.0.2-py3-none-any.whl", hash = "sha256:63d3dc1cf60e7b7e35e97fa9861f7397283b75d765afcaefd993d6046899de8f"}, - {file = "Werkzeug-2.0.2.tar.gz", hash = "sha256:aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a"}, + {file = "Werkzeug-2.0.3-py3-none-any.whl", hash = "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8"}, + {file = "Werkzeug-2.0.3.tar.gz", hash = "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c"}, ] zipp = [ {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, diff --git a/pyproject.toml b/pyproject.toml index f01c90c..d7bf198 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "stacosys" -version = "2.1" +version = "3.0" description = "STAtic COmmenting SYStem" authors = ["Yax"] readme = "README.md" diff --git a/run.py b/run.py index b9b7e14..948f8b6 100644 --- a/run.py +++ b/run.py @@ -53,8 +53,7 @@ def stacosys_server(config_pathname): sys.exit(1) # initialize database - db = database.Database() - db.setup(db_pathname) + database.setup(db_pathname) logger.info("Start Stacosys application") diff --git a/stacosys/db/database.py b/stacosys/db/database.py index 5b3af96..3586fd7 100644 --- a/stacosys/db/database.py +++ b/stacosys/db/database.py @@ -12,13 +12,13 @@ class BaseModel(Model): database = db -class Database: - def get_db(self): - return db +def setup(db_url): + db.init(db_url) + db.connect() - def setup(self, db_url): - db.init(db_url) - db.connect() + from stacosys.model.comment import Comment + db.create_tables([Comment], safe=True) - from stacosys.model.comment import Comment - db.create_tables([Comment], safe=True) + +def get_db(): + return db diff --git a/stacosys/interface/templates/login_fr.html b/stacosys/interface/templates/login_fr.html index e43d951..aa385d1 100644 --- a/stacosys/interface/templates/login_fr.html +++ b/stacosys/interface/templates/login_fr.html @@ -36,7 +36,7 @@
-

Cette page a été conçue par Yax avec Simple.css.

+

Cette page a été conçue avec Simple.css.

diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index a282965..f5bedf2 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -33,10 +33,10 @@ def login(): if is_login_ok(username, password): session['user'] = username return redirect('/web/admin') - + # TODO localization flash("Identifiant ou mot de passe incorrect") return redirect('/web/login') - + # GET return render_template("login_" + app.config.get("LANG") + ".html") @@ -49,6 +49,7 @@ def logout(): @app.route("/web/admin", methods=["GET"]) def admin_homepage(): if not ('user' in session and session['user'] == app.config.get("WEB_USERNAME")): + # TODO localization flash("Vous avez été déconnecté.") return redirect('/web/login') @@ -59,8 +60,17 @@ def admin_homepage(): @app.route("/web/admin", methods=["POST"]) def admin_action(): - flash(request.form.get("comment") + " " + request.form.get("action")) - # TODO process action - # rebuild RSS - app.config.get("RSS").generate() + comment = dao.find_comment_by_id(request.form.get("comment")) + if comment is None: + # TODO localization + flash("Commentaire introuvable") + elif request.form.get("action") == "APPROVE": + dao.publish_comment(comment) + app.config.get("RSS").generate() + # TODO localization + flash("Commentaire publié") + else: + dao.delete_comment(comment) + # TODO localization + flash("Commentaire supprimé") return redirect('/web/admin') diff --git a/tests/test_api.py b/tests/test_api.py index b162153..641fd35 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -22,8 +22,7 @@ def init_test_db(): @pytest.fixture def client(): logger = logging.getLogger(__name__) - db = database.Database() - db.setup(":memory:") + database.setup(":memory:") init_test_db() app.config.update(SITE_TOKEN="ETC") logger.info(f"start interface {api}") diff --git a/tests/test_db.py b/tests/test_db.py index 2d99936..f3ecf57 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -7,8 +7,7 @@ from stacosys.db import database class DbTestCase(unittest.TestCase): def setUp(self): - db = database.Database() - db.setup(":memory:") + database.setup(":memory:") def test_dao_published(self): diff --git a/tests/test_form.py b/tests/test_form.py index 94bea7e..ff9fbfd 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -13,8 +13,7 @@ from stacosys.interface import form @pytest.fixture def client(): logger = logging.getLogger(__name__) - db = database.Database() - db.setup(":memory:") + database.setup(":memory:") app.config.update(SITE_REDIRECT="/redirect") logger.info(f"start interface {form}") return app.test_client() From fbeb0d386ee66519b09d6c8b742d2232bb66e512 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Feb 2022 12:09:56 +0100 Subject: [PATCH 019/182] README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 98b075e..2d25eb7 100644 --- a/README.md +++ b/README.md @@ -51,3 +51,4 @@ Build and Dependency management relies on [Poetry](https://python-poetry.org/), ### Improvements Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. + From 6c4bbace0279dc121fb2b2e0825ad9fed5fd504a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Feb 2022 12:12:12 +0100 Subject: [PATCH 020/182] publish docker image 3.0 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a025b04..a9987d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.9-alpine -ARG STACOSYS_VERSION=2.1 +ARG STACOSYS_VERSION=3.0 ARG STACOSYS_FILENAME=stacosys-${STACOSYS_VERSION}-py3-none-any.whl RUN apk update && apk add bash && apk add wget From c2a90291ccb1d521a9c086279cb87dae60286bf3 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 3 Apr 2022 18:29:59 +0200 Subject: [PATCH 021/182] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 2d25eb7..98b075e 100644 --- a/README.md +++ b/README.md @@ -51,4 +51,3 @@ Build and Dependency management relies on [Poetry](https://python-poetry.org/), ### Improvements Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. - From 16e74c281cb605c6ca514608deb3e18e86bbfc4d Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 3 Apr 2022 18:45:00 +0200 Subject: [PATCH 022/182] update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2f5cfda..3388d87 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ workspace.code-workspace config-server.ini config-dev.ini .idea/ +.python-version From 04ad1674a918c3a05b75a55bea9c99cf739544d9 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:39:17 +0200 Subject: [PATCH 023/182] add flake8 action --- .github/workflows/lint.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..57e1f06 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,26 @@ +name: Lint + +on: + push: + paths: + - '*.py' + +jobs: + flake8_py3: + runs-on: ubuntu-latest + steps: + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: 3.9.9 + architecture: x64 + - name: Checkout Stacosys + uses: actions/checkout@master + - name: Install flake8 + run: pip install flake8 + - name: Run flake8 + uses: suo/flake8-github-action@releases/v1 + with: + checkName: 'flake8_py3' # NOTE: this needs to be the same as the job name + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 4ea176f82508e20512e9a86951f9993be002882c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:52:39 +0200 Subject: [PATCH 024/182] flake8 --- .github/workflows/lint.yml | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 57e1f06..0e50953 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,4 +1,4 @@ -name: Lint +name: lint on: push: @@ -7,15 +7,24 @@ on: jobs: flake8_py3: - runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: [3.9.9] + poetry-version: [1.1.12] + os: [ubuntu-18.04] + runs-on: ${{ matrix.os }} steps: - - name: Setup Python - uses: actions/setup-python@v1 + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 with: - python-version: 3.9.9 - architecture: x64 - - name: Checkout Stacosys - uses: actions/checkout@master + python-version: ${{ matrix.python-version }} + - name: Run image + uses: abatilo/actions-poetry@v2.0.0 + with: + poetry-version: ${{ matrix.poetry-version }} + - name: Install dependencies + run: poetry install - name: Install flake8 run: pip install flake8 - name: Run flake8 @@ -23,4 +32,4 @@ jobs: with: checkName: 'flake8_py3' # NOTE: this needs to be the same as the job name env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.ACTION_GITHUB_TOKEN }} \ No newline at end of file From 613ed6d8b02ad98c5b4911fe9ffc138f39e15d65 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:58:55 +0200 Subject: [PATCH 025/182] on push --- .github/workflows/lint.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0e50953..a4f5dcc 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,9 +1,5 @@ name: lint - -on: - push: - paths: - - '*.py' +on: push jobs: flake8_py3: From 3f5dcb39a73c28b1aa5fd853d8c4fff5b6d6faa2 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:20:54 +0200 Subject: [PATCH 026/182] black compliance --- .github/workflows/lint.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a4f5dcc..d8246dd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -21,11 +21,11 @@ jobs: poetry-version: ${{ matrix.poetry-version }} - name: Install dependencies run: poetry install - - name: Install flake8 - run: pip install flake8 - - name: Run flake8 - uses: suo/flake8-github-action@releases/v1 + - uses: grantmcconnaughey/lintly-flake8-github-action@v1.0 with: - checkName: 'flake8_py3' # NOTE: this needs to be the same as the job name - env: - GITHUB_TOKEN: ${{ secrets.ACTION_GITHUB_TOKEN }} \ No newline at end of file + # The GitHub API token to create reviews with + token: ${{ secrets.GITHUB_TOKEN }} + # Fail if "new" violations detected or "any", default "new" + failIf: new + # Additional arguments to be black compliant + args: "--max-line-length=88 --extend-ignore=E203 --exclude=*/tests/*" \ No newline at end of file From 443213abcfe42655f865ba6fd5dda2bbcf68f383 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:27:53 +0200 Subject: [PATCH 027/182] fix python version --- .github/workflows/lint.yml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d8246dd..fc7e573 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,23 +2,15 @@ name: lint on: push jobs: - flake8_py3: - strategy: - fail-fast: false - matrix: - python-version: [3.9.9] - poetry-version: [1.1.12] - os: [ubuntu-18.04] - runs-on: ${{ matrix.os }} + lint: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - name: Run image uses: abatilo/actions-poetry@v2.0.0 with: - poetry-version: ${{ matrix.poetry-version }} + poetry-version: 1.1.12 - name: Install dependencies run: poetry install - uses: grantmcconnaughey/lintly-flake8-github-action@v1.0 From 80c851e750bafdf66096e5aba11ec93f3b9b4910 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:31:32 +0200 Subject: [PATCH 028/182] no setup --- .github/workflows/lint.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index fc7e573..3415172 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,8 +6,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - - name: Run image + - name: Install poetry uses: abatilo/actions-poetry@v2.0.0 with: poetry-version: 1.1.12 From 2d8ddcb3cb949d9b3cf29f832df9a9d7a264f37c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:33:59 +0200 Subject: [PATCH 029/182] setup github token --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3415172..cd20671 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: - uses: grantmcconnaughey/lintly-flake8-github-action@v1.0 with: # The GitHub API token to create reviews with - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.ACTION_GITHUB_TOKEN }} # Fail if "new" violations detected or "any", default "new" failIf: new # Additional arguments to be black compliant From dd53d646ce10ffac5f91e2e6027964a26445aa3b Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:41:27 +0200 Subject: [PATCH 030/182] bypass action issue: https://github.com/grantmcconnaughey/lintly-flake8-github-action/issues/17 --- .github/workflows/lint.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index cd20671..0e87930 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -12,10 +12,10 @@ jobs: poetry-version: 1.1.12 - name: Install dependencies run: poetry install - - uses: grantmcconnaughey/lintly-flake8-github-action@v1.0 + - uses: usama2490/lintly-flake8-github-action@v1.1 with: # The GitHub API token to create reviews with - token: ${{ secrets.ACTION_GITHUB_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }} # Fail if "new" violations detected or "any", default "new" failIf: new # Additional arguments to be black compliant From a20920a1c7e51623b3d9b233247bdec13dd83c70 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:44:24 +0200 Subject: [PATCH 031/182] conf token --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0e87930..4f59cad 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: - uses: usama2490/lintly-flake8-github-action@v1.1 with: # The GitHub API token to create reviews with - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.ACTION_GITHUB_TOKEN }} # Fail if "new" violations detected or "any", default "new" failIf: new # Additional arguments to be black compliant From 339d9e5ddfd90e407e95d244957483caca58c618 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:53:38 +0200 Subject: [PATCH 032/182] fix perms --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4f59cad..0e87930 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: - uses: usama2490/lintly-flake8-github-action@v1.1 with: # The GitHub API token to create reviews with - token: ${{ secrets.ACTION_GITHUB_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }} # Fail if "new" violations detected or "any", default "new" failIf: new # Additional arguments to be black compliant From e2e1abcca648af5888e04b11a6457936d0473ace Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 26 Apr 2022 08:03:47 +0200 Subject: [PATCH 033/182] Update lint.yml --- .github/workflows/lint.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0e87930..939ad11 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,8 +15,8 @@ jobs: - uses: usama2490/lintly-flake8-github-action@v1.1 with: # The GitHub API token to create reviews with - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.ACTION_GITHUB_TOKEN }} # Fail if "new" violations detected or "any", default "new" failIf: new # Additional arguments to be black compliant - args: "--max-line-length=88 --extend-ignore=E203 --exclude=*/tests/*" \ No newline at end of file + args: "--max-line-length=88 --extend-ignore=E203 --exclude=*/tests/*" From 2f23c523b10ec748cebf506fe6c24abba4a1b021 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 26 Apr 2022 08:10:03 +0200 Subject: [PATCH 034/182] Update lint.yml --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 939ad11..190c8e8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: - uses: usama2490/lintly-flake8-github-action@v1.1 with: # The GitHub API token to create reviews with - token: ${{ secrets.ACTION_GITHUB_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }} # Fail if "new" violations detected or "any", default "new" failIf: new # Additional arguments to be black compliant From 68ea4204c2d1856635bff1c83d2884bd4a5f5bb5 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:05:00 +0200 Subject: [PATCH 035/182] Create flake8.ini --- flake8.ini | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 flake8.ini diff --git a/flake8.ini b/flake8.ini new file mode 100644 index 0000000..78f2d54 --- /dev/null +++ b/flake8.ini @@ -0,0 +1,4 @@ +[flake8] +max-line-length = 88 +extend-ignore = E203 +exclude = */tests/* From 3761b4ee9cbb9910d2a0e88a41f1dbfeb22ee707 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:05:06 +0200 Subject: [PATCH 036/182] Update lint.yml --- .github/workflows/lint.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 190c8e8..6e28ecd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,17 +6,21 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: "3.9.9" - name: Install poetry uses: abatilo/actions-poetry@v2.0.0 with: poetry-version: 1.1.12 - name: Install dependencies run: poetry install - - uses: usama2490/lintly-flake8-github-action@v1.1 + - name: Run flake8 + uses: julianwachholz/flake8-action@v2 with: - # The GitHub API token to create reviews with - token: ${{ secrets.GITHUB_TOKEN }} - # Fail if "new" violations detected or "any", default "new" - failIf: new - # Additional arguments to be black compliant - args: "--max-line-length=88 --extend-ignore=E203 --exclude=*/tests/*" + checkName: "Python Lint" + path: path/to/files + plugins: flake8-spellcheck + config: flake8.ini + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 6aba82a7ad689e2cc1345a264e86f48fdf5fb2da Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:10:21 +0200 Subject: [PATCH 037/182] Update lint.yml --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6e28ecd..5bbba5f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,7 +19,7 @@ jobs: uses: julianwachholz/flake8-action@v2 with: checkName: "Python Lint" - path: path/to/files + path: . plugins: flake8-spellcheck config: flake8.ini env: From 5a286fa0d2ae3747eca6e26d4a2bf5708081a11c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:26:58 +0200 Subject: [PATCH 038/182] Update flake8.ini --- flake8.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/flake8.ini b/flake8.ini index 78f2d54..01ad95a 100644 --- a/flake8.ini +++ b/flake8.ini @@ -2,3 +2,4 @@ max-line-length = 88 extend-ignore = E203 exclude = */tests/* +spellcheck-targets=comments From 325455439a1bb97c5b20ad9762deaa4f1878e5a9 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 26 Apr 2022 20:51:42 +0200 Subject: [PATCH 039/182] black --- dbmigration/create_empty_db.py | 18 +- dbmigration/migrate_from_1.1_to_2.0.py | 20 +- poetry.lock | 498 +++++++------------------ pyproject.toml | 8 +- run.py | 5 +- stacosys.code-workspace | 8 + stacosys/core/mailer.py | 16 +- stacosys/core/rss.py | 22 +- stacosys/db/dao.py | 17 +- stacosys/db/database.py | 1 + stacosys/interface/form.py | 4 +- stacosys/interface/web/admin.py | 40 +- tests/test_api.py | 28 +- tests/test_config.py | 5 +- tests/test_db.py | 3 +- tests/test_form.py | 25 +- tests/test_stacosys.py | 1 - whitelist.txt | 1 + 18 files changed, 261 insertions(+), 459 deletions(-) create mode 100644 stacosys.code-workspace create mode 100644 whitelist.txt diff --git a/dbmigration/create_empty_db.py b/dbmigration/create_empty_db.py index a597869..987eab1 100644 --- a/dbmigration/create_empty_db.py +++ b/dbmigration/create_empty_db.py @@ -9,16 +9,16 @@ cursor = connection.cursor() script = """ CREATE TABLE comment ( id INTEGER NOT NULL PRIMARY KEY, - url VARCHAR(255) NOT NULL, - notified DATETIME, - created DATETIME NOT NULL, - published DATETIME, - author_name VARCHAR(255) NOT NULL, - author_site VARCHAR(255) NOT NULL, - author_gravatar varchar(255), - content TEXT NOT NULL + url VARCHAR(255) NOT NULL, + notified DATETIME, + created DATETIME NOT NULL, + published DATETIME, + author_name VARCHAR(255) NOT NULL, + author_site VARCHAR(255) NOT NULL, + author_gravatar varchar(255), + content TEXT NOT NULL , ulid INTEGER); """ cursor.executescript(script) -connection.close() \ No newline at end of file +connection.close() diff --git a/dbmigration/migrate_from_1.1_to_2.0.py b/dbmigration/migrate_from_1.1_to_2.0.py index 396f576..9870d25 100644 --- a/dbmigration/migrate_from_1.1_to_2.0.py +++ b/dbmigration/migrate_from_1.1_to_2.0.py @@ -6,7 +6,7 @@ import sqlite3 connection = sqlite3.connect("db.sqlite") cursor = connection.cursor() -# What script performs: +# What script performs: # - first, remove site table: crash here if table doesn't exist (compatibility test without effort) # - remove site_id colum from comment table script = """ @@ -16,14 +16,14 @@ DROP TABLE site; ALTER TABLE comment RENAME TO _comment_old; CREATE TABLE comment ( id INTEGER NOT NULL PRIMARY KEY, - url VARCHAR(255) NOT NULL, - notified DATETIME, - created DATETIME NOT NULL, - published DATETIME, - author_name VARCHAR(255) NOT NULL, - author_site VARCHAR(255) NOT NULL, - author_gravatar varchar(255), - content TEXT NOT NULL + url VARCHAR(255) NOT NULL, + notified DATETIME, + created DATETIME NOT NULL, + published DATETIME, + author_name VARCHAR(255) NOT NULL, + author_site VARCHAR(255) NOT NULL, + author_gravatar varchar(255), + content TEXT NOT NULL ); INSERT INTO comment (id, url, notified, created, published, author_name, author_site, author_gravatar, content) SELECT id, url, notified, created, published, author_name, author_site, author_gravatar, content @@ -34,4 +34,4 @@ PRAGMA foreign_keys = ON; """ cursor.executescript(script) -connection.close() \ No newline at end of file +connection.close() diff --git a/poetry.lock b/poetry.lock index a778f91..605f422 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,14 +1,6 @@ -[[package]] -name = "appdirs" -version = "1.4.4" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "apscheduler" -version = "3.8.1" +version = "3.9.1" description = "In-process task scheduler with Cron-like capabilities" category = "main" optional = false @@ -27,7 +19,7 @@ mongodb = ["pymongo (>=3.0)"] redis = ["redis (>=3.0)"] rethinkdb = ["rethinkdb (>=2.4.0)"] sqlalchemy = ["sqlalchemy (>=0.8)"] -testing = ["pytest (<6)", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] +testing = ["pytest", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] tornado = ["tornado (>=4.3)"] twisted = ["twisted"] zookeeper = ["kazoo"] @@ -75,25 +67,25 @@ tzdata = ["tzdata"] [[package]] name = "black" -version = "20.8b1" +version = "22.3.0" description = "The uncompromising code formatter." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.2" [package.dependencies] -appdirs = "*" -click = ">=7.1.2" +click = ">=8.0.0" mypy-extensions = ">=0.4.3" -pathspec = ">=0.6,<1" -regex = ">=2020.1.8" -toml = ">=0.10.1" -typed-ast = ">=1.4.0" -typing-extensions = ">=3.7.4" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" @@ -116,11 +108,11 @@ unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.0.4" +version = "8.1.2" description = "Composable command line interface toolkit" -category = "main" +category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} @@ -203,34 +195,16 @@ pyflakes = ">=2.4.0,<2.5.0" [[package]] name = "flake8-black" -version = "0.2.4" +version = "0.3.2" description = "flake8 plugin to call black as a code style validator" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] -black = "*" +black = ">=22.1.0" flake8 = ">=3.0.0" -toml = "*" - -[[package]] -name = "flask" -version = "2.0.3" -description = "A simple framework for building complex web applications." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -click = ">=7.1.2" -itsdangerous = ">=2.0" -Jinja2 = ">=3.0" -Werkzeug = ">=2.0" - -[package.extras] -async = ["asgiref (>=3.2)"] -dotenv = ["python-dotenv"] +tomli = "*" [[package]] name = "idna" @@ -242,7 +216,7 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.11.1" +version = "4.11.3" description = "Read metadata from Python packages" category = "main" optional = false @@ -252,7 +226,7 @@ python-versions = ">=3.7" zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] @@ -264,28 +238,6 @@ category = "dev" optional = false python-versions = "*" -[[package]] -name = "itsdangerous" -version = "2.1.0" -description = "Safely pass data to untrusted environments and back." -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "jinja2" -version = "3.0.3" -description = "A very fast and expressive template engine." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - [[package]] name = "markdown" version = "3.3.6" @@ -300,14 +252,6 @@ importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} [package.extras] testing = ["coverage", "pyyaml"] -[[package]] -name = "markupsafe" -version = "2.1.0" -description = "Safely add untrusted strings to HTML/XML markup." -category = "main" -optional = false -python-versions = ">=3.7" - [[package]] name = "mccabe" version = "0.6.1" @@ -318,19 +262,21 @@ python-versions = "*" [[package]] name = "mypy" -version = "0.790" +version = "0.942" description = "Optional static typing for Python" category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [package.dependencies] -mypy-extensions = ">=0.4.3,<0.5.0" -typed-ast = ">=1.4.0,<1.5.0" -typing-extensions = ">=3.7.4" +mypy-extensions = ">=0.4.3" +tomli = ">=1.1.0" +typing-extensions = ">=3.10" [package.extras] dmypy = ["psutil (>=4.0)"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] [[package]] name = "mypy-extensions" @@ -361,7 +307,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "peewee" -version = "3.14.9" +version = "3.14.10" description = "a little orm" category = "main" optional = false @@ -369,15 +315,15 @@ python-versions = "*" [[package]] name = "platformdirs" -version = "2.5.0" +version = "2.5.2" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] -test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] [[package]] name = "pluggy" @@ -425,14 +371,14 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pyparsing" -version = "3.0.7" -description = "Python parsing module" +version = "3.0.8" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.8" [package.extras] -diagrams = ["jinja2", "railroad-diagrams"] +diagrams = ["railroad-diagrams", "jinja2"] [[package]] name = "pyrss2gen" @@ -481,7 +427,7 @@ testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtuale [[package]] name = "pytz" -version = "2021.3" +version = "2022.1" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -499,14 +445,6 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" "backports.zoneinfo" = {version = "*", markers = "python_version >= \"3.6\" and python_version < \"3.9\""} tzdata = {version = "*", markers = "python_version >= \"3.6\""} -[[package]] -name = "regex" -version = "2022.1.18" -description = "Alternative regular expression module, to replace re." -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "requests" version = "2.27.1" @@ -525,17 +463,6 @@ urllib3 = ">=1.21.1,<1.27" socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] -[[package]] -name = "rope" -version = "0.16.0" -description = "a python refactoring library..." -category = "dev" -optional = false -python-versions = "*" - -[package.extras] -dev = ["pytest"] - [[package]] name = "six" version = "1.16.0" @@ -552,9 +479,17 @@ category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" + [[package]] name = "tox" -version = "3.24.5" +version = "3.25.0" description = "tox is a generic virtualenv management and test command line tool" category = "main" optional = false @@ -574,25 +509,17 @@ virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2, docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] -[[package]] -name = "typed-ast" -version = "1.4.3" -description = "a fork of Python 2 and 3 ast modules with type comment support" -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "typing-extensions" -version = "4.1.1" -description = "Backported and Experimental Type Hints for Python 3.6+" +version = "4.2.0" +description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "tzdata" -version = "2021.5" +version = "2022.1" description = "Provider of IANA time zone data" category = "main" optional = false @@ -600,7 +527,7 @@ python-versions = ">=2" [[package]] name = "tzlocal" -version = "4.1" +version = "4.2" description = "tzinfo object for the local timezone" category = "main" optional = false @@ -617,20 +544,20 @@ test = ["pytest-mock (>=3.3)", "pytest (>=4.3)"] [[package]] name = "urllib3" -version = "1.26.8" +version = "1.26.9" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] -brotli = ["brotlipy (>=0.6.0)"] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.13.1" +version = "20.14.1" description = "Virtual Python Environment builder" category = "main" optional = false @@ -646,42 +573,27 @@ six = ">=1.9.0,<2" docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] -[[package]] -name = "werkzeug" -version = "2.0.3" -description = "The comprehensive WSGI web application library." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -watchdog = ["watchdog"] - [[package]] name = "zipp" -version = "3.7.0" +version = "3.8.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "1db9a9c6f78a4148493fa7ab87741373fd6eccd7c078657de7dd00d3af8482b9" +content-hash = "98643b0bfca472ab7d13b291c2a45c5d4c4b94a8ca42c8e47f0dd92bb75fea98" [metadata.files] -appdirs = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, -] apscheduler = [ - {file = "APScheduler-3.8.1-py2.py3-none-any.whl", hash = "sha256:c22cb14b411a31435eb2c530dfbbec948ac63015b517087c7978adb61b574865"}, - {file = "APScheduler-3.8.1.tar.gz", hash = "sha256:5cf344ebcfbdaa48ae178c029c055cec7bc7a4a47c21e315e4d1f08bd35f2355"}, + {file = "APScheduler-3.9.1-py2.py3-none-any.whl", hash = "sha256:ddc25a0ddd899de44d7f451f4375fb971887e65af51e41e5dcf681f59b8b2c9a"}, + {file = "APScheduler-3.9.1.tar.gz", hash = "sha256:65e6574b6395498d371d045f2a8a7e4f7d50c6ad21ef7313d15b1c7cf20df1e3"}, ] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, @@ -714,7 +626,29 @@ background = [ {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, ] black = [ - {file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"}, + {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, + {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, + {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, + {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, + {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, + {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, + {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, + {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, + {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, + {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, + {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, + {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, + {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, + {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, + {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, + {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, + {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, + {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, + {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, + {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, + {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, + {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, + {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, ] certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, @@ -725,8 +659,8 @@ charset-normalizer = [ {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] click = [ - {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, - {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, + {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, + {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, ] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, @@ -806,98 +740,53 @@ flake8 = [ {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, ] flake8-black = [ - {file = "flake8-black-0.2.4.tar.gz", hash = "sha256:a7871bfd1cbff431a1fc91ba60ae154510c80f575e6b9a2bbb13dfb4650afd22"}, - {file = "flake8_black-0.2.4-py3-none-any.whl", hash = "sha256:0a70dfd97c8439827f365dc6dbc6c8c9cc087f0833625c6cc6848ff7876256be"}, -] -flask = [ - {file = "Flask-2.0.3-py3-none-any.whl", hash = "sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f"}, - {file = "Flask-2.0.3.tar.gz", hash = "sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d"}, + {file = "flake8-black-0.3.2.tar.gz", hash = "sha256:6f6bf198f3f45df43245d1d1a0ba2035ee5817d167680f9e1af23cde70cb7548"}, + {file = "flake8_black-0.3.2-py3-none-any.whl", hash = "sha256:9c86b24ede16a80555808c6c4779d81bc54cff57d0dd1980029c0e4b39ac8b45"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.11.1-py3-none-any.whl", hash = "sha256:e0bc84ff355328a4adfc5240c4f211e0ab386f80aa640d1b11f0618a1d282094"}, - {file = "importlib_metadata-4.11.1.tar.gz", hash = "sha256:175f4ee440a0317f6e8d81b7f8d4869f93316170a65ad2b007d2929186c8052c"}, + {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, + {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] -itsdangerous = [ - {file = "itsdangerous-2.1.0-py3-none-any.whl", hash = "sha256:29285842166554469a56d427addc0843914172343784cb909695fdbe90a3e129"}, - {file = "itsdangerous-2.1.0.tar.gz", hash = "sha256:d848fcb8bc7d507c4546b448574e8a44fc4ea2ba84ebf8d783290d53e81992f5"}, -] -jinja2 = [ - {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, - {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, -] markdown = [ {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, ] -markupsafe = [ - {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3028252424c72b2602a323f70fbf50aa80a5d3aa616ea6add4ba21ae9cc9da4c"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:290b02bab3c9e216da57c1d11d2ba73a9f73a614bbdcc027d299a60cdfabb11a"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e104c0c2b4cd765b4e83909cde7ec61a1e313f8a75775897db321450e928cce"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24c3be29abb6b34052fd26fc7a8e0a49b1ee9d282e3665e8ad09a0a68faee5b3"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204730fd5fe2fe3b1e9ccadb2bd18ba8712b111dcabce185af0b3b5285a7c989"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d3b64c65328cb4cd252c94f83e66e3d7acf8891e60ebf588d7b493a55a1dbf26"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:96de1932237abe0a13ba68b63e94113678c379dca45afa040a17b6e1ad7ed076"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75bb36f134883fdbe13d8e63b8675f5f12b80bb6627f7714c7d6c5becf22719f"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-win32.whl", hash = "sha256:4056f752015dfa9828dce3140dbadd543b555afb3252507348c493def166d454"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:d4e702eea4a2903441f2735799d217f4ac1b55f7d8ad96ab7d4e25417cb0827c"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f0eddfcabd6936558ec020130f932d479930581171368fd728efcfb6ef0dd357"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddea4c352a488b5e1069069f2f501006b1a4362cb906bee9a193ef1245a7a61"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09c86c9643cceb1d87ca08cdc30160d1b7ab49a8a21564868921959bd16441b8"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a0abef2ca47b33fb615b491ce31b055ef2430de52c5b3fb19a4042dbc5cadb"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:736895a020e31b428b3382a7887bfea96102c529530299f426bf2e636aacec9e"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:679cbb78914ab212c49c67ba2c7396dc599a8479de51b9a87b174700abd9ea49"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84ad5e29bf8bab3ad70fd707d3c05524862bddc54dc040982b0dbcff36481de7"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-win32.whl", hash = "sha256:8da5924cb1f9064589767b0f3fc39d03e3d0fb5aa29e0cb21d43106519bd624a"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:454ffc1cbb75227d15667c09f164a0099159da0c1f3d2636aa648f12675491ad"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:142119fb14a1ef6d758912b25c4e803c3ff66920635c44078666fe7cc3f8f759"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b2a5a856019d2833c56a3dcac1b80fe795c95f401818ea963594b345929dffa7"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d1fb9b2eec3c9714dd936860850300b51dbaa37404209c8d4cb66547884b7ed"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c0285e91414f5c8f621a17b69fc0088394ccdaa961ef469e833dbff64bd5ea"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f02cf7221d5cd915d7fa58ab64f7ee6dd0f6cddbb48683debf5d04ae9b1c2cc1"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5653619b3eb5cbd35bfba3c12d575db2a74d15e0e1c08bf1db788069d410ce8"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d2f5d97fcbd004c03df8d8fe2b973fe2b14e7bfeb2cfa012eaa8759ce9a762f"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-win32.whl", hash = "sha256:3cace1837bc84e63b3fd2dfce37f08f8c18aeb81ef5cf6bb9b51f625cb4e6cd8"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:023af8c54fe63530545f70dd2a2a7eed18d07a9a77b94e8bf1e2ff7f252db9a3"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d66624f04de4af8bbf1c7f21cc06649c1c69a7f84109179add573ce35e46d448"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c532d5ab79be0199fa2658e24a02fce8542df196e60665dd322409a03db6a52c"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ec74fada3841b8c5f4c4f197bea916025cb9aa3fe5abf7d52b655d042f956"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c653fde75a6e5eb814d2a0a89378f83d1d3f502ab710904ee585c38888816c"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:961eb86e5be7d0973789f30ebcf6caab60b844203f4396ece27310295a6082c7"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:598b65d74615c021423bd45c2bc5e9b59539c875a9bdb7e5f2a6b92dfcfc268d"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:599941da468f2cf22bf90a84f6e2a65524e87be2fce844f96f2dd9a6c9d1e635"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-win32.whl", hash = "sha256:e6f7f3f41faffaea6596da86ecc2389672fa949bd035251eab26dc6697451d05"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7"}, - {file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"}, -] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] mypy = [ - {file = "mypy-0.790-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:bd03b3cf666bff8d710d633d1c56ab7facbdc204d567715cb3b9f85c6e94f669"}, - {file = "mypy-0.790-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:2170492030f6faa537647d29945786d297e4862765f0b4ac5930ff62e300d802"}, - {file = "mypy-0.790-cp35-cp35m-win_amd64.whl", hash = "sha256:e86bdace26c5fe9cf8cb735e7cedfe7850ad92b327ac5d797c656717d2ca66de"}, - {file = "mypy-0.790-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e97e9c13d67fbe524be17e4d8025d51a7dca38f90de2e462243ab8ed8a9178d1"}, - {file = "mypy-0.790-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0d34d6b122597d48a36d6c59e35341f410d4abfa771d96d04ae2c468dd201abc"}, - {file = "mypy-0.790-cp36-cp36m-win_amd64.whl", hash = "sha256:72060bf64f290fb629bd4a67c707a66fd88ca26e413a91384b18db3876e57ed7"}, - {file = "mypy-0.790-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:eea260feb1830a627fb526d22fbb426b750d9f5a47b624e8d5e7e004359b219c"}, - {file = "mypy-0.790-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:c614194e01c85bb2e551c421397e49afb2872c88b5830e3554f0519f9fb1c178"}, - {file = "mypy-0.790-cp37-cp37m-win_amd64.whl", hash = "sha256:0a0d102247c16ce93c97066443d11e2d36e6cc2a32d8ccc1f705268970479324"}, - {file = "mypy-0.790-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cf4e7bf7f1214826cf7333627cb2547c0db7e3078723227820d0a2490f117a01"}, - {file = "mypy-0.790-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:af4e9ff1834e565f1baa74ccf7ae2564ae38c8df2a85b057af1dbbc958eb6666"}, - {file = "mypy-0.790-cp38-cp38-win_amd64.whl", hash = "sha256:da56dedcd7cd502ccd3c5dddc656cb36113dd793ad466e894574125945653cea"}, - {file = "mypy-0.790-py3-none-any.whl", hash = "sha256:2842d4fbd1b12ab422346376aad03ff5d0805b706102e475e962370f874a5122"}, - {file = "mypy-0.790.tar.gz", hash = "sha256:2b21ba45ad9ef2e2eb88ce4aeadd0112d0f5026418324176fd494a6824b74975"}, + {file = "mypy-0.942-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5bf44840fb43ac4074636fd47ee476d73f0039f4f54e86d7265077dc199be24d"}, + {file = "mypy-0.942-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dcd955f36e0180258a96f880348fbca54ce092b40fbb4b37372ae3b25a0b0a46"}, + {file = "mypy-0.942-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6776e5fa22381cc761df53e7496a805801c1a751b27b99a9ff2f0ca848c7eca0"}, + {file = "mypy-0.942-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:edf7237137a1a9330046dbb14796963d734dd740a98d5e144a3eb1d267f5f9ee"}, + {file = "mypy-0.942-cp310-cp310-win_amd64.whl", hash = "sha256:64235137edc16bee6f095aba73be5334677d6f6bdb7fa03cfab90164fa294a17"}, + {file = "mypy-0.942-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b840cfe89c4ab6386c40300689cd8645fc8d2d5f20101c7f8bd23d15fca14904"}, + {file = "mypy-0.942-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2b184db8c618c43c3a31b32ff00cd28195d39e9c24e7c3b401f3db7f6e5767f5"}, + {file = "mypy-0.942-cp36-cp36m-win_amd64.whl", hash = "sha256:1a0459c333f00e6a11cbf6b468b870c2b99a906cb72d6eadf3d1d95d38c9352c"}, + {file = "mypy-0.942-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4c3e497588afccfa4334a9986b56f703e75793133c4be3a02d06a3df16b67a58"}, + {file = "mypy-0.942-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f6ad963172152e112b87cc7ec103ba0f2db2f1cd8997237827c052a3903eaa6"}, + {file = "mypy-0.942-cp37-cp37m-win_amd64.whl", hash = "sha256:0e2dd88410937423fba18e57147dd07cd8381291b93d5b1984626f173a26543e"}, + {file = "mypy-0.942-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:246e1aa127d5b78488a4a0594bd95f6d6fb9d63cf08a66dafbff8595d8891f67"}, + {file = "mypy-0.942-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d8d3ba77e56b84cd47a8ee45b62c84b6d80d32383928fe2548c9a124ea0a725c"}, + {file = "mypy-0.942-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2bc249409a7168d37c658e062e1ab5173300984a2dada2589638568ddc1db02b"}, + {file = "mypy-0.942-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9521c1265ccaaa1791d2c13582f06facf815f426cd8b07c3a485f486a8ffc1f3"}, + {file = "mypy-0.942-cp38-cp38-win_amd64.whl", hash = "sha256:e865fec858d75b78b4d63266c9aff770ecb6a39dfb6d6b56c47f7f8aba6baba8"}, + {file = "mypy-0.942-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6ce34a118d1a898f47def970a2042b8af6bdcc01546454726c7dd2171aa6dfca"}, + {file = "mypy-0.942-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:10daab80bc40f84e3f087d896cdb53dc811a9f04eae4b3f95779c26edee89d16"}, + {file = "mypy-0.942-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3841b5433ff936bff2f4dc8d54cf2cdbfea5d8e88cedfac45c161368e5770ba6"}, + {file = "mypy-0.942-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f7106cbf9cc2f403693bf50ed7c9fa5bb3dfa9007b240db3c910929abe2a322"}, + {file = "mypy-0.942-cp39-cp39-win_amd64.whl", hash = "sha256:7742d2c4e46bb5017b51c810283a6a389296cda03df805a4f7869a6f41246534"}, + {file = "mypy-0.942-py3-none-any.whl", hash = "sha256:a1b383fe99678d7402754fe90448d4037f9512ce70c21f8aee3b8bf48ffc51db"}, + {file = "mypy-0.942.tar.gz", hash = "sha256:17e44649fec92e9f82102b48a3bf7b4a5510ad0cd22fa21a104826b5db4903e2"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, @@ -912,11 +801,11 @@ pathspec = [ {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] peewee = [ - {file = "peewee-3.14.9.tar.gz", hash = "sha256:69c1b88dc89b184231cc1ce6df241075aca5cec43e89749cc4a63108f9ceea47"}, + {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, ] platformdirs = [ - {file = "platformdirs-2.5.0-py3-none-any.whl", hash = "sha256:30671902352e97b1eafd74ade8e4a694782bd3471685e78c32d0fdfd3aa7e7bb"}, - {file = "platformdirs-2.5.0.tar.gz", hash = "sha256:8ec11dfba28ecc0715eb5fb0147a87b1bf325f349f3da9aab2cd6b50b96b692b"}, + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, @@ -938,8 +827,8 @@ pyflakes = [ {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, ] pyparsing = [ - {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, - {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, + {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, + {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, ] pyrss2gen = [ {file = "PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7"}, @@ -953,98 +842,17 @@ pytest-cov = [ {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, ] pytz = [ - {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, - {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, ] pytz-deprecation-shim = [ {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, ] -regex = [ - {file = "regex-2022.1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:34316bf693b1d2d29c087ee7e4bb10cdfa39da5f9c50fa15b07489b4ab93a1b5"}, - {file = "regex-2022.1.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a0b9f6a1a15d494b35f25ed07abda03209fa76c33564c09c9e81d34f4b919d7"}, - {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f99112aed4fb7cee00c7f77e8b964a9b10f69488cdff626ffd797d02e2e4484f"}, - {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a2bf98ac92f58777c0fafc772bf0493e67fcf677302e0c0a630ee517a43b949"}, - {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8618d9213a863c468a865e9d2ec50221015f7abf52221bc927152ef26c484b4c"}, - {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b52cc45e71657bc4743a5606d9023459de929b2a198d545868e11898ba1c3f59"}, - {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e12949e5071c20ec49ef00c75121ed2b076972132fc1913ddf5f76cae8d10b4"}, - {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b02e3e72665cd02afafb933453b0c9f6c59ff6e3708bd28d0d8580450e7e88af"}, - {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abfcb0ef78df0ee9df4ea81f03beea41849340ce33a4c4bd4dbb99e23ec781b6"}, - {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6213713ac743b190ecbf3f316d6e41d099e774812d470422b3a0f137ea635832"}, - {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:61ebbcd208d78658b09e19c78920f1ad38936a0aa0f9c459c46c197d11c580a0"}, - {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b013f759cd69cb0a62de954d6d2096d648bc210034b79b1881406b07ed0a83f9"}, - {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9187500d83fd0cef4669385cbb0961e227a41c0c9bc39219044e35810793edf7"}, - {file = "regex-2022.1.18-cp310-cp310-win32.whl", hash = "sha256:94c623c331a48a5ccc7d25271399aff29729fa202c737ae3b4b28b89d2b0976d"}, - {file = "regex-2022.1.18-cp310-cp310-win_amd64.whl", hash = "sha256:1a171eaac36a08964d023eeff740b18a415f79aeb212169080c170ec42dd5184"}, - {file = "regex-2022.1.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:49810f907dfe6de8da5da7d2b238d343e6add62f01a15d03e2195afc180059ed"}, - {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d2f5c3f7057530afd7b739ed42eb04f1011203bc5e4663e1e1d01bb50f813e3"}, - {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85ffd6b1cb0dfb037ede50ff3bef80d9bf7fa60515d192403af6745524524f3b"}, - {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba37f11e1d020969e8a779c06b4af866ffb6b854d7229db63c5fdddfceaa917f"}, - {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e27ea1ebe4a561db75a880ac659ff439dec7f55588212e71700bb1ddd5af9"}, - {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37978254d9d00cda01acc1997513f786b6b971e57b778fbe7c20e30ae81a97f3"}, - {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54a1eb9fd38f2779e973d2f8958fd575b532fe26013405d1afb9ee2374e7ab8"}, - {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:768632fd8172ae03852e3245f11c8a425d95f65ff444ce46b3e673ae5b057b74"}, - {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:de2923886b5d3214be951bc2ce3f6b8ac0d6dfd4a0d0e2a4d2e5523d8046fdfb"}, - {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1333b3ce73269f986b1fa4d5d395643810074dc2de5b9d262eb258daf37dc98f"}, - {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:d19a34f8a3429bd536996ad53597b805c10352a8561d8382e05830df389d2b43"}, - {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d2f355a951f60f0843f2368b39970e4667517e54e86b1508e76f92b44811a8a"}, - {file = "regex-2022.1.18-cp36-cp36m-win32.whl", hash = "sha256:2245441445099411b528379dee83e56eadf449db924648e5feb9b747473f42e3"}, - {file = "regex-2022.1.18-cp36-cp36m-win_amd64.whl", hash = "sha256:25716aa70a0d153cd844fe861d4f3315a6ccafce22b39d8aadbf7fcadff2b633"}, - {file = "regex-2022.1.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7e070d3aef50ac3856f2ef5ec7214798453da878bb5e5a16c16a61edf1817cc3"}, - {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22709d701e7037e64dae2a04855021b62efd64a66c3ceed99dfd684bfef09e38"}, - {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9099bf89078675c372339011ccfc9ec310310bf6c292b413c013eb90ffdcafc"}, - {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04611cc0f627fc4a50bc4a9a2e6178a974c6a6a4aa9c1cca921635d2c47b9c87"}, - {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:552a39987ac6655dad4bf6f17dd2b55c7b0c6e949d933b8846d2e312ee80005a"}, - {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e031899cb2bc92c0cf4d45389eff5b078d1936860a1be3aa8c94fa25fb46ed8"}, - {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2dacb3dae6b8cc579637a7b72f008bff50a94cde5e36e432352f4ca57b9e54c4"}, - {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e5c31d70a478b0ca22a9d2d76d520ae996214019d39ed7dd93af872c7f301e52"}, - {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb804c7d0bfbd7e3f33924ff49757de9106c44e27979e2492819c16972ec0da2"}, - {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:36b2d700a27e168fa96272b42d28c7ac3ff72030c67b32f37c05616ebd22a202"}, - {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:16f81025bb3556eccb0681d7946e2b35ff254f9f888cff7d2120e8826330315c"}, - {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:da80047524eac2acf7c04c18ac7a7da05a9136241f642dd2ed94269ef0d0a45a"}, - {file = "regex-2022.1.18-cp37-cp37m-win32.whl", hash = "sha256:6ca45359d7a21644793de0e29de497ef7f1ae7268e346c4faf87b421fea364e6"}, - {file = "regex-2022.1.18-cp37-cp37m-win_amd64.whl", hash = "sha256:38289f1690a7e27aacd049e420769b996826f3728756859420eeee21cc857118"}, - {file = "regex-2022.1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6014038f52b4b2ac1fa41a58d439a8a00f015b5c0735a0cd4b09afe344c94899"}, - {file = "regex-2022.1.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b5d6f9aed3153487252d00a18e53f19b7f52a1651bc1d0c4b5844bc286dfa52"}, - {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d24b03daf7415f78abc2d25a208f234e2c585e5e6f92f0204d2ab7b9ab48e3"}, - {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf594cc7cc9d528338d66674c10a5b25e3cde7dd75c3e96784df8f371d77a298"}, - {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd914db437ec25bfa410f8aa0aa2f3ba87cdfc04d9919d608d02330947afaeab"}, - {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90b6840b6448203228a9d8464a7a0d99aa8fa9f027ef95fe230579abaf8a6ee1"}, - {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11772be1eb1748e0e197a40ffb82fb8fd0d6914cd147d841d9703e2bef24d288"}, - {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a602bdc8607c99eb5b391592d58c92618dcd1537fdd87df1813f03fed49957a6"}, - {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7e26eac9e52e8ce86f915fd33380f1b6896a2b51994e40bb094841e5003429b4"}, - {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:519c0b3a6fbb68afaa0febf0d28f6c4b0a1074aefc484802ecb9709faf181607"}, - {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3c7ea86b9ca83e30fa4d4cd0eaf01db3ebcc7b2726a25990966627e39577d729"}, - {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:51f02ca184518702975b56affde6c573ebad4e411599005ce4468b1014b4786c"}, - {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:385ccf6d011b97768a640e9d4de25412204fbe8d6b9ae39ff115d4ff03f6fe5d"}, - {file = "regex-2022.1.18-cp38-cp38-win32.whl", hash = "sha256:1f8c0ae0a0de4e19fddaaff036f508db175f6f03db318c80bbc239a1def62d02"}, - {file = "regex-2022.1.18-cp38-cp38-win_amd64.whl", hash = "sha256:760c54ad1b8a9b81951030a7e8e7c3ec0964c1cb9fee585a03ff53d9e531bb8e"}, - {file = "regex-2022.1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:93c20777a72cae8620203ac11c4010365706062aa13aaedd1a21bb07adbb9d5d"}, - {file = "regex-2022.1.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6aa427c55a0abec450bca10b64446331b5ca8f79b648531138f357569705bc4a"}, - {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38baee6bdb7fe1b110b6b3aaa555e6e872d322206b7245aa39572d3fc991ee4"}, - {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:752e7ddfb743344d447367baa85bccd3629c2c3940f70506eb5f01abce98ee68"}, - {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8acef4d8a4353f6678fd1035422a937c2170de58a2b29f7da045d5249e934101"}, - {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c73d2166e4b210b73d1429c4f1ca97cea9cc090e5302df2a7a0a96ce55373f1c"}, - {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24c89346734a4e4d60ecf9b27cac4c1fee3431a413f7aa00be7c4d7bbacc2c4d"}, - {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:596f5ae2eeddb79b595583c2e0285312b2783b0ec759930c272dbf02f851ff75"}, - {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ecfe51abf7f045e0b9cdde71ca9e153d11238679ef7b5da6c82093874adf3338"}, - {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1d6301f5288e9bdca65fab3de6b7de17362c5016d6bf8ee4ba4cbe833b2eda0f"}, - {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:93cce7d422a0093cfb3606beae38a8e47a25232eea0f292c878af580a9dc7605"}, - {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cf0db26a1f76aa6b3aa314a74b8facd586b7a5457d05b64f8082a62c9c49582a"}, - {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:defa0652696ff0ba48c8aff5a1fac1eef1ca6ac9c660b047fc8e7623c4eb5093"}, - {file = "regex-2022.1.18-cp39-cp39-win32.whl", hash = "sha256:6db1b52c6f2c04fafc8da17ea506608e6be7086715dab498570c3e55e4f8fbd1"}, - {file = "regex-2022.1.18-cp39-cp39-win_amd64.whl", hash = "sha256:ebaeb93f90c0903233b11ce913a7cb8f6ee069158406e056f884854c737d2442"}, - {file = "regex-2022.1.18.tar.gz", hash = "sha256:97f32dc03a8054a4c4a5ab5d761ed4861e828b2c200febd4e46857069a483916"}, -] requests = [ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] -rope = [ - {file = "rope-0.16.0-py2-none-any.whl", hash = "sha256:ae1fa2fd56f64f4cc9be46493ce54bed0dd12dee03980c61a4393d89d84029ad"}, - {file = "rope-0.16.0-py3-none-any.whl", hash = "sha256:52423a7eebb5306a6d63bdc91a7c657db51ac9babfb8341c9a1440831ecf3203"}, - {file = "rope-0.16.0.tar.gz", hash = "sha256:d2830142c2e046f5fc26a022fe680675b6f48f81c7fc1f03a950706e746e9dfe"}, -] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -1053,67 +861,35 @@ toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] -tox = [ - {file = "tox-3.24.5-py2.py3-none-any.whl", hash = "sha256:be3362472a33094bce26727f5f771ca0facf6dafa217f65875314e9a6600c95c"}, - {file = "tox-3.24.5.tar.gz", hash = "sha256:67e0e32c90e278251fea45b696d0fef3879089ccbe979b0c556d35d5a70e2993"}, +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -typed-ast = [ - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"}, - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"}, - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528"}, - {file = "typed_ast-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428"}, - {file = "typed_ast-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3"}, - {file = "typed_ast-1.4.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f"}, - {file = "typed_ast-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363"}, - {file = "typed_ast-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7"}, - {file = "typed_ast-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899"}, - {file = "typed_ast-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c"}, - {file = "typed_ast-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805"}, - {file = "typed_ast-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39"}, - {file = "typed_ast-1.4.3-cp38-cp38-win32.whl", hash = "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927"}, - {file = "typed_ast-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40"}, - {file = "typed_ast-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3"}, - {file = "typed_ast-1.4.3-cp39-cp39-win32.whl", hash = "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808"}, - {file = "typed_ast-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c"}, - {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"}, +tox = [ + {file = "tox-3.25.0-py2.py3-none-any.whl", hash = "sha256:0805727eb4d6b049de304977dfc9ce315a1938e6619c3ab9f38682bb04662a5a"}, + {file = "tox-3.25.0.tar.gz", hash = "sha256:37888f3092aa4e9f835fc8cc6dadbaaa0782651c41ef359e3a5743fcb0308160"}, ] typing-extensions = [ - {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, - {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, + {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, + {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, ] tzdata = [ - {file = "tzdata-2021.5-py2.py3-none-any.whl", hash = "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5"}, - {file = "tzdata-2021.5.tar.gz", hash = "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21"}, + {file = "tzdata-2022.1-py2.py3-none-any.whl", hash = "sha256:238e70234214138ed7b4e8a0fab0e5e13872edab3be586ab8198c407620e2ab9"}, + {file = "tzdata-2022.1.tar.gz", hash = "sha256:8b536a8ec63dc0751342b3984193a3118f8fca2afe25752bb9b7fffd398552d3"}, ] tzlocal = [ - {file = "tzlocal-4.1-py3-none-any.whl", hash = "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f"}, - {file = "tzlocal-4.1.tar.gz", hash = "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09"}, + {file = "tzlocal-4.2-py3-none-any.whl", hash = "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745"}, + {file = "tzlocal-4.2.tar.gz", hash = "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7"}, ] urllib3 = [ - {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, - {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] virtualenv = [ - {file = "virtualenv-20.13.1-py2.py3-none-any.whl", hash = "sha256:45e1d053cad4cd453181ae877c4ffc053546ae99e7dd049b9ff1d9be7491abf7"}, - {file = "virtualenv-20.13.1.tar.gz", hash = "sha256:e0621bcbf4160e4e1030f05065c8834b4e93f4fcc223255db2a823440aca9c14"}, -] -werkzeug = [ - {file = "Werkzeug-2.0.3-py3-none-any.whl", hash = "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8"}, - {file = "Werkzeug-2.0.3.tar.gz", hash = "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c"}, + {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, + {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, ] zipp = [ - {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, - {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, + {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, + {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, ] diff --git a/pyproject.toml b/pyproject.toml index d7bf198..57711fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,6 @@ apscheduler = "^3.6.3" pyrss2gen = "^1.1" profig = "^0.5.1" markdown = "^3.1.1" -Flask = "^2.0.1" requests = "^2.25.1" coverage = "^5.5" peewee = "^3.14.8" @@ -20,10 +19,9 @@ tox = "^3.24.5" background = "^0.2.1" [tool.poetry.dev-dependencies] -rope = "^0.16.0" -mypy = "^0.790" -flake8-black = "^0.2.1" -black = "^20.8b1" +mypy = "^0.942" +flake8-black = "^0.3.2" +black = "^22.3.0" pytest = "^6.2.4" pytest-cov = "^2.12.1" coveralls = "^3.2.0" diff --git a/run.py b/run.py index 948f8b6..33a833e 100644 --- a/run.py +++ b/run.py @@ -22,11 +22,8 @@ def configure_logging(level): root_logger.setLevel(level) ch = logging.StreamHandler() ch.setLevel(level) - # create formatter formatter = logging.Formatter("[%(asctime)s] %(name)s %(levelname)s %(message)s") - # add formatter to ch ch.setFormatter(formatter) - # add ch to logger root_logger.addHandler(ch) @@ -57,7 +54,7 @@ def stacosys_server(config_pathname): logger.info("Start Stacosys application") - # generate RSS for all sites + # generate RSS rss = Rss( conf.get(ConfigParameter.LANG), conf.get(ConfigParameter.RSS_FILE), diff --git a/stacosys.code-workspace b/stacosys.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/stacosys.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file diff --git a/stacosys/core/mailer.py b/stacosys/core/mailer.py index defa09a..b58f75b 100644 --- a/stacosys/core/mailer.py +++ b/stacosys/core/mailer.py @@ -12,12 +12,12 @@ logger = logging.getLogger(__name__) class Mailer: def __init__( - self, - smtp_host, - smtp_port, - smtp_login, - smtp_password, - site_admin_email, + self, + smtp_host, + smtp_port, + smtp_login, + smtp_password, + site_admin_email, ): self._smtp_host = smtp_host self._smtp_port = smtp_port @@ -35,7 +35,9 @@ class Mailer: msg["From"] = sender context = ssl.create_default_context() - with smtplib.SMTP_SSL(self._smtp_host, self._smtp_port, context=context) as server: + with smtplib.SMTP_SSL( + self._smtp_host, self._smtp_port, context=context + ) as server: server.login(self._smtp_login, self._smtp_password) server.send_message(msg, sender, receivers) return True diff --git a/stacosys/core/rss.py b/stacosys/core/rss.py index c3e3e9a..958f155 100644 --- a/stacosys/core/rss.py +++ b/stacosys/core/rss.py @@ -11,12 +11,12 @@ from stacosys.model.comment import Comment class Rss: def __init__( - self, - lang, - rss_file, - rss_proto, - site_name, - site_url, + self, + lang, + rss_file, + rss_proto, + site_name, + site_url, ): self._lang = lang self._rss_file = rss_file @@ -29,16 +29,16 @@ class Rss: items = [] for row in ( - Comment.select() - .where(Comment.published) - .order_by(-Comment.published) - .limit(10) + Comment.select() + .where(Comment.published) + .order_by(-Comment.published) + .limit(10) ): item_link = "%s://%s%s" % (self._rss_proto, self._site_url, row.url) items.append( PyRSS2Gen.RSSItem( title="%s - %s://%s%s" - % (self._rss_proto, row.author_name, self._site_url, row.url), + % (self._rss_proto, row.author_name, self._site_url, row.url), link=item_link, description=md.convert(row.content), guid=PyRSS2Gen.Guid("%s/%d" % (item_link, row.id)), diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index e24fec2..597579d 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -34,14 +34,21 @@ def find_not_published_comments(): def find_published_comments_by_url(url): - return Comment.select(Comment).where((Comment.url == url) & (Comment.published.is_null(False))).order_by( - +Comment.published) + return ( + Comment.select(Comment) + .where((Comment.url == url) & (Comment.published.is_null(False))) + .order_by(+Comment.published) + ) def count_published_comments(url): - return Comment.select(Comment).where( - (Comment.url == url) & (Comment.published.is_null(False))).count() if url else Comment.select(Comment).where( - Comment.published.is_null(False)).count() + return ( + Comment.select(Comment) + .where((Comment.url == url) & (Comment.published.is_null(False))) + .count() + if url + else Comment.select(Comment).where(Comment.published.is_null(False)).count() + ) def create_comment(url, author_name, author_site, author_gravatar, message): diff --git a/stacosys/db/database.py b/stacosys/db/database.py index 3586fd7..73c2591 100644 --- a/stacosys/db/database.py +++ b/stacosys/db/database.py @@ -17,6 +17,7 @@ def setup(db_url): db.connect() from stacosys.model.comment import Comment + db.create_tables([Comment], safe=True) diff --git a/stacosys/interface/form.py b/stacosys/interface/form.py index 8bdabc0..6955d44 100644 --- a/stacosys/interface/form.py +++ b/stacosys/interface/form.py @@ -39,7 +39,9 @@ def new_form_comment(): abort(400) # add a row to Comment table - comment = dao.create_comment(url, author_name, author_site, author_gravatar, message) + comment = dao.create_comment( + url, author_name, author_site, author_gravatar, message + ) # send notification e-mail asynchronously submit_new_comment(comment) diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index f5bedf2..c65ee0a 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -17,45 +17,51 @@ app.add_url_rule("/web/", endpoint="index") @app.endpoint("index") def index(): - return redirect('/web/admin') + return redirect("/web/admin") def is_login_ok(username, password): hashed = hashlib.sha256(password.encode()).hexdigest().upper() - return app.config.get("WEB_USERNAME") == username and app.config.get("WEB_PASSWORD") == hashed + return ( + app.config.get("WEB_USERNAME") == username + and app.config.get("WEB_PASSWORD") == hashed + ) -@app.route('/web/login', methods=['POST', 'GET']) +@app.route("/web/login", methods=["POST", "GET"]) def login(): - if request.method == 'POST': - username = request.form.get('username') - password = request.form.get('password') + if request.method == "POST": + username = request.form.get("username") + password = request.form.get("password") if is_login_ok(username, password): - session['user'] = username - return redirect('/web/admin') + session["user"] = username + return redirect("/web/admin") # TODO localization flash("Identifiant ou mot de passe incorrect") - return redirect('/web/login') + return redirect("/web/login") # GET return render_template("login_" + app.config.get("LANG") + ".html") -@app.route('/web/logout', methods=["GET"]) +@app.route("/web/logout", methods=["GET"]) def logout(): - session.pop('user') - return redirect('/web/admin') + session.pop("user") + return redirect("/web/admin") @app.route("/web/admin", methods=["GET"]) def admin_homepage(): - if not ('user' in session and session['user'] == app.config.get("WEB_USERNAME")): + if not ("user" in session and session["user"] == app.config.get("WEB_USERNAME")): # TODO localization flash("Vous avez été déconnecté.") - return redirect('/web/login') + return redirect("/web/login") comments = dao.find_not_published_comments() - return render_template("admin_" + app.config.get("LANG") + ".html", comments=comments, - baseurl=app.config.get("SITE_URL")) + return render_template( + "admin_" + app.config.get("LANG") + ".html", + comments=comments, + baseurl=app.config.get("SITE_URL"), + ) @app.route("/web/admin", methods=["POST"]) @@ -73,4 +79,4 @@ def admin_action(): dao.delete_comment(comment) # TODO localization flash("Commentaire supprimé") - return redirect('/web/admin') + return redirect("/web/admin") diff --git a/tests/test_api.py b/tests/test_api.py index 641fd35..a2b7033 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -30,35 +30,35 @@ def client(): def test_api_ping(client): - resp = client.get('/api/ping') + resp = client.get("/api/ping") assert resp.data == b"OK" def test_api_count_global(client): - resp = client.get('/api/comments/count') + resp = client.get("/api/comments/count") d = json.loads(resp.data) - assert d and d['count'] == 2 + assert d and d["count"] == 2 def test_api_count_url(client): - resp = client.get('/api/comments/count?url=/site1') + resp = client.get("/api/comments/count?url=/site1") d = json.loads(resp.data) - assert d and d['count'] == 1 - resp = client.get('/api/comments/count?url=/site2') + assert d and d["count"] == 1 + resp = client.get("/api/comments/count?url=/site2") d = json.loads(resp.data) - assert d and d['count'] == 0 + assert d and d["count"] == 0 def test_api_comment(client): - resp = client.get('/api/comments?url=/site1') + resp = client.get("/api/comments?url=/site1") d = json.loads(resp.data) - assert d and len(d['data']) == 1 - comment = d['data'][0] - assert comment['author'] == 'Bob' - assert comment['content'] == 'comment 1' + assert d and len(d["data"]) == 1 + comment = d["data"][0] + assert comment["author"] == "Bob" + assert comment["content"] == "comment 1" def test_api_comment_not_found(client): - resp = client.get('/api/comments?url=/site2') + resp = client.get("/api/comments?url=/site2") d = json.loads(resp.data) - assert d and d['data'] == [] + assert d and d["data"] == [] diff --git a/tests/test_config.py b/tests/test_config.py index e98a9e8..07797c4 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -11,7 +11,6 @@ EXPECTED_LANG = "fr" class ConfigTestCase(unittest.TestCase): - def setUp(self): self.conf = Config() self.conf.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) @@ -21,7 +20,9 @@ class ConfigTestCase(unittest.TestCase): self.assertTrue(self.conf.exists(ConfigParameter.DB_SQLITE_FILE)) def test_get(self): - self.assertEqual(self.conf.get(ConfigParameter.DB_SQLITE_FILE), EXPECTED_DB_SQLITE_FILE) + self.assertEqual( + self.conf.get(ConfigParameter.DB_SQLITE_FILE), EXPECTED_DB_SQLITE_FILE + ) self.assertEqual(self.conf.get(ConfigParameter.HTTP_PORT), EXPECTED_HTTP_PORT) self.assertIsNone(self.conf.get(ConfigParameter.HTTP_HOST)) self.assertEqual(self.conf.get(ConfigParameter.HTTP_PORT), EXPECTED_HTTP_PORT) diff --git a/tests/test_db.py b/tests/test_db.py index f3ecf57..99eeb7e 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -5,7 +5,6 @@ from stacosys.db import database class DbTestCase(unittest.TestCase): - def setUp(self): database.setup(":memory:") @@ -50,5 +49,5 @@ class DbTestCase(unittest.TestCase): self.assertEqual(0, len(dao.find_not_notified_comments())) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_form.py b/tests/test_form.py index ff9fbfd..55ebda8 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -20,20 +20,25 @@ def client(): def test_new_comment_honeypot(client): - resp = client.post('/newcomment', - content_type='multipart/form-data', - data={'remarque': 'trapped'}) - assert resp.status == '400 BAD REQUEST' + resp = client.post( + "/newcomment", content_type="multipart/form-data", data={"remarque": "trapped"} + ) + assert resp.status == "400 BAD REQUEST" def test_new_comment_success(client): - resp = client.post('/newcomment', - content_type='multipart/form-data', - data={'author': 'Jack', 'url': '/site3', 'message': 'comment 3'}) - assert resp.status == '302 FOUND' + resp = client.post( + "/newcomment", + content_type="multipart/form-data", + data={"author": "Jack", "url": "/site3", "message": "comment 3"}, + ) + assert resp.status == "302 FOUND" def test_check_form_data(): from stacosys.interface.form import check_form_data - assert check_form_data({'author': 'Jack', 'url': '/site3', 'message': 'comment 3'}) - assert not check_form_data({'author': 'Jack', 'url': '/site3', 'message': 'comment 3', 'extra': 'ball'}) + + assert check_form_data({"author": "Jack", "url": "/site3", "message": "comment 3"}) + assert not check_form_data( + {"author": "Jack", "url": "/site3", "message": "comment 3", "extra": "ball"} + ) diff --git a/tests/test_stacosys.py b/tests/test_stacosys.py index 23b2aaa..5625c8d 100644 --- a/tests/test_stacosys.py +++ b/tests/test_stacosys.py @@ -4,6 +4,5 @@ from stacosys import __version__ class StacosysTestCase(unittest.TestCase): - def test_version(self): self.assertEqual("2.0", __version__) diff --git a/whitelist.txt b/whitelist.txt new file mode 100644 index 0000000..a44b465 --- /dev/null +++ b/whitelist.txt @@ -0,0 +1 @@ +RSS \ No newline at end of file From c75fa2f669e166d9157c3212e7699de5893290e4 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 27 Apr 2022 03:04:55 +0200 Subject: [PATCH 040/182] PEP8 --- README.md | 2 +- dbmigration/create_empty_db.py | 12 ++++++------ dbmigration/migrate_from_1.1_to_2.0.py | 20 +++++++++++--------- flake8.ini | 1 - tests/test_api.py | 1 + 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 98b075e..d350d06 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![GitLicense](https://gitlicense.com/badge/kianby/stacosys)](https://gitlicense.com/license/kianby/stacosys) [![Python version](https://img.shields.io/badge/Python-3.9-blue.svg)](https://www.python.org/) [![Flask version](https://img.shields.io/badge/Flask-2.0.1-green.svg)](https://flask.palletsprojects.com) [![Peewee version](https://img.shields.io/badge/Peewee-3.14.0-green.svg)](https://docs.peewee-orm.com/) -[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) +[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ## Stacosys diff --git a/dbmigration/create_empty_db.py b/dbmigration/create_empty_db.py index 987eab1..50bd0f2 100644 --- a/dbmigration/create_empty_db.py +++ b/dbmigration/create_empty_db.py @@ -8,15 +8,15 @@ cursor = connection.cursor() script = """ CREATE TABLE comment ( - id INTEGER NOT NULL PRIMARY KEY, - url VARCHAR(255) NOT NULL, + id INTEGER NOT NULL PRIMARY KEY, + url VARCHAR(255) NOT NULL, notified DATETIME, - created DATETIME NOT NULL, - published DATETIME, - author_name VARCHAR(255) NOT NULL, + created DATETIME NOT NULL, + published DATETIME, + author_name VARCHAR(255) NOT NULL, author_site VARCHAR(255) NOT NULL, author_gravatar varchar(255), - content TEXT NOT NULL + content TEXT NOT NULL , ulid INTEGER); """ diff --git a/dbmigration/migrate_from_1.1_to_2.0.py b/dbmigration/migrate_from_1.1_to_2.0.py index 9870d25..e86c433 100644 --- a/dbmigration/migrate_from_1.1_to_2.0.py +++ b/dbmigration/migrate_from_1.1_to_2.0.py @@ -8,25 +8,27 @@ cursor = connection.cursor() # What script performs: # - first, remove site table: crash here if table doesn't exist (compatibility test without effort) -# - remove site_id colum from comment table +# - remove site_id column from comment table script = """ PRAGMA foreign_keys = OFF; BEGIN TRANSACTION; DROP TABLE site; ALTER TABLE comment RENAME TO _comment_old; CREATE TABLE comment ( - id INTEGER NOT NULL PRIMARY KEY, - url VARCHAR(255) NOT NULL, + id INTEGER NOT NULL PRIMARY KEY, + url VARCHAR(255) NOT NULL, notified DATETIME, - created DATETIME NOT NULL, - published DATETIME, - author_name VARCHAR(255) NOT NULL, + created DATETIME NOT NULL, + published DATETIME, + author_name VARCHAR(255) NOT NULL, author_site VARCHAR(255) NOT NULL, author_gravatar varchar(255), - content TEXT NOT NULL + content TEXT NOT NULL ); -INSERT INTO comment (id, url, notified, created, published, author_name, author_site, author_gravatar, content) - SELECT id, url, notified, created, published, author_name, author_site, author_gravatar, content +INSERT INTO comment (id, url, notified, created, published, + author_name, author_site, author_gravatar, content) + SELECT id, url, notified, created, published, + author_name, author_site, author_gravatar, content FROM _comment_old; DROP TABLE _comment_old; COMMIT; diff --git a/flake8.ini b/flake8.ini index 01ad95a..9b8e5e8 100644 --- a/flake8.ini +++ b/flake8.ini @@ -1,5 +1,4 @@ [flake8] max-line-length = 88 extend-ignore = E203 -exclude = */tests/* spellcheck-targets=comments diff --git a/tests/test_api.py b/tests/test_api.py index a2b7033..6cb2196 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -17,6 +17,7 @@ def init_test_db(): c3 = dao.create_comment("/site3", "Jack", "/jack.site", "", "comment 3") dao.publish_comment(c1) dao.publish_comment(c3) + assert c2 @pytest.fixture From 8e51d7b745ef3cc63f538eb657dcf7a341d8c1dd Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 27 Apr 2022 03:12:01 +0200 Subject: [PATCH 041/182] PEP8 --- dbmigration/migrate_from_1.1_to_2.0.py | 3 +- poetry.lock | 122 ++++++++++++++++++++++++- pyproject.toml | 1 + stacosys/interface/__init__.py | 2 +- 4 files changed, 124 insertions(+), 4 deletions(-) diff --git a/dbmigration/migrate_from_1.1_to_2.0.py b/dbmigration/migrate_from_1.1_to_2.0.py index e86c433..f63112e 100644 --- a/dbmigration/migrate_from_1.1_to_2.0.py +++ b/dbmigration/migrate_from_1.1_to_2.0.py @@ -7,7 +7,8 @@ connection = sqlite3.connect("db.sqlite") cursor = connection.cursor() # What script performs: -# - first, remove site table: crash here if table doesn't exist (compatibility test without effort) +# - first, remove site table: crash here if table doesn't exist +# (compatibility test without effort) # - remove site_id column from comment table script = """ PRAGMA foreign_keys = OFF; diff --git a/poetry.lock b/poetry.lock index 605f422..071218e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -110,7 +110,7 @@ unicode_backport = ["unicodedata2"] name = "click" version = "8.1.2" description = "Composable command line interface toolkit" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" @@ -206,6 +206,25 @@ black = ">=22.1.0" flake8 = ">=3.0.0" tomli = "*" +[[package]] +name = "flask" +version = "2.1.1" +description = "A simple framework for building complex web applications." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +click = ">=8.0" +importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} +itsdangerous = ">=2.0" +Jinja2 = ">=3.0" +Werkzeug = ">=2.0" + +[package.extras] +async = ["asgiref (>=3.2)"] +dotenv = ["python-dotenv"] + [[package]] name = "idna" version = "3.3" @@ -238,6 +257,28 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "itsdangerous" +version = "2.1.2" +description = "Safely pass data to untrusted environments and back." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "jinja2" +version = "3.1.1" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + [[package]] name = "markdown" version = "3.3.6" @@ -252,6 +293,14 @@ importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} [package.extras] testing = ["coverage", "pyyaml"] +[[package]] +name = "markupsafe" +version = "2.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "mccabe" version = "0.6.1" @@ -573,6 +622,17 @@ six = ">=1.9.0,<2" docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] +[[package]] +name = "werkzeug" +version = "2.1.1" +description = "The comprehensive WSGI web application library." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +watchdog = ["watchdog"] + [[package]] name = "zipp" version = "3.8.0" @@ -588,7 +648,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "98643b0bfca472ab7d13b291c2a45c5d4c4b94a8ca42c8e47f0dd92bb75fea98" +content-hash = "175178de9d664153a3380ed1e0065b7f29eab769052eff1d98e0df7f50de4754" [metadata.files] apscheduler = [ @@ -743,6 +803,10 @@ flake8-black = [ {file = "flake8-black-0.3.2.tar.gz", hash = "sha256:6f6bf198f3f45df43245d1d1a0ba2035ee5817d167680f9e1af23cde70cb7548"}, {file = "flake8_black-0.3.2-py3-none-any.whl", hash = "sha256:9c86b24ede16a80555808c6c4779d81bc54cff57d0dd1980029c0e4b39ac8b45"}, ] +flask = [ + {file = "Flask-2.1.1-py3-none-any.whl", hash = "sha256:8a4cf32d904cf5621db9f0c9fbcd7efabf3003f22a04e4d0ce790c7137ec5264"}, + {file = "Flask-2.1.1.tar.gz", hash = "sha256:a8c9bd3e558ec99646d177a9739c41df1ded0629480b4c8d2975412f3c9519c8"}, +] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, @@ -755,10 +819,60 @@ iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] +itsdangerous = [ + {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, + {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, +] +jinja2 = [ + {file = "Jinja2-3.1.1-py3-none-any.whl", hash = "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119"}, + {file = "Jinja2-3.1.1.tar.gz", hash = "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9"}, +] markdown = [ {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, ] +markupsafe = [ + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, @@ -889,6 +1003,10 @@ virtualenv = [ {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, ] +werkzeug = [ + {file = "Werkzeug-2.1.1-py3-none-any.whl", hash = "sha256:3c5493ece8268fecdcdc9c0b112211acd006354723b280d643ec732b6d4063d6"}, + {file = "Werkzeug-2.1.1.tar.gz", hash = "sha256:f8e89a20aeabbe8a893c24a461d3ee5dad2123b05cc6abd73ceed01d39c3ae74"}, +] zipp = [ {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, diff --git a/pyproject.toml b/pyproject.toml index 57711fb..f30c78f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ coverage = "^5.5" peewee = "^3.14.8" tox = "^3.24.5" background = "^0.2.1" +Flask = "^2.1.1" [tool.poetry.dev-dependencies] mypy = "^0.942" diff --git a/stacosys/interface/__init__.py b/stacosys/interface/__init__.py index ee1c258..540e40e 100644 --- a/stacosys/interface/__init__.py +++ b/stacosys/interface/__init__.py @@ -6,4 +6,4 @@ from flask import Flask app = Flask(__name__) # Set the secret key to some random bytes. Keep this really secret! -app.secret_key = b'_5#y2L"F4Q8z\n\xec]/' \ No newline at end of file +app.secret_key = b'_5#y2L"F4Q8z\n\xec]/' From b1818958f576815d3336da4b24e2e5405ba56833 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 27 Apr 2022 03:17:36 +0200 Subject: [PATCH 042/182] Update README badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d350d06..6409247 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![GitLicense](https://gitlicense.com/badge/kianby/stacosys)](https://gitlicense.com/license/kianby/stacosys) - [![Python version](https://img.shields.io/badge/Python-3.9-blue.svg)](https://www.python.org/) [![Flask version](https://img.shields.io/badge/Flask-2.0.1-green.svg)](https://flask.palletsprojects.com) [![Peewee version](https://img.shields.io/badge/Peewee-3.14.0-green.svg)](https://docs.peewee-orm.com/) + [![Python version](https://img.shields.io/badge/Python-3.9-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-2.1-green.svg)](https://flask.palletsprojects.com) [![Peewee version](https://img.shields.io/badge/Peewee-3.14-green.svg)](https://docs.peewee-orm.com/) -[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) ## Stacosys From be41d4d4440e54015efb849e90c2d903cb38d9be Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 15 Oct 2022 17:29:16 +0200 Subject: [PATCH 043/182] Update dependencies --- poetry.lock | 308 ++++++++++++++++++++++++++-------------------------- 1 file changed, 152 insertions(+), 156 deletions(-) diff --git a/poetry.lock b/poetry.lock index 071218e..3585c2c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -26,7 +26,7 @@ zookeeper = ["kazoo"] [[package]] name = "atomicwrites" -version = "1.4.0" +version = "1.4.1" description = "Atomic file writes." category = "dev" optional = false @@ -34,17 +34,17 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "attrs" -version = "21.4.0" +version = "22.1.0" description = "Classes Without Boilerplate" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] [[package]] name = "background" @@ -67,18 +67,18 @@ tzdata = ["tzdata"] [[package]] name = "black" -version = "22.3.0" +version = "22.10.0" description = "The uncompromising code formatter." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7" [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -89,26 +89,26 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.9.24" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.6.0" [package.extras] unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false @@ -119,7 +119,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -154,7 +154,7 @@ yaml = ["PyYAML (>=3.10)"] [[package]] name = "distlib" -version = "0.3.4" +version = "0.3.6" description = "Distribution utilities" category = "main" optional = false @@ -170,32 +170,32 @@ python-versions = "*" [[package]] name = "filelock" -version = "3.6.0" +version = "3.8.0" description = "A platform independent file lock." category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] -testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] +docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] +testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] [[package]] name = "flake8" -version = "4.0.1" +version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.1" [package.dependencies] -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.8.0,<2.9.0" -pyflakes = ">=2.4.0,<2.5.0" +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "flake8-black" -version = "0.3.2" +version = "0.3.3" description = "flake8 plugin to call black as a code style validator" category = "dev" optional = false @@ -208,7 +208,7 @@ tomli = "*" [[package]] name = "flask" -version = "2.1.1" +version = "2.2.2" description = "A simple framework for building complex web applications." category = "main" optional = false @@ -219,7 +219,7 @@ click = ">=8.0" importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} itsdangerous = ">=2.0" Jinja2 = ">=3.0" -Werkzeug = ">=2.0" +Werkzeug = ">=2.2.2" [package.extras] async = ["asgiref (>=3.2)"] @@ -227,7 +227,7 @@ dotenv = ["python-dotenv"] [[package]] name = "idna" -version = "3.3" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -235,7 +235,7 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.11.3" +version = "5.0.0" description = "Read metadata from Python packages" category = "main" optional = false @@ -245,9 +245,9 @@ python-versions = ">=3.7" zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "iniconfig" @@ -267,7 +267,7 @@ python-versions = ">=3.7" [[package]] name = "jinja2" -version = "3.1.1" +version = "3.1.2" description = "A very fast and expressive template engine." category = "main" optional = false @@ -281,11 +281,11 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "markdown" -version = "3.3.6" +version = "3.4.1" description = "Python implementation of Markdown." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} @@ -303,11 +303,11 @@ python-versions = ">=3.7" [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "mypy" @@ -348,15 +348,15 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "peewee" -version = "3.14.10" +version = "3.15.3" description = "a little orm" category = "main" optional = false @@ -404,23 +404,23 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "pycodestyle" -version = "2.8.0" +version = "2.9.1" description = "Python style guide checker" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" [[package]] name = "pyflakes" -version = "2.4.0" +version = "2.5.0" description = "passive checker of Python programs" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -476,7 +476,7 @@ testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtuale [[package]] name = "pytz" -version = "2022.1" +version = "2022.4" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -496,21 +496,21 @@ tzdata = {version = "*", markers = "python_version >= \"3.6\""} [[package]] name = "requests" -version = "2.27.1" +version = "2.28.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "six" @@ -524,7 +524,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "main" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" @@ -532,13 +532,13 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" [[package]] name = "tox" -version = "3.25.0" +version = "3.26.0" description = "tox is a generic virtualenv management and test command line tool" category = "main" optional = false @@ -551,7 +551,7 @@ packaging = ">=14" pluggy = ">=0.12.0" py = ">=1.4.17" six = ">=1.14.0" -toml = ">=0.9.4" +tomli = {version = ">=2.0.1", markers = "python_version >= \"3.7\" and python_version < \"3.11\""} virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" [package.extras] @@ -560,7 +560,7 @@ testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytes [[package]] name = "typing-extensions" -version = "4.2.0" +version = "4.4.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false @@ -568,7 +568,7 @@ python-versions = ">=3.7" [[package]] name = "tzdata" -version = "2022.1" +version = "2022.5" description = "Provider of IANA time zone data" category = "main" optional = false @@ -593,57 +593,59 @@ test = ["pytest-mock (>=3.3)", "pytest (>=4.3)"] [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.12" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.14.1" +version = "20.16.5" description = "Virtual Python Environment builder" category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.6" [package.dependencies] -distlib = ">=0.3.1,<1" -filelock = ">=3.2,<4" -platformdirs = ">=2,<3" -six = ">=1.9.0,<2" +distlib = ">=0.3.5,<1" +filelock = ">=3.4.1,<4" +platformdirs = ">=2.4,<3" [package.extras] -docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] -testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] +docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] +testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] [[package]] name = "werkzeug" -version = "2.1.1" +version = "2.2.2" description = "The comprehensive WSGI web application library." category = "main" optional = false python-versions = ">=3.7" +[package.dependencies] +MarkupSafe = ">=2.1.1" + [package.extras] watchdog = ["watchdog"] [[package]] name = "zipp" -version = "3.8.0" +version = "3.9.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "jaraco.functools", "more-itertools", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" @@ -656,12 +658,11 @@ apscheduler = [ {file = "APScheduler-3.9.1.tar.gz", hash = "sha256:65e6574b6395498d371d045f2a8a7e4f7d50c6ad21ef7313d15b1c7cf20df1e3"}, ] atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, + {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, ] attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] background = [ {file = "background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802"}, @@ -686,45 +687,43 @@ background = [ {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, ] black = [ - {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, - {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, - {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, - {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, - {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, - {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, - {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, - {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, - {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, - {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, - {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, - {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, - {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, - {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, - {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, - {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, - {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, - {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, - {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, + {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, + {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, + {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, + {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, + {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, + {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, + {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, + {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, + {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, + {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, + {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, + {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, + {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, + {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, + {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, + {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, + {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, + {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, + {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, + {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, + {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, ] certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, + {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, + {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, ] click = [ - {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, - {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, ] coverage = [ {file = "coverage-5.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf"}, @@ -785,35 +784,35 @@ coveralls = [ {file = "coveralls-3.3.1.tar.gz", hash = "sha256:b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea"}, ] distlib = [ - {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, - {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, ] docopt = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, ] filelock = [ - {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, - {file = "filelock-3.6.0.tar.gz", hash = "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85"}, + {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, + {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, ] flake8 = [ - {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, - {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, ] flake8-black = [ - {file = "flake8-black-0.3.2.tar.gz", hash = "sha256:6f6bf198f3f45df43245d1d1a0ba2035ee5817d167680f9e1af23cde70cb7548"}, - {file = "flake8_black-0.3.2-py3-none-any.whl", hash = "sha256:9c86b24ede16a80555808c6c4779d81bc54cff57d0dd1980029c0e4b39ac8b45"}, + {file = "flake8-black-0.3.3.tar.gz", hash = "sha256:8211f5e20e954cb57c709acccf2f3281ce27016d4c4b989c3e51f878bb7ce12a"}, + {file = "flake8_black-0.3.3-py3-none-any.whl", hash = "sha256:7d667d0059fd1aa468de1669d77cc934b7f1feeac258d57bdae69a8e73c4cd90"}, ] flask = [ - {file = "Flask-2.1.1-py3-none-any.whl", hash = "sha256:8a4cf32d904cf5621db9f0c9fbcd7efabf3003f22a04e4d0ce790c7137ec5264"}, - {file = "Flask-2.1.1.tar.gz", hash = "sha256:a8c9bd3e558ec99646d177a9739c41df1ded0629480b4c8d2975412f3c9519c8"}, + {file = "Flask-2.2.2-py3-none-any.whl", hash = "sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526"}, + {file = "Flask-2.2.2.tar.gz", hash = "sha256:642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b"}, ] idna = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, - {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, + {file = "importlib_metadata-5.0.0-py3-none-any.whl", hash = "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"}, + {file = "importlib_metadata-5.0.0.tar.gz", hash = "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, @@ -824,12 +823,12 @@ itsdangerous = [ {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, ] jinja2 = [ - {file = "Jinja2-3.1.1-py3-none-any.whl", hash = "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119"}, - {file = "Jinja2-3.1.1.tar.gz", hash = "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9"}, + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] markdown = [ - {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, - {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, + {file = "Markdown-3.4.1-py3-none-any.whl", hash = "sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186"}, + {file = "Markdown-3.4.1.tar.gz", hash = "sha256:3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff"}, ] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, @@ -874,8 +873,8 @@ markupsafe = [ {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] mypy = [ {file = "mypy-0.942-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5bf44840fb43ac4074636fd47ee476d73f0039f4f54e86d7265077dc199be24d"}, @@ -911,11 +910,11 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, + {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, + {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, ] peewee = [ - {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, + {file = "peewee-3.15.3.tar.gz", hash = "sha256:cc934286d0c0842203abe66a3c6583d1463371e633b03d6da054d0f74e70706f"}, ] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, @@ -933,16 +932,16 @@ py = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] pycodestyle = [ - {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, - {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, ] pyflakes = [ - {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, - {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, + {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, + {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] pyrss2gen = [ {file = "PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7"}, @@ -956,17 +955,14 @@ pytest-cov = [ {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, ] pytz = [ - {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, - {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, + {file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"}, + {file = "pytz-2022.4.tar.gz", hash = "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174"}, ] pytz-deprecation-shim = [ {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, ] -requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, -] +requests = [] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -980,34 +976,34 @@ tomli = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] tox = [ - {file = "tox-3.25.0-py2.py3-none-any.whl", hash = "sha256:0805727eb4d6b049de304977dfc9ce315a1938e6619c3ab9f38682bb04662a5a"}, - {file = "tox-3.25.0.tar.gz", hash = "sha256:37888f3092aa4e9f835fc8cc6dadbaaa0782651c41ef359e3a5743fcb0308160"}, + {file = "tox-3.26.0-py2.py3-none-any.whl", hash = "sha256:bf037662d7c740d15c9924ba23bb3e587df20598697bb985ac2b49bdc2d847f6"}, + {file = "tox-3.26.0.tar.gz", hash = "sha256:44f3c347c68c2c68799d7d44f1808f9d396fc8a1a500cbc624253375c7ae107e"}, ] typing-extensions = [ - {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, - {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] tzdata = [ - {file = "tzdata-2022.1-py2.py3-none-any.whl", hash = "sha256:238e70234214138ed7b4e8a0fab0e5e13872edab3be586ab8198c407620e2ab9"}, - {file = "tzdata-2022.1.tar.gz", hash = "sha256:8b536a8ec63dc0751342b3984193a3118f8fca2afe25752bb9b7fffd398552d3"}, + {file = "tzdata-2022.5-py2.py3-none-any.whl", hash = "sha256:323161b22b7802fdc78f20ca5f6073639c64f1a7227c40cd3e19fd1d0ce6650a"}, + {file = "tzdata-2022.5.tar.gz", hash = "sha256:e15b2b3005e2546108af42a0eb4ccab4d9e225e2dfbf4f77aad50c70a4b1f3ab"}, ] tzlocal = [ {file = "tzlocal-4.2-py3-none-any.whl", hash = "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745"}, {file = "tzlocal-4.2.tar.gz", hash = "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7"}, ] urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, + {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, + {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, ] virtualenv = [ - {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, - {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, + {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, + {file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"}, ] werkzeug = [ - {file = "Werkzeug-2.1.1-py3-none-any.whl", hash = "sha256:3c5493ece8268fecdcdc9c0b112211acd006354723b280d643ec732b6d4063d6"}, - {file = "Werkzeug-2.1.1.tar.gz", hash = "sha256:f8e89a20aeabbe8a893c24a461d3ee5dad2123b05cc6abd73ceed01d39c3ae74"}, + {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, + {file = "Werkzeug-2.2.2.tar.gz", hash = "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f"}, ] zipp = [ - {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, - {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, + {file = "zipp-3.9.0-py3-none-any.whl", hash = "sha256:972cfa31bc2fedd3fa838a51e9bc7e64b7fb725a8c00e7431554311f180e9980"}, + {file = "zipp-3.9.0.tar.gz", hash = "sha256:3a7af91c3db40ec72dd9d154ae18e008c69efe8ca88dde4f9a731bb82fe2f9eb"}, ] From d5e676256a5e36ba0688116c027caeb8ffce0614 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 29 Oct 2022 16:00:44 +0200 Subject: [PATCH 044/182] Upgrade deps --- poetry.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3585c2c..a89bd78 100644 --- a/poetry.lock +++ b/poetry.lock @@ -976,8 +976,8 @@ tomli = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] tox = [ - {file = "tox-3.26.0-py2.py3-none-any.whl", hash = "sha256:bf037662d7c740d15c9924ba23bb3e587df20598697bb985ac2b49bdc2d847f6"}, - {file = "tox-3.26.0.tar.gz", hash = "sha256:44f3c347c68c2c68799d7d44f1808f9d396fc8a1a500cbc624253375c7ae107e"}, + {file = "tox-3.27.0-py2.py3-none-any.whl", hash = "sha256:89e4bc6df3854e9fc5582462e328dd3660d7d865ba625ae5881bbc63836a6324"}, + {file = "tox-3.27.0.tar.gz", hash = "sha256:d2c945f02a03d4501374a3d5430877380deb69b218b1df9b7f1d2f2a10befaf9"}, ] typing-extensions = [ {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, From a8750d51a9dc6d2e2e19b15e8599c00030aeebb8 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 29 Oct 2022 16:05:03 +0200 Subject: [PATCH 045/182] Update deps --- poetry.lock | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/poetry.lock b/poetry.lock index a89bd78..823174a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -119,11 +119,11 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.6" description = "Cross-platform colored terminal text." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" [[package]] name = "coverage" @@ -476,7 +476,7 @@ testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtuale [[package]] name = "pytz" -version = "2022.4" +version = "2022.5" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -538,7 +538,7 @@ python-versions = ">=3.7" [[package]] name = "tox" -version = "3.26.0" +version = "3.27.0" description = "tox is a generic virtualenv management and test command line tool" category = "main" optional = false @@ -606,19 +606,19 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.16.5" +version = "20.16.6" description = "Virtual Python Environment builder" category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -distlib = ">=0.3.5,<1" +distlib = ">=0.3.6,<1" filelock = ">=3.4.1,<4" platformdirs = ">=2.4,<3" [package.extras] -docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] +docs = ["proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-argparse (>=0.3.2)", "sphinx-rtd-theme (>=1)", "towncrier (>=22.8)"] testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] [[package]] @@ -637,7 +637,7 @@ watchdog = ["watchdog"] [[package]] name = "zipp" -version = "3.9.0" +version = "3.10.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false @@ -722,8 +722,8 @@ click = [ {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] colorama = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] coverage = [ {file = "coverage-5.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf"}, @@ -955,8 +955,8 @@ pytest-cov = [ {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, ] pytz = [ - {file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"}, - {file = "pytz-2022.4.tar.gz", hash = "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174"}, + {file = "pytz-2022.5-py2.py3-none-any.whl", hash = "sha256:335ab46900b1465e714b4fda4963d87363264eb662aab5e65da039c25f1f5b22"}, + {file = "pytz-2022.5.tar.gz", hash = "sha256:c4d88f472f54d615e9cd582a5004d1e5f624854a6a27a6211591c251f22a6914"}, ] pytz-deprecation-shim = [ {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, @@ -996,14 +996,14 @@ urllib3 = [ {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, ] virtualenv = [ - {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, - {file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"}, + {file = "virtualenv-20.16.6-py3-none-any.whl", hash = "sha256:186ca84254abcbde98180fd17092f9628c5fe742273c02724972a1d8a2035108"}, + {file = "virtualenv-20.16.6.tar.gz", hash = "sha256:530b850b523c6449406dfba859d6345e48ef19b8439606c5d74d7d3c9e14d76e"}, ] werkzeug = [ {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, {file = "Werkzeug-2.2.2.tar.gz", hash = "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f"}, ] zipp = [ - {file = "zipp-3.9.0-py3-none-any.whl", hash = "sha256:972cfa31bc2fedd3fa838a51e9bc7e64b7fb725a8c00e7431554311f180e9980"}, - {file = "zipp-3.9.0.tar.gz", hash = "sha256:3a7af91c3db40ec72dd9d154ae18e008c69efe8ca88dde4f9a731bb82fe2f9eb"}, + {file = "zipp-3.10.0-py3-none-any.whl", hash = "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1"}, + {file = "zipp-3.10.0.tar.gz", hash = "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"}, ] From 4403ade05397a9be2d4f62c321db41a4587c387a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 12:33:40 +0100 Subject: [PATCH 046/182] requires Python 3.10 --- poetry.lock | 164 +++++++++++++++---------------------------------- pyproject.toml | 3 +- 2 files changed, 52 insertions(+), 115 deletions(-) diff --git a/poetry.lock b/poetry.lock index 823174a..b709db6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -8,6 +8,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.dependencies] pytz = "*" +setuptools = ">=0.7" six = ">=1.4.0" tzlocal = ">=2.0,<3.0.0 || >=4.0.0" @@ -19,7 +20,7 @@ mongodb = ["pymongo (>=3.0)"] redis = ["redis (>=3.0)"] rethinkdb = ["rethinkdb (>=2.4.0)"] sqlalchemy = ["sqlalchemy (>=0.8)"] -testing = ["pytest", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] +testing = ["mock", "pytest", "pytest-asyncio", "pytest-asyncio (<0.6)", "pytest-cov", "pytest-tornado5"] tornado = ["tornado (>=4.3)"] twisted = ["twisted"] zookeeper = ["kazoo"] @@ -41,10 +42,10 @@ optional = false python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "background" @@ -54,17 +55,6 @@ category = "main" optional = false python-versions = "*" -[[package]] -name = "backports.zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "black" version = "22.10.0" @@ -79,7 +69,6 @@ mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -104,7 +93,7 @@ optional = false python-versions = ">=3.6.0" [package.extras] -unicode_backport = ["unicodedata2"] +unicode-backport = ["unicodedata2"] [[package]] name = "click" @@ -216,7 +205,6 @@ python-versions = ">=3.7" [package.dependencies] click = ">=8.0" -importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} itsdangerous = ">=2.0" Jinja2 = ">=3.0" Werkzeug = ">=2.2.2" @@ -233,22 +221,6 @@ category = "main" optional = false python-versions = ">=3.5" -[[package]] -name = "importlib-metadata" -version = "5.0.0" -description = "Read metadata from Python packages" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] -perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] - [[package]] name = "iniconfig" version = "1.1.1" @@ -287,9 +259,6 @@ category = "main" optional = false python-versions = ">=3.7" -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - [package.extras] testing = ["coverage", "pyyaml"] @@ -356,7 +325,7 @@ python-versions = ">=3.7" [[package]] name = "peewee" -version = "3.15.3" +version = "3.15.4" description = "a little orm" category = "main" optional = false @@ -364,15 +333,15 @@ python-versions = "*" [[package]] name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "2.5.3" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] -test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] +docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"] +test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -386,14 +355,6 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "profig" -version = "0.5.1" -description = "A configuration library." -category = "main" -optional = false -python-versions = "*" - [[package]] name = "py" version = "1.11.0" @@ -427,7 +388,7 @@ optional = false python-versions = ">=3.6.8" [package.extras] -diagrams = ["railroad-diagrams", "jinja2"] +diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyrss2gen" @@ -472,11 +433,11 @@ pytest = ">=4.6" toml = "*" [package.extras] -testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] [[package]] name = "pytz" -version = "2022.5" +version = "2022.6" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -491,7 +452,6 @@ optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version >= \"3.6\" and python_version < \"3.9\""} tzdata = {version = "*", markers = "python_version >= \"3.6\""} [[package]] @@ -510,7 +470,20 @@ urllib3 = ">=1.21.1,<1.27" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "setuptools" +version = "65.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -556,7 +529,7 @@ virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2, [package.extras] docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] -testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] [[package]] name = "typing-extensions" @@ -568,7 +541,7 @@ python-versions = ">=3.7" [[package]] name = "tzdata" -version = "2022.5" +version = "2022.6" description = "Provider of IANA time zone data" category = "main" optional = false @@ -583,13 +556,12 @@ optional = false python-versions = ">=3.6" [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} pytz-deprecation-shim = "*" tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] devenv = ["black", "pyroma", "pytest-cov", "zest.releaser"] -test = ["pytest-mock (>=3.3)", "pytest (>=4.3)"] +test = ["pytest (>=4.3)", "pytest-mock (>=3.3)"] [[package]] name = "urllib3" @@ -600,8 +572,8 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] -brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -635,22 +607,10 @@ MarkupSafe = ">=2.1.1" [package.extras] watchdog = ["watchdog"] -[[package]] -name = "zipp" -version = "3.10.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "jaraco.functools", "more-itertools", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] - [metadata] lock-version = "1.1" -python-versions = "^3.8" -content-hash = "175178de9d664153a3380ed1e0065b7f29eab769052eff1d98e0df7f50de4754" +python-versions = "~3.10" +content-hash = "73950b6c92d30141cf0ce175dce5cf45d2354c3c013c692e6cc1587ec2d3be1d" [metadata.files] apscheduler = [ @@ -668,24 +628,6 @@ background = [ {file = "background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802"}, {file = "background-0.2.1.tar.gz", hash = "sha256:4a5ed40b4a2a9f3340b1402862725d35016dc2490f95d89a2de47c3ddf215b91"}, ] -"backports.zoneinfo" = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] black = [ {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, @@ -810,10 +752,6 @@ idna = [ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] -importlib-metadata = [ - {file = "importlib_metadata-5.0.0-py3-none-any.whl", hash = "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"}, - {file = "importlib_metadata-5.0.0.tar.gz", hash = "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab"}, -] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, @@ -914,19 +852,16 @@ pathspec = [ {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, ] peewee = [ - {file = "peewee-3.15.3.tar.gz", hash = "sha256:cc934286d0c0842203abe66a3c6583d1463371e633b03d6da054d0f74e70706f"}, + {file = "peewee-3.15.4.tar.gz", hash = "sha256:2581520c8dfbacd9d580c2719ae259f0637a9e46eda47dfc0ce01864c6366205"}, ] platformdirs = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, + {file = "platformdirs-2.5.3-py3-none-any.whl", hash = "sha256:0cb405749187a194f444c25c82ef7225232f11564721eabffc6ec70df83b11cb"}, + {file = "platformdirs-2.5.3.tar.gz", hash = "sha256:6e52c21afff35cb659c6e52d8b4d61b9bd544557180440538f255d9382c8cbe0"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -profig = [ - {file = "profig-0.5.1.tar.gz", hash = "sha256:cb9c094325a93505fc6325d13f3e679b281093223f143a96a6df8ad9c2bfc9a6"}, -] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, @@ -955,14 +890,21 @@ pytest-cov = [ {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, ] pytz = [ - {file = "pytz-2022.5-py2.py3-none-any.whl", hash = "sha256:335ab46900b1465e714b4fda4963d87363264eb662aab5e65da039c25f1f5b22"}, - {file = "pytz-2022.5.tar.gz", hash = "sha256:c4d88f472f54d615e9cd582a5004d1e5f624854a6a27a6211591c251f22a6914"}, + {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, + {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, ] pytz-deprecation-shim = [ {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, ] -requests = [] +requests = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] +setuptools = [ + {file = "setuptools-65.5.1-py3-none-any.whl", hash = "sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31"}, + {file = "setuptools-65.5.1.tar.gz", hash = "sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -984,8 +926,8 @@ typing-extensions = [ {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] tzdata = [ - {file = "tzdata-2022.5-py2.py3-none-any.whl", hash = "sha256:323161b22b7802fdc78f20ca5f6073639c64f1a7227c40cd3e19fd1d0ce6650a"}, - {file = "tzdata-2022.5.tar.gz", hash = "sha256:e15b2b3005e2546108af42a0eb4ccab4d9e225e2dfbf4f77aad50c70a4b1f3ab"}, + {file = "tzdata-2022.6-py2.py3-none-any.whl", hash = "sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342"}, + {file = "tzdata-2022.6.tar.gz", hash = "sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae"}, ] tzlocal = [ {file = "tzlocal-4.2-py3-none-any.whl", hash = "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745"}, @@ -1003,7 +945,3 @@ werkzeug = [ {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, {file = "Werkzeug-2.2.2.tar.gz", hash = "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f"}, ] -zipp = [ - {file = "zipp-3.10.0-py3-none-any.whl", hash = "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1"}, - {file = "zipp-3.10.0.tar.gz", hash = "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"}, -] diff --git a/pyproject.toml b/pyproject.toml index f30c78f..8ecb202 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,10 +7,9 @@ readme = "README.md" include = ["run.py"] [tool.poetry.dependencies] -python = "^3.8" +python = "~3.10" apscheduler = "^3.6.3" pyrss2gen = "^1.1" -profig = "^0.5.1" markdown = "^3.1.1" requests = "^2.25.1" coverage = "^5.5" From 0741bd182e12bc59cb45b92f9b3f8b5558b3ea0a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 12:51:25 +0100 Subject: [PATCH 047/182] use configparser and remove profig lib --- stacosys/conf/config.py | 41 ++++++++++++++++++++++++++++++----------- tests/test_config.py | 5 +++-- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index 4e77fb1..f88fcbf 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -3,7 +3,7 @@ from enum import Enum -import profig +import configparser class ConfigParameter(Enum): @@ -32,32 +32,51 @@ class ConfigParameter(Enum): class Config: def __init__(self): - self._params = dict() + self._cfg = configparser.ConfigParser() @classmethod def load(cls, config_pathname): - cfg = profig.Config(config_pathname) - cfg.sync() config = cls() - config._params.update(cfg) + config._cfg.read(config_pathname) return config + def _split_key(self, key: ConfigParameter): + section, param = str(key.value).split(".") + if not param: + param = section + section = None + return (section, param) + def exists(self, key: ConfigParameter): - return key.value in self._params + section, param = self._split_key(key) + return self._cfg.has_option(section, param) def get(self, key: ConfigParameter): - return self._params[key.value] if key.value in self._params else None + section, param = self._split_key(key) + return ( + self._cfg.get(section, param) + if self._cfg.has_option(section, param) + else None + ) def put(self, key: ConfigParameter, value): - self._params[key.value] = value + section, param = self._split_key(key) + if section and not self._cfg.has_section(section): + self._cfg.add_section(section) + self._cfg.set(section, param, str(value)) def get_int(self, key: ConfigParameter): - return int(self._params[key.value]) + value = self.get(key) + return int(value) if value else 0 def get_bool(self, key: ConfigParameter): - value = self._params[key.value].lower() + value = self.get(key) assert value in ("yes", "true", "no", "false") return value in ("yes", "true") def __repr__(self): - return self._params.__repr__() + d = dict() + for section in self._cfg.sections(): + for option in self._cfg.options(section): + d[".".join([section, option])] = self._cfg.get(section, option) + return str(d) diff --git a/tests/test_config.py b/tests/test_config.py index 07797c4..e098965 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -23,9 +23,10 @@ class ConfigTestCase(unittest.TestCase): self.assertEqual( self.conf.get(ConfigParameter.DB_SQLITE_FILE), EXPECTED_DB_SQLITE_FILE ) - self.assertEqual(self.conf.get(ConfigParameter.HTTP_PORT), EXPECTED_HTTP_PORT) self.assertIsNone(self.conf.get(ConfigParameter.HTTP_HOST)) - self.assertEqual(self.conf.get(ConfigParameter.HTTP_PORT), EXPECTED_HTTP_PORT) + self.assertEqual( + self.conf.get(ConfigParameter.HTTP_PORT), str(EXPECTED_HTTP_PORT) + ) self.assertEqual(self.conf.get_int(ConfigParameter.HTTP_PORT), 8080) try: self.conf.get_bool(ConfigParameter.DB_SQLITE_FILE) From 6f401ed3b7ad2ec065e747f4637c9025ff62fc54 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 21:20:51 +0100 Subject: [PATCH 048/182] CI --- .github/workflows/docker.yml | 5 +++- .github/workflows/lint.yml | 41 +++++++++++++++++--------------- .github/workflows/pytest.yml | 45 +++++++++++++++++++----------------- 3 files changed, 50 insertions(+), 41 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index bbee4cd..2637cbb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -6,7 +6,10 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '16' - name: Build the Docker image run: | echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 5bbba5f..b62dc12 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -5,22 +5,25 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: "3.9.9" - - name: Install poetry - uses: abatilo/actions-poetry@v2.0.0 - with: - poetry-version: 1.1.12 - - name: Install dependencies - run: poetry install - - name: Run flake8 - uses: julianwachholz/flake8-action@v2 - with: - checkName: "Python Lint" - path: . - plugins: flake8-spellcheck - config: flake8.ini - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/setup-node@v3 + with: + node-version: '16' + - uses: actions/checkout@v3 + - uses: actions/setup-python@v2 + with: + python-version: "3.10.8" + - name: Install poetry + uses: abatilo/actions-poetry@v2.0.0 + with: + poetry-version: 1.2.2 + - name: Install dependencies + run: poetry install + - name: Run flake8 + uses: julianwachholz/flake8-action@v2 + with: + checkName: "Python Lint" + path: . + plugins: flake8-spellcheck + config: flake8.ini + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index ff50a69..b01758a 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -6,26 +6,29 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8.10, 3.9.9] - poetry-version: [1.1.12] - os: [ubuntu-18.04, macos-latest, windows-latest] + python-version: [3.10.8] + poetry-version: [1.2.2] + os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Run image - uses: abatilo/actions-poetry@v2.0.0 - with: - poetry-version: ${{ matrix.poetry-version }} - - name: Install dependencies - run: poetry install - - name: Pytest and Coverage - run: | - poetry run coverage run -m --source=stacosys pytest tests - poetry run coverage report - - name: Send report to Coveralls - run: poetry run coveralls - env: - COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + - uses: actions/setup-node@v3 + with: + node-version: '16' + - uses: actions/checkout@v3 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Run image + uses: abatilo/actions-poetry@v2.0.0 + with: + poetry-version: ${{ matrix.poetry-version }} + - name: Install dependencies + run: poetry install + - name: Pytest and Coverage + run: | + poetry run coverage run -m --source=stacosys pytest tests + poetry run coverage report + - name: Send report to Coveralls + run: poetry run coveralls + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} From 3e572e550c48084750a17803dd1f3ffa15f02774 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 21:34:43 +0100 Subject: [PATCH 049/182] lint --- stacosys/conf/config.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index f88fcbf..1de3ce0 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -37,10 +37,10 @@ class Config: @classmethod def load(cls, config_pathname): config = cls() - config._cfg.read(config_pathname) + config._cfg.read(config_pathname) return config - def _split_key(self, key: ConfigParameter): + def _split_key(self, key: ConfigParameter): section, param = str(key.value).split(".") if not param: param = section @@ -61,7 +61,7 @@ class Config: def put(self, key: ConfigParameter, value): section, param = self._split_key(key) - if section and not self._cfg.has_section(section): + if section and not self._cfg.has_section(section): self._cfg.add_section(section) self._cfg.set(section, param, str(value)) @@ -78,5 +78,5 @@ class Config: d = dict() for section in self._cfg.sections(): for option in self._cfg.options(section): - d[".".join([section, option])] = self._cfg.get(section, option) + d[".".join([section, option])] = self._cfg.get(section, option) return str(d) From bc193c53705dcaab3d7cba51a4f260d66bfde774 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 21:54:39 +0100 Subject: [PATCH 050/182] Release 3.1 --- Dockerfile | 4 ++-- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index a9987d9..edddb8c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -FROM python:3.9-alpine +FROM python:3.10-alpine -ARG STACOSYS_VERSION=3.0 +ARG STACOSYS_VERSION=3.1 ARG STACOSYS_FILENAME=stacosys-${STACOSYS_VERSION}-py3-none-any.whl RUN apk update && apk add bash && apk add wget diff --git a/poetry.lock b/poetry.lock index b709db6..2046450 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,10 @@ [[package]] name = "apscheduler" -version = "3.9.1" +version = "3.9.1.post1" description = "In-process task scheduler with Cron-like capabilities" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.dependencies] pytz = "*" @@ -614,8 +614,8 @@ content-hash = "73950b6c92d30141cf0ce175dce5cf45d2354c3c013c692e6cc1587ec2d3be1d [metadata.files] apscheduler = [ - {file = "APScheduler-3.9.1-py2.py3-none-any.whl", hash = "sha256:ddc25a0ddd899de44d7f451f4375fb971887e65af51e41e5dcf681f59b8b2c9a"}, - {file = "APScheduler-3.9.1.tar.gz", hash = "sha256:65e6574b6395498d371d045f2a8a7e4f7d50c6ad21ef7313d15b1c7cf20df1e3"}, + {file = "APScheduler-3.9.1.post1-py2.py3-none-any.whl", hash = "sha256:c8c618241dbb2785ed5a687504b14cb1851d6f7b5a4edf3a51e39cc6a069967a"}, + {file = "APScheduler-3.9.1.post1.tar.gz", hash = "sha256:b2bea0309569da53a7261bfa0ce19c67ddbfe151bda776a6a907579fdbd3eb2a"}, ] atomicwrites = [ {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, diff --git a/pyproject.toml b/pyproject.toml index 8ecb202..889c98d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "stacosys" -version = "3.0" +version = "3.1" description = "STAtic COmmenting SYStem" authors = ["Yax"] readme = "README.md" From f43df83074fd843eecc0f1d1e4db80601174d373 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 21:59:47 +0100 Subject: [PATCH 051/182] Update badges --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6409247..a1875fa 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![GitLicense](https://gitlicense.com/badge/kianby/stacosys)](https://gitlicense.com/license/kianby/stacosys) - [![Python version](https://img.shields.io/badge/Python-3.9-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-2.1-green.svg)](https://flask.palletsprojects.com) [![Peewee version](https://img.shields.io/badge/Peewee-3.14-green.svg)](https://docs.peewee-orm.com/) + [![Python version](https://img.shields.io/badge/Python-3.10-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-2.1-green.svg)](https://flask.palletsprojects.com) [![Peewee version](https://img.shields.io/badge/Peewee-3.14-green.svg)](https://docs.peewee-orm.com/) [![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) From 57d6039e18122bda973248d36f503296ea3d6fa1 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 22:11:22 +0100 Subject: [PATCH 052/182] upgrade github actions --- .github/workflows/docker.yml | 3 --- .github/workflows/lint.yml | 7 ++----- .github/workflows/pytest.yml | 7 ++----- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2637cbb..5ef1f7e 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -7,9 +7,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: '16' - name: Build the Docker image run: | echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index b62dc12..6b63472 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -5,15 +5,12 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/setup-node@v3 - with: - node-version: '16' - uses: actions/checkout@v3 - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: "3.10.8" - name: Install poetry - uses: abatilo/actions-poetry@v2.0.0 + uses: abatilo/actions-poetry@v2 with: poetry-version: 1.2.2 - name: Install dependencies diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index b01758a..0293bc6 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -11,15 +11,12 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/setup-node@v3 - with: - node-version: '16' - uses: actions/checkout@v3 - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Run image - uses: abatilo/actions-poetry@v2.0.0 + uses: abatilo/actions-poetry@v2 with: poetry-version: ${{ matrix.poetry-version }} - name: Install dependencies From f8beb5f859469e41abb43925b8929c41ff4837b4 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 12 Nov 2022 22:32:13 +0100 Subject: [PATCH 053/182] check configuration --- run.py | 7 ++++--- stacosys/conf/config.py | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/run.py b/run.py index 33a833e..632883d 100644 --- a/run.py +++ b/run.py @@ -39,9 +39,10 @@ def stacosys_server(config_pathname): logger.error(f"Configuration file '{config_pathname}' not found.") sys.exit(1) - # initialize config + # load config conf = Config.load(config_pathname) - logger.info(conf.__repr__()) + conf.check() + logger.info(conf) # check database file exists (prevents from creating a fresh db) db_pathname = conf.get(ConfigParameter.DB_SQLITE_FILE) @@ -70,7 +71,7 @@ def stacosys_server(config_pathname): conf.get_int(ConfigParameter.SMTP_PORT), conf.get(ConfigParameter.SMTP_LOGIN), conf.get(ConfigParameter.SMTP_PASSWORD), - conf.get(ConfigParameter.SITE_ADMIN_EMAIL) + conf.get(ConfigParameter.SITE_ADMIN_EMAIL), ) # inject config parameters into flask diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index 1de3ce0..8399e2e 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -74,6 +74,10 @@ class Config: assert value in ("yes", "true", "no", "false") return value in ("yes", "true") + def check(self): + for key in ConfigParameter: + assert self.get(key), f"Paramètre introuvable : {key.value}" + def __repr__(self): d = dict() for section in self._cfg.sections(): From 07bdfbf2404cad236eb1fbd1edee86342b62810e Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 13 Nov 2022 09:51:29 +0100 Subject: [PATCH 054/182] Build docker image with built project --- .github/workflows/docker.yml | 13 ++++++++++++- .github/workflows/pytest.yml | 2 +- Dockerfile | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 5ef1f7e..e802687 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -6,7 +6,18 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.10.8" + - name: Install poetry + uses: abatilo/actions-poetry@v2 + with: + poetry-version: 1.2.2 + - name: Install dependencies + run: poetry install + - name: Build project + run: poetry build - name: Build the Docker image run: | echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 0293bc6..266d45c 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - name: Run image + - name: Install poetry uses: abatilo/actions-poetry@v2 with: poetry-version: ${{ matrix.poetry-version }} diff --git a/Dockerfile b/Dockerfile index edddb8c..656358a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,8 +17,8 @@ COPY docker/docker-init.sh /usr/local/bin/ RUN chmod +x usr/local/bin/docker-init.sh RUN cd / -#COPY ${STACOSYS_FILENAME} / -RUN wget https://github.com/kianby/stacosys/releases/download/${STACOSYS_VERSION}/${STACOSYS_FILENAME} +COPY dist/${STACOSYS_FILENAME} / +#RUN wget https://github.com/kianby/stacosys/releases/download/${STACOSYS_VERSION}/${STACOSYS_FILENAME} RUN python3 -m pip install ${STACOSYS_FILENAME} --target /stacosys RUN rm -f ${STACOSYS_FILENAME} From 6722a0de5cac7c983debbadd4c10f030b1825a04 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 13 Nov 2022 13:09:36 +0100 Subject: [PATCH 055/182] Improve config check --- run.py | 5 ++++- stacosys/conf/config.py | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/run.py b/run.py index 632883d..0f7c1a3 100644 --- a/run.py +++ b/run.py @@ -41,7 +41,10 @@ def stacosys_server(config_pathname): # load config conf = Config.load(config_pathname) - conf.check() + is_config_ok, erreur_config = conf.check() + if not is_config_ok: + logger.error(f"Configuration incorrecte '{erreur_config}'") + sys.exit(1) logger.info(conf) # check database file exists (prevents from creating a fresh db) diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index 8399e2e..5315036 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -71,12 +71,19 @@ class Config: def get_bool(self, key: ConfigParameter): value = self.get(key) - assert value in ("yes", "true", "no", "false") + assert value in ( + "yes", + "true", + "no", + "false", + ), f"Parameètre booléen incorrect {key.value}" return value in ("yes", "true") def check(self): for key in ConfigParameter: - assert self.get(key), f"Paramètre introuvable : {key.value}" + if not self.get(key): + return (False, key.value) + return (True, None) def __repr__(self): d = dict() From 6f3e4c0e9b804cf3d8e3b7497be163ed2cb341ef Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 13 Nov 2022 13:12:15 +0100 Subject: [PATCH 056/182] Release 3.2 --- Dockerfile | 2 +- pyproject.toml | 2 +- stacosys/__init__.py | 2 +- tests/test_stacosys.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 656358a..bea6e4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.10-alpine -ARG STACOSYS_VERSION=3.1 +ARG STACOSYS_VERSION=3.2 ARG STACOSYS_FILENAME=stacosys-${STACOSYS_VERSION}-py3-none-any.whl RUN apk update && apk add bash && apk add wget diff --git a/pyproject.toml b/pyproject.toml index 889c98d..f5e7d61 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "stacosys" -version = "3.1" +version = "3.2" description = "STAtic COmmenting SYStem" authors = ["Yax"] readme = "README.md" diff --git a/stacosys/__init__.py b/stacosys/__init__.py index f2dc0e4..080e846 100644 --- a/stacosys/__init__.py +++ b/stacosys/__init__.py @@ -1 +1 @@ -__version__ = "2.0" +__version__ = "3.2" diff --git a/tests/test_stacosys.py b/tests/test_stacosys.py index 5625c8d..060ca34 100644 --- a/tests/test_stacosys.py +++ b/tests/test_stacosys.py @@ -5,4 +5,4 @@ from stacosys import __version__ class StacosysTestCase(unittest.TestCase): def test_version(self): - self.assertEqual("2.0", __version__) + self.assertEqual("3.2", __version__) From f0fe289f1a0498605991406647f78d25eca0458c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 18 Nov 2022 19:21:35 +0100 Subject: [PATCH 057/182] Python 3.11 --- Dockerfile | 4 ++-- poetry.lock | 43 +++++++++++++++++++++--------------------- pyproject.toml | 4 ++-- stacosys/__init__.py | 2 +- tests/test_stacosys.py | 2 +- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/Dockerfile b/Dockerfile index bea6e4f..f985ffc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -FROM python:3.10-alpine +FROM python:3.11.0-alpine -ARG STACOSYS_VERSION=3.2 +ARG STACOSYS_VERSION=3.3 ARG STACOSYS_FILENAME=stacosys-${STACOSYS_VERSION}-py3-none-any.whl RUN apk update && apk add bash && apk add wget diff --git a/poetry.lock b/poetry.lock index 2046450..010c9fa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -68,7 +68,6 @@ click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -184,7 +183,7 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "flake8-black" -version = "0.3.3" +version = "0.3.4" description = "flake8 plugin to call black as a code style validator" category = "dev" optional = false @@ -192,9 +191,12 @@ python-versions = ">=3.7" [package.dependencies] black = ">=22.1.0" -flake8 = ">=3.0.0" +flake8 = ">=3" tomli = "*" +[package.extras] +develop = ["build", "twine"] + [[package]] name = "flask" version = "2.2.2" @@ -317,7 +319,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pathspec" -version = "0.10.1" +version = "0.10.2" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false @@ -333,7 +335,7 @@ python-versions = "*" [[package]] name = "platformdirs" -version = "2.5.3" +version = "2.5.4" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false @@ -505,13 +507,13 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" +category = "dev" optional = false python-versions = ">=3.7" [[package]] name = "tox" -version = "3.27.0" +version = "3.27.1" description = "tox is a generic virtualenv management and test command line tool" category = "main" optional = false @@ -524,7 +526,6 @@ packaging = ">=14" pluggy = ">=0.12.0" py = ">=1.4.17" six = ">=1.14.0" -tomli = {version = ">=2.0.1", markers = "python_version >= \"3.7\" and python_version < \"3.11\""} virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" [package.extras] @@ -578,7 +579,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.16.6" +version = "20.16.7" description = "Virtual Python Environment builder" category = "main" optional = false @@ -609,8 +610,8 @@ watchdog = ["watchdog"] [metadata] lock-version = "1.1" -python-versions = "~3.10" -content-hash = "73950b6c92d30141cf0ce175dce5cf45d2354c3c013c692e6cc1587ec2d3be1d" +python-versions = "~3.11" +content-hash = "ae1b03e2363b31597bef4cbb441218e1750e9747115e61dd91898400973771c6" [metadata.files] apscheduler = [ @@ -741,8 +742,8 @@ flake8 = [ {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, ] flake8-black = [ - {file = "flake8-black-0.3.3.tar.gz", hash = "sha256:8211f5e20e954cb57c709acccf2f3281ce27016d4c4b989c3e51f878bb7ce12a"}, - {file = "flake8_black-0.3.3-py3-none-any.whl", hash = "sha256:7d667d0059fd1aa468de1669d77cc934b7f1feeac258d57bdae69a8e73c4cd90"}, + {file = "flake8-black-0.3.4.tar.gz", hash = "sha256:7f96a4c80a828d09f1d550724e16aabb2adacd6a5f8e0bb051df422fc63d2183"}, + {file = "flake8_black-0.3.4-py3-none-any.whl", hash = "sha256:fb52f258dfa6a25645c4ba8730eadc5f2ecd32057bf6c9fc21aef1cba9fefd74"}, ] flask = [ {file = "Flask-2.2.2-py3-none-any.whl", hash = "sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526"}, @@ -848,15 +849,15 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] pathspec = [ - {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, - {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, + {file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"}, + {file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"}, ] peewee = [ {file = "peewee-3.15.4.tar.gz", hash = "sha256:2581520c8dfbacd9d580c2719ae259f0637a9e46eda47dfc0ce01864c6366205"}, ] platformdirs = [ - {file = "platformdirs-2.5.3-py3-none-any.whl", hash = "sha256:0cb405749187a194f444c25c82ef7225232f11564721eabffc6ec70df83b11cb"}, - {file = "platformdirs-2.5.3.tar.gz", hash = "sha256:6e52c21afff35cb659c6e52d8b4d61b9bd544557180440538f255d9382c8cbe0"}, + {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, + {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, @@ -918,8 +919,8 @@ tomli = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] tox = [ - {file = "tox-3.27.0-py2.py3-none-any.whl", hash = "sha256:89e4bc6df3854e9fc5582462e328dd3660d7d865ba625ae5881bbc63836a6324"}, - {file = "tox-3.27.0.tar.gz", hash = "sha256:d2c945f02a03d4501374a3d5430877380deb69b218b1df9b7f1d2f2a10befaf9"}, + {file = "tox-3.27.1-py2.py3-none-any.whl", hash = "sha256:f52ca66eae115fcfef0e77ef81fd107133d295c97c52df337adedb8dfac6ab84"}, + {file = "tox-3.27.1.tar.gz", hash = "sha256:b2a920e35a668cc06942ffd1cf3a4fb221a4d909ca72191fb6d84b0b18a7be04"}, ] typing-extensions = [ {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, @@ -938,8 +939,8 @@ urllib3 = [ {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, ] virtualenv = [ - {file = "virtualenv-20.16.6-py3-none-any.whl", hash = "sha256:186ca84254abcbde98180fd17092f9628c5fe742273c02724972a1d8a2035108"}, - {file = "virtualenv-20.16.6.tar.gz", hash = "sha256:530b850b523c6449406dfba859d6345e48ef19b8439606c5d74d7d3c9e14d76e"}, + {file = "virtualenv-20.16.7-py3-none-any.whl", hash = "sha256:efd66b00386fdb7dbe4822d172303f40cd05e50e01740b19ea42425cbe653e29"}, + {file = "virtualenv-20.16.7.tar.gz", hash = "sha256:8691e3ff9387f743e00f6bb20f70121f5e4f596cae754531f2b3b3a1b1ac696e"}, ] werkzeug = [ {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, diff --git a/pyproject.toml b/pyproject.toml index f5e7d61..d8d8746 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [tool.poetry] name = "stacosys" -version = "3.2" +version = "3.3" description = "STAtic COmmenting SYStem" authors = ["Yax"] readme = "README.md" include = ["run.py"] [tool.poetry.dependencies] -python = "~3.10" +python = "~3.11" apscheduler = "^3.6.3" pyrss2gen = "^1.1" markdown = "^3.1.1" diff --git a/stacosys/__init__.py b/stacosys/__init__.py index 080e846..587c2ab 100644 --- a/stacosys/__init__.py +++ b/stacosys/__init__.py @@ -1 +1 @@ -__version__ = "3.2" +__version__ = "3.3" diff --git a/tests/test_stacosys.py b/tests/test_stacosys.py index 060ca34..55e0869 100644 --- a/tests/test_stacosys.py +++ b/tests/test_stacosys.py @@ -5,4 +5,4 @@ from stacosys import __version__ class StacosysTestCase(unittest.TestCase): def test_version(self): - self.assertEqual("3.2", __version__) + self.assertEqual("3.3", __version__) From 86f0847514f0a03b89afd7cca3df471c122dc648 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 18 Nov 2022 19:23:23 +0100 Subject: [PATCH 058/182] CI Python 3.11.0 --- .github/workflows/docker.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/pytest.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e802687..bf4f989 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -9,7 +9,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: "3.10.8" + python-version: "3.11.0" - name: Install poetry uses: abatilo/actions-poetry@v2 with: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6b63472..fcb2689 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,7 +8,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: "3.10.8" + python-version: "3.11.0" - name: Install poetry uses: abatilo/actions-poetry@v2 with: diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 266d45c..81d2900 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -6,7 +6,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.10.8] + python-version: [3.11.0] poetry-version: [1.2.2] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} From 9000606581ed6367fba57d2820fb0a1b0cfe2a8d Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 18 Nov 2022 21:02:35 +0100 Subject: [PATCH 059/182] black format --- stacosys/core/rss.py | 13 +++++++++++-- stacosys/db/dao.py | 4 +++- stacosys/interface/web/admin.py | 4 +++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/stacosys/core/rss.py b/stacosys/core/rss.py index 958f155..ce5253a 100644 --- a/stacosys/core/rss.py +++ b/stacosys/core/rss.py @@ -34,11 +34,20 @@ class Rss: .order_by(-Comment.published) .limit(10) ): - item_link = "%s://%s%s" % (self._rss_proto, self._site_url, row.url) + item_link = "%s://%s%s" % ( + self._rss_proto, + self._site_url, + row.url, + ) items.append( PyRSS2Gen.RSSItem( title="%s - %s://%s%s" - % (self._rss_proto, row.author_name, self._site_url, row.url), + % ( + self._rss_proto, + row.author_name, + self._site_url, + row.url, + ), link=item_link, description=md.convert(row.content), guid=PyRSS2Gen.Guid("%s/%d" % (item_link, row.id)), diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index 597579d..f2876d2 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -47,7 +47,9 @@ def count_published_comments(url): .where((Comment.url == url) & (Comment.published.is_null(False))) .count() if url - else Comment.select(Comment).where(Comment.published.is_null(False)).count() + else Comment.select(Comment) + .where(Comment.published.is_null(False)) + .count() ) diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index c65ee0a..735d457 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -51,7 +51,9 @@ def logout(): @app.route("/web/admin", methods=["GET"]) def admin_homepage(): - if not ("user" in session and session["user"] == app.config.get("WEB_USERNAME")): + if not ( + "user" in session and session["user"] == app.config.get("WEB_USERNAME") + ): # TODO localization flash("Vous avez été déconnecté.") return redirect("/web/login") From c6ca525778d7dfdf38d6540897d077a954b3bdbf Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 14:44:06 +0100 Subject: [PATCH 060/182] move run.py --- run.sh | 2 +- run.py => stacosys/run.py | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename run.py => stacosys/run.py (100%) diff --git a/run.sh b/run.sh index 3ee772c..fb544ec 100755 --- a/run.sh +++ b/run.sh @@ -1,3 +1,3 @@ #!/bin/sh -python3 run.py "$@" +python3 stacosys/run.py "$@" diff --git a/run.py b/stacosys/run.py similarity index 100% rename from run.py rename to stacosys/run.py From ceed951796b15c5615f5460b6f637ca50ebcded9 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:40:15 +0100 Subject: [PATCH 061/182] check everything with a Makefile --- Makefile | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..02911e8 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +all: test typehint lint black + +test: + pytest + +typehint: + mypy --ignore-missing-imports stacosys/ + +lint: + pylint stacosys/ + +black: + black -l 79 stacosys/ \ No newline at end of file From 9d10bce918707a63576f9a39ec76393d99beef24 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:40:58 +0100 Subject: [PATCH 062/182] Upgrade dev tools --- poetry.lock | 284 ++++++++++++++++++++++++++++++++++++++++--------- pyproject.toml | 14 +-- 2 files changed, 241 insertions(+), 57 deletions(-) diff --git a/poetry.lock b/poetry.lock index 010c9fa..5aa408f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -26,12 +26,16 @@ twisted = ["twisted"] zookeeper = ["kazoo"] [[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." +name = "astroid" +version = "2.12.12" +description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.7.2" + +[package.dependencies] +lazy-object-proxy = ">=1.4.0" +wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} [[package]] name = "attrs" @@ -121,6 +125,9 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +[package.dependencies] +toml = {version = "*", optional = true, markers = "extra == \"toml\""} + [package.extras] toml = ["toml"] @@ -140,6 +147,17 @@ requests = ">=1.0.0" [package.extras] yaml = ["PyYAML (>=3.10)"] +[[package]] +name = "dill" +version = "0.3.6" +description = "serialize all of python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +graph = ["objgraph (>=1.7.2)"] + [[package]] name = "distlib" version = "0.3.6" @@ -231,6 +249,20 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile-deprecated-finder = ["pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + [[package]] name = "itsdangerous" version = "2.1.2" @@ -253,6 +285,14 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "lazy-object-proxy" +version = "1.8.0" +description = "A fast and thorough lazy object proxy." +category = "dev" +optional = false +python-versions = ">=3.7" + [[package]] name = "markdown" version = "3.4.1" @@ -282,19 +322,19 @@ python-versions = ">=3.6" [[package]] name = "mypy" -version = "0.942" +version = "0.991" description = "Optional static typing for Python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] mypy-extensions = ">=0.4.3" -tomli = ">=1.1.0" typing-extensions = ">=3.10" [package.extras] dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] python2 = ["typed-ast (>=1.4.0,<2)"] reports = ["lxml"] @@ -381,6 +421,27 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "pylint" +version = "2.15.6" +description = "python code static checker" +category = "dev" +optional = false +python-versions = ">=3.7.2" + +[package.dependencies] +astroid = ">=2.12.12,<=2.14.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = ">=0.2" +isort = ">=4.2.5,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomlkit = ">=0.10.1" + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + [[package]] name = "pyparsing" version = "3.0.9" @@ -402,37 +463,33 @@ python-versions = "*" [[package]] name = "pytest" -version = "6.2.5" +version = "7.2.0" description = "pytest: simple powerful testing with Python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] [[package]] name = "pytest-cov" -version = "2.12.1" +version = "4.0.0" description = "Pytest plugin for measuring coverage." category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" [package.dependencies] -coverage = ">=5.2.1" +coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" -toml = "*" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] @@ -476,7 +533,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "65.5.1" +version = "65.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false @@ -511,6 +568,14 @@ category = "dev" optional = false python-versions = ">=3.7" +[[package]] +name = "tomlkit" +version = "0.11.6" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "tox" version = "3.27.1" @@ -608,18 +673,27 @@ MarkupSafe = ">=2.1.1" [package.extras] watchdog = ["watchdog"] +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + [metadata] lock-version = "1.1" python-versions = "~3.11" -content-hash = "ae1b03e2363b31597bef4cbb441218e1750e9747115e61dd91898400973771c6" +content-hash = "d26f06a75123eb12e0ad3a77ffa15ead9cd93fd4c7f1ae10ab7d841910805b61" [metadata.files] apscheduler = [ {file = "APScheduler-3.9.1.post1-py2.py3-none-any.whl", hash = "sha256:c8c618241dbb2785ed5a687504b14cb1851d6f7b5a4edf3a51e39cc6a069967a"}, {file = "APScheduler-3.9.1.post1.tar.gz", hash = "sha256:b2bea0309569da53a7261bfa0ce19c67ddbfe151bda776a6a907579fdbd3eb2a"}, ] -atomicwrites = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +astroid = [ + {file = "astroid-2.12.12-py3-none-any.whl", hash = "sha256:72702205200b2a638358369d90c222d74ebc376787af8fb2f7f2a86f7b5cc85f"}, + {file = "astroid-2.12.12.tar.gz", hash = "sha256:1c00a14f5a3ed0339d38d2e2e5b74ea2591df5861c0936bb292b84ccf3a78d83"}, ] attrs = [ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, @@ -726,6 +800,10 @@ coveralls = [ {file = "coveralls-3.3.1-py2.py3-none-any.whl", hash = "sha256:f42015f31d386b351d4226389b387ae173207058832fbf5c8ec4b40e27b16026"}, {file = "coveralls-3.3.1.tar.gz", hash = "sha256:b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea"}, ] +dill = [ + {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, + {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, +] distlib = [ {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, @@ -757,6 +835,10 @@ iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] itsdangerous = [ {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, @@ -765,6 +847,27 @@ jinja2 = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] +lazy-object-proxy = [ + {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4fd031589121ad46e293629b39604031d354043bb5cdf83da4e93c2d7f3389fe"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:b70d6e7a332eb0217e7872a73926ad4fdc14f846e85ad6749ad111084e76df25"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:eb329f8d8145379bf5dbe722182410fe8863d186e51bf034d2075eb8d85ee25b"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4e2d9f764f1befd8bdc97673261b8bb888764dfdbd7a4d8f55e4fbcabb8c3fb7"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:e20bfa6db17a39c706d24f82df8352488d2943a3b7ce7d4c22579cb89ca8896e"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:14010b49a2f56ec4943b6cf925f597b534ee2fe1f0738c84b3bce0c1a11ff10d"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6850e4aeca6d0df35bb06e05c8b934ff7c533734eb51d0ceb2d63696f1e6030c"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:5b51d6f3bfeb289dfd4e95de2ecd464cd51982fe6f00e2be1d0bf94864d58acd"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6f593f26c470a379cf7f5bc6db6b5f1722353e7bf937b8d0d0b3fba911998858"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1c7c0433154bb7c54185714c6929acc0ba04ee1b167314a779b9025517eada"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:d176f392dbbdaacccf15919c77f526edf11a34aece58b55ab58539807b85436f"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:afcaa24e48bb23b3be31e329deb3f1858f1f1df86aea3d70cb5c8578bfe5261c"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:71d9ae8a82203511a6f60ca5a1b9f8ad201cac0fc75038b2dc5fa519589c9288"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:8f6ce2118a90efa7f62dd38c7dbfffd42f468b180287b748626293bf12ed468f"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:eac3a9a5ef13b332c059772fd40b4b1c3d45a3a2b05e33a361dee48e54a4dad0"}, + {file = "lazy_object_proxy-1.8.0-pp37-pypy37_pp73-any.whl", hash = "sha256:ae032743794fba4d171b5b67310d69176287b5bf82a21f588282406a79498891"}, + {file = "lazy_object_proxy-1.8.0-pp38-pypy38_pp73-any.whl", hash = "sha256:7e1561626c49cb394268edd00501b289053a652ed762c58e1081224c8d881cec"}, + {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"}, +] markdown = [ {file = "Markdown-3.4.1-py3-none-any.whl", hash = "sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186"}, {file = "Markdown-3.4.1.tar.gz", hash = "sha256:3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff"}, @@ -816,29 +919,36 @@ mccabe = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] mypy = [ - {file = "mypy-0.942-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5bf44840fb43ac4074636fd47ee476d73f0039f4f54e86d7265077dc199be24d"}, - {file = "mypy-0.942-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dcd955f36e0180258a96f880348fbca54ce092b40fbb4b37372ae3b25a0b0a46"}, - {file = "mypy-0.942-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6776e5fa22381cc761df53e7496a805801c1a751b27b99a9ff2f0ca848c7eca0"}, - {file = "mypy-0.942-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:edf7237137a1a9330046dbb14796963d734dd740a98d5e144a3eb1d267f5f9ee"}, - {file = "mypy-0.942-cp310-cp310-win_amd64.whl", hash = "sha256:64235137edc16bee6f095aba73be5334677d6f6bdb7fa03cfab90164fa294a17"}, - {file = "mypy-0.942-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b840cfe89c4ab6386c40300689cd8645fc8d2d5f20101c7f8bd23d15fca14904"}, - {file = "mypy-0.942-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2b184db8c618c43c3a31b32ff00cd28195d39e9c24e7c3b401f3db7f6e5767f5"}, - {file = "mypy-0.942-cp36-cp36m-win_amd64.whl", hash = "sha256:1a0459c333f00e6a11cbf6b468b870c2b99a906cb72d6eadf3d1d95d38c9352c"}, - {file = "mypy-0.942-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4c3e497588afccfa4334a9986b56f703e75793133c4be3a02d06a3df16b67a58"}, - {file = "mypy-0.942-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f6ad963172152e112b87cc7ec103ba0f2db2f1cd8997237827c052a3903eaa6"}, - {file = "mypy-0.942-cp37-cp37m-win_amd64.whl", hash = "sha256:0e2dd88410937423fba18e57147dd07cd8381291b93d5b1984626f173a26543e"}, - {file = "mypy-0.942-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:246e1aa127d5b78488a4a0594bd95f6d6fb9d63cf08a66dafbff8595d8891f67"}, - {file = "mypy-0.942-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d8d3ba77e56b84cd47a8ee45b62c84b6d80d32383928fe2548c9a124ea0a725c"}, - {file = "mypy-0.942-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2bc249409a7168d37c658e062e1ab5173300984a2dada2589638568ddc1db02b"}, - {file = "mypy-0.942-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9521c1265ccaaa1791d2c13582f06facf815f426cd8b07c3a485f486a8ffc1f3"}, - {file = "mypy-0.942-cp38-cp38-win_amd64.whl", hash = "sha256:e865fec858d75b78b4d63266c9aff770ecb6a39dfb6d6b56c47f7f8aba6baba8"}, - {file = "mypy-0.942-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6ce34a118d1a898f47def970a2042b8af6bdcc01546454726c7dd2171aa6dfca"}, - {file = "mypy-0.942-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:10daab80bc40f84e3f087d896cdb53dc811a9f04eae4b3f95779c26edee89d16"}, - {file = "mypy-0.942-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3841b5433ff936bff2f4dc8d54cf2cdbfea5d8e88cedfac45c161368e5770ba6"}, - {file = "mypy-0.942-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f7106cbf9cc2f403693bf50ed7c9fa5bb3dfa9007b240db3c910929abe2a322"}, - {file = "mypy-0.942-cp39-cp39-win_amd64.whl", hash = "sha256:7742d2c4e46bb5017b51c810283a6a389296cda03df805a4f7869a6f41246534"}, - {file = "mypy-0.942-py3-none-any.whl", hash = "sha256:a1b383fe99678d7402754fe90448d4037f9512ce70c21f8aee3b8bf48ffc51db"}, - {file = "mypy-0.942.tar.gz", hash = "sha256:17e44649fec92e9f82102b48a3bf7b4a5510ad0cd22fa21a104826b5db4903e2"}, + {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, + {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, + {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, + {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, + {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, + {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, + {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, + {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, + {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, + {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, + {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, + {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, + {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, + {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, + {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, + {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, + {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, + {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, + {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, + {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, + {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, + {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, + {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, + {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, @@ -875,6 +985,10 @@ pyflakes = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] +pylint = [ + {file = "pylint-2.15.6-py3-none-any.whl", hash = "sha256:15060cc22ed6830a4049cf40bc24977744df2e554d38da1b2657591de5bcd052"}, + {file = "pylint-2.15.6.tar.gz", hash = "sha256:25b13ddcf5af7d112cf96935e21806c1da60e676f952efb650130f2a4483421c"}, +] pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, @@ -883,12 +997,12 @@ pyrss2gen = [ {file = "PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7"}, ] pytest = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, + {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, + {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, ] pytest-cov = [ - {file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"}, - {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, + {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, + {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, ] pytz = [ {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, @@ -903,8 +1017,8 @@ requests = [ {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, ] setuptools = [ - {file = "setuptools-65.5.1-py3-none-any.whl", hash = "sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31"}, - {file = "setuptools-65.5.1.tar.gz", hash = "sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f"}, + {file = "setuptools-65.6.0-py3-none-any.whl", hash = "sha256:6211d2f5eddad8757bd0484923ca7c0a6302ebc4ab32ea5e94357176e0ca0840"}, + {file = "setuptools-65.6.0.tar.gz", hash = "sha256:d1eebf881c6114e51df1664bc2c9133d022f78d12d5f4f665b9191f084e2862d"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -918,6 +1032,10 @@ tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +tomlkit = [ + {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, + {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, +] tox = [ {file = "tox-3.27.1-py2.py3-none-any.whl", hash = "sha256:f52ca66eae115fcfef0e77ef81fd107133d295c97c52df337adedb8dfac6ab84"}, {file = "tox-3.27.1.tar.gz", hash = "sha256:b2a920e35a668cc06942ffd1cf3a4fb221a4d909ca72191fb6d84b0b18a7be04"}, @@ -946,3 +1064,69 @@ werkzeug = [ {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, {file = "Werkzeug-2.2.2.tar.gz", hash = "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f"}, ] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] diff --git a/pyproject.toml b/pyproject.toml index d8d8746..d129270 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,13 +18,13 @@ tox = "^3.24.5" background = "^0.2.1" Flask = "^2.1.1" -[tool.poetry.dev-dependencies] -mypy = "^0.942" -flake8-black = "^0.3.2" -black = "^22.3.0" -pytest = "^6.2.4" -pytest-cov = "^2.12.1" -coveralls = "^3.2.0" +[tool.poetry.group.dev.dependencies] +pylint = "^2.15.5" +mypy = "^0.991" +pytest = "^7.2.0" +coveralls = "^3.3.1" +flake8-black = "^0.3.4" +pytest-cov = "^4.0.0" [build-system] requires = ["poetry-core>=1.0.0"] From 66180e8178a5807e3f170dcd2ab449fa9a698778 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:41:14 +0100 Subject: [PATCH 063/182] remove useless code --- stacosys/__init__.py | 1 - tests/test_stacosys.py | 8 -------- 2 files changed, 9 deletions(-) delete mode 100644 stacosys/__init__.py delete mode 100644 tests/test_stacosys.py diff --git a/stacosys/__init__.py b/stacosys/__init__.py deleted file mode 100644 index 587c2ab..0000000 --- a/stacosys/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "3.3" diff --git a/tests/test_stacosys.py b/tests/test_stacosys.py deleted file mode 100644 index 55e0869..0000000 --- a/tests/test_stacosys.py +++ /dev/null @@ -1,8 +0,0 @@ -import unittest - -from stacosys import __version__ - - -class StacosysTestCase(unittest.TestCase): - def test_version(self): - self.assertEqual("3.3", __version__) From b9947afff545d57b2eb0dcb0e39fd004c0b11a95 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:41:33 +0100 Subject: [PATCH 064/182] tired of vs code issues with py projects --- stacosys.code-workspace | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 stacosys.code-workspace diff --git a/stacosys.code-workspace b/stacosys.code-workspace deleted file mode 100644 index 876a149..0000000 --- a/stacosys.code-workspace +++ /dev/null @@ -1,8 +0,0 @@ -{ - "folders": [ - { - "path": "." - } - ], - "settings": {} -} \ No newline at end of file From 847ee2930a5716072d4505c5ce0c0c266cdf4e7d Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:42:08 +0100 Subject: [PATCH 065/182] Sublime text project with LSP --- stacosys.sublime-project | 21 +++ stacosys.sublime-workspace | 342 +++++++++++++++++++++++++++++++++++++ 2 files changed, 363 insertions(+) create mode 100644 stacosys.sublime-project create mode 100644 stacosys.sublime-workspace diff --git a/stacosys.sublime-project b/stacosys.sublime-project new file mode 100644 index 0000000..9615733 --- /dev/null +++ b/stacosys.sublime-project @@ -0,0 +1,21 @@ +{ + "folders": + [ + { + "path": "." + } + ], + "settings": + { + "LSP": + { + "LSP-pylsp": + { + "settings": + { + "pylsp.plugins.jedi.environment": "./.venv" + } + } + } + } +} diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace new file mode 100644 index 0000000..91363df --- /dev/null +++ b/stacosys.sublime-workspace @@ -0,0 +1,342 @@ +{ + "auto_complete": + { + "selected_items": + [ + ] + }, + "buffers": + [ + { + "file": "run.sh", + "settings": + { + "buffer_size": 40, + "encoding": "UTF-8", + "line_ending": "Unix" + } + }, + { + "contents": "Package Control Messages\n========================\n\nNord\n----\n\n

\n\n

\n\n

\n\n

\n\n

\n\n

An arctic, north-bluish clean and elegant Sublime Text color theme.

\n\n

Designed for a fluent and clear workflow based on the Nord color palette.

\n\n

\n\n Supports many bundled languages and third-party syntax plugins.\n\n ## Getting Started\n\n Visit the [official website][nord-home] to learn all about the [syntax highlighting][nord-home#syntax] features, details of the [editor elements][nord-home#editor-details] and the [one-command setup][nord-home#setup].\n\n Learn about the [installation and activation][nord-docs-home-install] and how to [develop][nord-docs-home-develop] the theme from the [official documentations][nord-docs-home].\n\n ### Quick Start\n\n Thanks to the [_package control_ registry][pc-pkg-nord], _Nord Sublime Text_ can be installed with one command.\n Please follow the [official installation instructions][pc-install] to set up _package control_ itself in order to install available packages from the registry.\n\n > **Nord requires a minimum Sublime Text version of [3.1.0 Build 3170][sbt-blog-announce-v3.1]!**\n > Nord makes use of the new [`.sublime-color-scheme` JSON file format][sbt-docs-color_schemes] that has been introduced in Sublime Text [version 3.1.0 Build 3170][sbt-blog-announce-v3.1] and is therefore the minimum required and supported version. The `.tmTheme` XML file format][sbt-docs-tmtheme] has been officially deprecated by the Sublime Text team and is not supported by Nord anymore.\n\n

Open the _package installation_ view through the command palette via Ctrl/+Shift+p and run the „Package Control: Install Package“ command.

\n

\n\n

Search for „Nord“ and press _Enter_ to install the theme.

\n

\n\n See _Nord Sublime Text_'s documentation for details about more installation options like a [manual import through a local `.sublime-package` file][nord-docs-home-install#manual].\n\n #### Activation\n\n To activate the _Nord_ color theme, open the [command palette][sbt-udocs-cmdp] via Ctrl/+Shift+p and run the „UI: Select Color Theme“ command or use the _Preferences_ ➜ _Color Theme…_ menu.\n\n

\n\n See _Nord Sublime Text_'s documentation for [more details about the activation][nord-docs-home-install#activation].\n\n ## Features\n\n

Your IDE. Your style.

The unified UI and editor syntax element design provides a clutter-free and fluidly merging appearance.

\n\n

\n\n

Beautiful code to keep focused.

The editor color scheme supports a wide range of programming languages — From bundled definitions up to many popular third-party syntax packages.

\n\n

\n\n

Small details with unobtrusive styles.

Popular and common code editor features like search result marker and brace matching are designed to get out of your way with a visually attractive appearance.

\n\n

\n\n ## Contributing\n\n Nord is an open source project and we love to receive contributions from the [community][nord-comm]!\n\n There are many ways to contribute, from [writing- and improving documentation and tutorials][nord-contrib-guide-docs], [reporting bugs][nord-contrib-guide-bugs], [submitting enhancement suggestions][nord-contrib-guide-enhance] that can be added to Nord by [submitting pull requests][nord-contrib-guide-pr].\n\n Please take a moment to read Nord's full [contributing guide][nord-contrib-guide] to learn about the development process, the project's used [styleguides][nord-contrib-guide-styles], [branch organization][nord-contrib-guide-branching] and [versioning][nord-contrib-guide-versioning] model.\n\n The guide also includes information about [minimal, complete, and verifiable examples][nord-contrib-guide-mcve] and other ways to contribute to the project like [improving existing issues][nord-contrib-guide-impr-issues] and [giving feedback on issues and pull requests][nord-contrib-guide-feedback].\n\n

\n\n

Copyright © 2016-present Arctic Ice Studio and Sven Greb

\n\n

\n\n [nord-comm]: https://www.nordtheme.com/community\n [nord-contrib-guide-branching]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#branch-organization\n [nord-contrib-guide-bugs]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#bug-reports\n [nord-contrib-guide-docs]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#documentations\n [nord-contrib-guide-enhance]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#enhancement-suggestions\n [nord-contrib-guide-feedback]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#give-feedback-on-issues-and-pull-requests\n [nord-contrib-guide-impr-issues]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#improve-issues\n [nord-contrib-guide-mcve]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#mcve\n [nord-contrib-guide-pr]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#pull-requests\n [nord-contrib-guide-styles]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#styleguides\n [nord-contrib-guide-versioning]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#versioning\n [nord-contrib-guide]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md\n [nord-docs-home-develop]: https://www.nordtheme.com/docs/ports/sublime-text/development\n [nord-docs-home-install]: https://www.nordtheme.com/docs/ports/sublime-text/installation\n [nord-docs-home-install#activation]: https://www.nordtheme.com/docs/ports/sublime-text/installation#activation\n [nord-docs-home-install#manual]: https://www.nordtheme.com/docs/ports/sublime-text/installation#manual\n [nord-docs-home]: https://www.nordtheme.com/docs/ports/sublime-text\n [nord-home]: https://www.nordtheme.com/ports/sublime-text\n [nord-home#editor-details]: https://www.nordtheme.com/ports/sublime-text#editor-details\n [nord-home#setup]: https://www.nordtheme.com/ports/sublime-text#setup\n [nord-home#syntax]: https://www.nordtheme.com/ports/sublime-text#syntax\n [pc-install]: https://packagecontrol.io/installation\n [pc-pkg-nord]: https://packagecontrol.io/packages/Nord\n [sbt-blog-announce-v3.1]: https://www.sublimetext.com/blog/articles/sublime-text-3-point-1\n [sbt-docs-color_schemes]: https://www.sublimetext.com/docs/3/color_schemes.html\n [sbt-docs-tmtheme]: https://www.sublimetext.com/docs/3/color_schemes_tmtheme.html\n [sbt-udocs-cmdp]: http://docs.sublimetext.info/en/latest/extensibility/command_palette.html", + "settings": + { + "buffer_size": 12298, + "line_ending": "Unix", + "name": "Package Control Messages", + "read_only": true, + "scratch": true + } + }, + { + "file": "stacosys/run.py", + "settings": + { + "buffer_size": 3315, + "encoding": "UTF-8", + "line_ending": "Unix" + } + } + ], + "build_system": "", + "build_system_choices": + [ + ], + "build_varint": "", + "command_palette": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + [ + "install", + "Package Control: Install Package" + ], + [ + "package re", + "Package Control: Remove Package" + ], + [ + "paka", + "Package Control: Remove Package" + ], + [ + "remove", + "Package Control: Remove Package" + ], + [ + "insta", + "Package Control: Install Package" + ], + [ + "format", + "LSP: Format Document" + ], + [ + "lsp", + "LSP: Toggle Diagnostics Panel" + ], + [ + "inst", + "Package Control: Install Package" + ], + [ + "pac", + "Package Control: Remove Package" + ] + ], + "width": 0.0 + }, + "console": + { + "height": 164.0, + "history": + [ + ] + }, + "distraction_free": + { + "menu_visible": true, + "show_minimap": false, + "show_open_files": false, + "show_tabs": false, + "side_bar_visible": false, + "status_bar_visible": false + }, + "expanded_folders": + [ + "/home/yannic/work/stacosys", + "/home/yannic/work/stacosys/stacosys", + "/home/yannic/work/stacosys/stacosys/conf", + "/home/yannic/work/stacosys/stacosys/core" + ], + "file_history": + [ + "/home/yannic/work/stacosys/stacosys/__init__.py", + "/home/yannic/work/stacosys/stacosys.sublime-project", + "/home/yannic/work/stacosys/stacosys/core/rss.py" + ], + "find": + { + "height": 0.0 + }, + "find_in_files": + { + "height": 0.0, + "where_history": + [ + ] + }, + "find_state": + { + "case_sensitive": false, + "find_history": + [ + ], + "highlight": true, + "in_selection": false, + "preserve_case": false, + "regex": false, + "replace_history": + [ + ], + "reverse": false, + "show_context": true, + "use_buffer2": true, + "whole_word": false, + "wrap": true + }, + "groups": + [ + { + "selected": 2, + "sheets": + [ + { + "buffer": 0, + "file": "run.sh", + "semi_transient": false, + "settings": + { + "buffer_size": 40, + "regions": + { + }, + "selection": + [ + [ + 27, + 27 + ] + ], + "settings": + { + "syntax": "Packages/ShellScript/Bash.sublime-syntax" + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "type": "text" + }, + { + "buffer": 1, + "semi_transient": false, + "settings": + { + "buffer_size": 12298, + "regions": + { + }, + "selection": + [ + [ + 12298, + 12298 + ] + ], + "settings": + { + "auto_indent": false, + "syntax": "Packages/Text/Plain text.tmLanguage", + "tab_width": 2, + "word_wrap": true + }, + "translation.x": 0.0, + "translation.y": 2862.0, + "zoom_level": 1.0 + }, + "stack_index": 2, + "type": "text" + }, + { + "buffer": 2, + "file": "stacosys/run.py", + "semi_transient": false, + "settings": + { + "buffer_size": 3315, + "regions": + { + }, + "selection": + [ + [ + 295, + 295 + ] + ], + "settings": + { + "lsp_active": true, + "lsp_language": + { + "lsp-pylsp": "python" + }, + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "type": "text" + } + ] + } + ], + "incremental_find": + { + "height": 0.0 + }, + "input": + { + "height": 0.0 + }, + "layout": + { + "cells": + [ + [ + 0, + 0, + 1, + 1 + ] + ], + "cols": + [ + 0.0, + 1.0 + ], + "rows": + [ + 0.0, + 1.0 + ] + }, + "menu_visible": true, + "output.diagnostics": + { + "height": 132.0 + }, + "output.find_results": + { + "height": 0.0 + }, + "output.mdpopups": + { + "height": 0.0 + }, + "pinned_build_system": "", + "project": "stacosys.sublime-project", + "replace": + { + "height": 0.0 + }, + "save_all_on_build": true, + "select_file": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 0.0 + }, + "select_project": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 0.0 + }, + "select_symbol": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 0.0 + }, + "selected_group": 0, + "settings": + { + }, + "show_minimap": true, + "show_open_files": false, + "show_tabs": true, + "side_bar_visible": true, + "side_bar_width": 308.0, + "status_bar_visible": true, + "template_settings": + { + } +} From 7b7103d38b7ae4e631d6cbc8477df997ed2a0c06 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:42:33 +0100 Subject: [PATCH 066/182] Formatting --- stacosys/run.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stacosys/run.py b/stacosys/run.py index 0f7c1a3..df838bb 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -22,7 +22,8 @@ def configure_logging(level): root_logger.setLevel(level) ch = logging.StreamHandler() ch.setLevel(level) - formatter = logging.Formatter("[%(asctime)s] %(name)s %(levelname)s %(message)s") + formatter = logging.Formatter( + "[%(asctime)s] %(name)s %(levelname)s %(message)s") ch.setFormatter(formatter) root_logger.addHandler(ch) From c5da5b9be9b630b8c7337c8c4a2286264d9dcdd7 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:12:47 +0100 Subject: [PATCH 067/182] fix mypy errors --- poetry.lock | 14 +++++++++++++- pyproject.toml | 1 + stacosys/__init__.py | 0 stacosys/conf/config.py | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 stacosys/__init__.py diff --git a/poetry.lock b/poetry.lock index 5aa408f..2842c27 100644 --- a/poetry.lock +++ b/poetry.lock @@ -597,6 +597,14 @@ virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2, docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] +[[package]] +name = "types-markdown" +version = "3.4.2.1" +description = "Typing stubs for Markdown" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "typing-extensions" version = "4.4.0" @@ -684,7 +692,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [metadata] lock-version = "1.1" python-versions = "~3.11" -content-hash = "d26f06a75123eb12e0ad3a77ffa15ead9cd93fd4c7f1ae10ab7d841910805b61" +content-hash = "94614b000f5848489ed0e32caf25a06df9daa05bc063d0e2fe03a00f6859d27b" [metadata.files] apscheduler = [ @@ -1040,6 +1048,10 @@ tox = [ {file = "tox-3.27.1-py2.py3-none-any.whl", hash = "sha256:f52ca66eae115fcfef0e77ef81fd107133d295c97c52df337adedb8dfac6ab84"}, {file = "tox-3.27.1.tar.gz", hash = "sha256:b2a920e35a668cc06942ffd1cf3a4fb221a4d909ca72191fb6d84b0b18a7be04"}, ] +types-markdown = [ + {file = "types-Markdown-3.4.2.1.tar.gz", hash = "sha256:03c0904cf5886a7d8193e2f50bcf842afc89e0ab80f060f389f6c2635c65628f"}, + {file = "types_Markdown-3.4.2.1-py3-none-any.whl", hash = "sha256:b2333f6f4b8f69af83de359e10a097e4a3f14bbd6d2484e1829d9b0ec56fa0cb"}, +] typing-extensions = [ {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, diff --git a/pyproject.toml b/pyproject.toml index d129270..d1ec3da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ peewee = "^3.14.8" tox = "^3.24.5" background = "^0.2.1" Flask = "^2.1.1" +types-markdown = "^3.4.2.1" [tool.poetry.group.dev.dependencies] pylint = "^2.15.5" diff --git a/stacosys/__init__.py b/stacosys/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index 5315036..c4d7ac0 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -44,7 +44,7 @@ class Config: section, param = str(key.value).split(".") if not param: param = section - section = None + section = "" return (section, param) def exists(self, key: ConfigParameter): From b90e50e3d57d6bae5a9c2baed60416f10d1c4f83 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:13:05 +0100 Subject: [PATCH 068/182] sublime project: hide useless folders and files --- stacosys.sublime-project | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stacosys.sublime-project b/stacosys.sublime-project index 9615733..d7a3a00 100644 --- a/stacosys.sublime-project +++ b/stacosys.sublime-project @@ -2,7 +2,9 @@ "folders": [ { - "path": "." + "path": ".", + "folder_exclude_patterns": ["__pycache__",".pytest_cache", ".mypy_cache"], + "file_exclude_patterns": [".coverage"] } ], "settings": From 470155345fc25114cfc0d556639de0e0bcc2829f Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:18:09 +0100 Subject: [PATCH 069/182] black default setting: line length is 88 chars max --- Makefile | 2 +- stacosys/db/dao.py | 4 +--- stacosys/interface/web/admin.py | 4 +--- stacosys/run.py | 11 +++++------ 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 02911e8..18d62d8 100644 --- a/Makefile +++ b/Makefile @@ -10,4 +10,4 @@ lint: pylint stacosys/ black: - black -l 79 stacosys/ \ No newline at end of file + black stacosys/ \ No newline at end of file diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index f2876d2..597579d 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -47,9 +47,7 @@ def count_published_comments(url): .where((Comment.url == url) & (Comment.published.is_null(False))) .count() if url - else Comment.select(Comment) - .where(Comment.published.is_null(False)) - .count() + else Comment.select(Comment).where(Comment.published.is_null(False)).count() ) diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index 735d457..c65ee0a 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -51,9 +51,7 @@ def logout(): @app.route("/web/admin", methods=["GET"]) def admin_homepage(): - if not ( - "user" in session and session["user"] == app.config.get("WEB_USERNAME") - ): + if not ("user" in session and session["user"] == app.config.get("WEB_USERNAME")): # TODO localization flash("Vous avez été déconnecté.") return redirect("/web/login") diff --git a/stacosys/run.py b/stacosys/run.py index df838bb..60f3a58 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -20,12 +20,11 @@ from stacosys.interface.web import admin def configure_logging(level): root_logger = logging.getLogger() root_logger.setLevel(level) - ch = logging.StreamHandler() - ch.setLevel(level) - formatter = logging.Formatter( - "[%(asctime)s] %(name)s %(levelname)s %(message)s") - ch.setFormatter(formatter) - root_logger.addHandler(ch) + handler = logging.StreamHandler() + handler.setLevel(level) + formatter = logging.Formatter("[%(asctime)s] %(name)s %(levelname)s %(message)s") + handler.setFormatter(formatter) + root_logger.addHandler(handler) def stacosys_server(config_pathname): From 10935880ac8daf0e654292458006b1b0dec48327 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 20 Nov 2022 15:57:29 +0100 Subject: [PATCH 070/182] sort imports --- Makefile | 1 + stacosys/conf/config.py | 3 +-- stacosys/core/mailer.py | 1 - stacosys/core/rss.py | 2 +- stacosys/interface/web/admin.py | 2 +- stacosys/model/comment.py | 4 +--- stacosys/run.py | 4 +--- 7 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 18d62d8..9e081e7 100644 --- a/Makefile +++ b/Makefile @@ -10,4 +10,5 @@ lint: pylint stacosys/ black: + isort --multi-line 3 --profile black stacosys/ black stacosys/ \ No newline at end of file diff --git a/stacosys/conf/config.py b/stacosys/conf/config.py index c4d7ac0..78adea8 100644 --- a/stacosys/conf/config.py +++ b/stacosys/conf/config.py @@ -1,9 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from enum import Enum - import configparser +from enum import Enum class ConfigParameter(Enum): diff --git a/stacosys/core/mailer.py b/stacosys/core/mailer.py index b58f75b..21f265f 100644 --- a/stacosys/core/mailer.py +++ b/stacosys/core/mailer.py @@ -4,7 +4,6 @@ import logging import smtplib import ssl - from email.mime.text import MIMEText logger = logging.getLogger(__name__) diff --git a/stacosys/core/rss.py b/stacosys/core/rss.py index ce5253a..42f9b8d 100644 --- a/stacosys/core/rss.py +++ b/stacosys/core/rss.py @@ -3,8 +3,8 @@ from datetime import datetime -import PyRSS2Gen import markdown +import PyRSS2Gen from stacosys.model.comment import Comment diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index c65ee0a..dafef93 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -4,7 +4,7 @@ import hashlib import logging -from flask import request, redirect, flash, render_template, session +from flask import flash, redirect, render_template, request, session from stacosys.db import dao from stacosys.interface import app diff --git a/stacosys/model/comment.py b/stacosys/model/comment.py index 843e8b6..a6f3324 100644 --- a/stacosys/model/comment.py +++ b/stacosys/model/comment.py @@ -1,9 +1,7 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- -from peewee import CharField -from peewee import DateTimeField -from peewee import TextField +from peewee import CharField, DateTimeField, TextField from stacosys.db.database import BaseModel diff --git a/stacosys/run.py b/stacosys/run.py index 60f3a58..0dd69b2 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -10,9 +10,7 @@ from stacosys.conf.config import Config, ConfigParameter from stacosys.core.mailer import Mailer from stacosys.core.rss import Rss from stacosys.db import database -from stacosys.interface import api -from stacosys.interface import app -from stacosys.interface import form +from stacosys.interface import api, app, form from stacosys.interface.web import admin From e3f92dab01243697a5da87f65e3124cfc4afee21 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 20 Nov 2022 15:57:44 +0100 Subject: [PATCH 071/182] Switch to pyright --- stacosys.sublime-project | 20 +- stacosys.sublime-workspace | 767 +++++++++++++++++++++++++++++++++---- 2 files changed, 708 insertions(+), 79 deletions(-) diff --git a/stacosys.sublime-project b/stacosys.sublime-project index d7a3a00..7d00994 100644 --- a/stacosys.sublime-project +++ b/stacosys.sublime-project @@ -7,17 +7,13 @@ "file_exclude_patterns": [".coverage"] } ], - "settings": - { - "LSP": - { - "LSP-pylsp": - { - "settings": - { - "pylsp.plugins.jedi.environment": "./.venv" - } + "settings": { + "LSP": { + "LSP-pyright": { + "settings": { + "python.analysis.diagnosticMode": "workspace" } - } - } + } + } + } } diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace index 91363df..21684d5 100644 --- a/stacosys.sublime-workspace +++ b/stacosys.sublime-workspace @@ -3,6 +3,10 @@ { "selected_items": [ + [ + "get", + "get_int" + ] ] }, "buffers": @@ -16,22 +20,335 @@ "line_ending": "Unix" } }, - { - "contents": "Package Control Messages\n========================\n\nNord\n----\n\n

\n\n

\n\n

\n\n

\n\n

\n\n

An arctic, north-bluish clean and elegant Sublime Text color theme.

\n\n

Designed for a fluent and clear workflow based on the Nord color palette.

\n\n

\n\n Supports many bundled languages and third-party syntax plugins.\n\n ## Getting Started\n\n Visit the [official website][nord-home] to learn all about the [syntax highlighting][nord-home#syntax] features, details of the [editor elements][nord-home#editor-details] and the [one-command setup][nord-home#setup].\n\n Learn about the [installation and activation][nord-docs-home-install] and how to [develop][nord-docs-home-develop] the theme from the [official documentations][nord-docs-home].\n\n ### Quick Start\n\n Thanks to the [_package control_ registry][pc-pkg-nord], _Nord Sublime Text_ can be installed with one command.\n Please follow the [official installation instructions][pc-install] to set up _package control_ itself in order to install available packages from the registry.\n\n > **Nord requires a minimum Sublime Text version of [3.1.0 Build 3170][sbt-blog-announce-v3.1]!**\n > Nord makes use of the new [`.sublime-color-scheme` JSON file format][sbt-docs-color_schemes] that has been introduced in Sublime Text [version 3.1.0 Build 3170][sbt-blog-announce-v3.1] and is therefore the minimum required and supported version. The `.tmTheme` XML file format][sbt-docs-tmtheme] has been officially deprecated by the Sublime Text team and is not supported by Nord anymore.\n\n

Open the _package installation_ view through the command palette via Ctrl/+Shift+p and run the „Package Control: Install Package“ command.

\n

\n\n

Search for „Nord“ and press _Enter_ to install the theme.

\n

\n\n See _Nord Sublime Text_'s documentation for details about more installation options like a [manual import through a local `.sublime-package` file][nord-docs-home-install#manual].\n\n #### Activation\n\n To activate the _Nord_ color theme, open the [command palette][sbt-udocs-cmdp] via Ctrl/+Shift+p and run the „UI: Select Color Theme“ command or use the _Preferences_ ➜ _Color Theme…_ menu.\n\n

\n\n See _Nord Sublime Text_'s documentation for [more details about the activation][nord-docs-home-install#activation].\n\n ## Features\n\n

Your IDE. Your style.

The unified UI and editor syntax element design provides a clutter-free and fluidly merging appearance.

\n\n

\n\n

Beautiful code to keep focused.

The editor color scheme supports a wide range of programming languages — From bundled definitions up to many popular third-party syntax packages.

\n\n

\n\n

Small details with unobtrusive styles.

Popular and common code editor features like search result marker and brace matching are designed to get out of your way with a visually attractive appearance.

\n\n

\n\n ## Contributing\n\n Nord is an open source project and we love to receive contributions from the [community][nord-comm]!\n\n There are many ways to contribute, from [writing- and improving documentation and tutorials][nord-contrib-guide-docs], [reporting bugs][nord-contrib-guide-bugs], [submitting enhancement suggestions][nord-contrib-guide-enhance] that can be added to Nord by [submitting pull requests][nord-contrib-guide-pr].\n\n Please take a moment to read Nord's full [contributing guide][nord-contrib-guide] to learn about the development process, the project's used [styleguides][nord-contrib-guide-styles], [branch organization][nord-contrib-guide-branching] and [versioning][nord-contrib-guide-versioning] model.\n\n The guide also includes information about [minimal, complete, and verifiable examples][nord-contrib-guide-mcve] and other ways to contribute to the project like [improving existing issues][nord-contrib-guide-impr-issues] and [giving feedback on issues and pull requests][nord-contrib-guide-feedback].\n\n

\n\n

Copyright © 2016-present Arctic Ice Studio and Sven Greb

\n\n

\n\n [nord-comm]: https://www.nordtheme.com/community\n [nord-contrib-guide-branching]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#branch-organization\n [nord-contrib-guide-bugs]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#bug-reports\n [nord-contrib-guide-docs]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#documentations\n [nord-contrib-guide-enhance]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#enhancement-suggestions\n [nord-contrib-guide-feedback]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#give-feedback-on-issues-and-pull-requests\n [nord-contrib-guide-impr-issues]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#improve-issues\n [nord-contrib-guide-mcve]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#mcve\n [nord-contrib-guide-pr]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#pull-requests\n [nord-contrib-guide-styles]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#styleguides\n [nord-contrib-guide-versioning]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md#versioning\n [nord-contrib-guide]: https://github.com/arcticicestudio/nord/blob/develop/CONTRIBUTING.md\n [nord-docs-home-develop]: https://www.nordtheme.com/docs/ports/sublime-text/development\n [nord-docs-home-install]: https://www.nordtheme.com/docs/ports/sublime-text/installation\n [nord-docs-home-install#activation]: https://www.nordtheme.com/docs/ports/sublime-text/installation#activation\n [nord-docs-home-install#manual]: https://www.nordtheme.com/docs/ports/sublime-text/installation#manual\n [nord-docs-home]: https://www.nordtheme.com/docs/ports/sublime-text\n [nord-home]: https://www.nordtheme.com/ports/sublime-text\n [nord-home#editor-details]: https://www.nordtheme.com/ports/sublime-text#editor-details\n [nord-home#setup]: https://www.nordtheme.com/ports/sublime-text#setup\n [nord-home#syntax]: https://www.nordtheme.com/ports/sublime-text#syntax\n [pc-install]: https://packagecontrol.io/installation\n [pc-pkg-nord]: https://packagecontrol.io/packages/Nord\n [sbt-blog-announce-v3.1]: https://www.sublimetext.com/blog/articles/sublime-text-3-point-1\n [sbt-docs-color_schemes]: https://www.sublimetext.com/docs/3/color_schemes.html\n [sbt-docs-tmtheme]: https://www.sublimetext.com/docs/3/color_schemes_tmtheme.html\n [sbt-udocs-cmdp]: http://docs.sublimetext.info/en/latest/extensibility/command_palette.html", - "settings": - { - "buffer_size": 12298, - "line_ending": "Unix", - "name": "Package Control Messages", - "read_only": true, - "scratch": true - } - }, { "file": "stacosys/run.py", "settings": { - "buffer_size": 3315, + "buffer_size": 3298, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 34, + 1, + "insert", + { + "characters": "no" + }, + "AgAAAOcFAAAAAAAA6AUAAAAAAAAAAAAA6AUAAAAAAADpBQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADnBQAAAAAAAOcFAAAAAAAAAAAAAAAA8L8" + ], + [ + 35, + 1, + "insert", + { + "characters": " " + }, + "AQAAAOkFAAAAAAAA6gUAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpBQAAAAAAAOkFAAAAAAAAAAAAAAAA8L8" + ], + [ + 36, + 1, + "left_delete", + null, + "AQAAAOkFAAAAAAAA6QUAAAAAAAABAAAAIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" + ], + [ + 37, + 1, + "insert", + { + "characters": "r" + }, + "AQAAAOkFAAAAAAAA6gUAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpBQAAAAAAAOkFAAAAAAAAAAAAAAAA8L8" + ], + [ + 38, + 1, + "insert", + { + "characters": " " + }, + "AQAAAOoFAAAAAAAA6wUAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" + ], + [ + 39, + 1, + "paste", + null, + "AQAAAOsFAAAAAAAA9gUAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrBQAAAAAAAOsFAAAAAAAAAAAAAAAA8L8" + ], + [ + 40, + 1, + "insert", + { + "characters": " or" + }, + "AwAAAPYFAAAAAAAA9wUAAAAAAAAAAAAA9wUAAAAAAAD4BQAAAAAAAAAAAAD4BQAAAAAAAPkFAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD2BQAAAAAAAPYFAAAAAAAAAAAAAAAA8L8" + ], + [ + 41, + 1, + "insert", + { + "characters": " " + }, + "AQAAAPkFAAAAAAAA+gUAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD5BQAAAAAAAPkFAAAAAAAAAAAAAAAA8L8" + ], + [ + 46, + 1, + "left_delete", + null, + "AQAAAOkFAAAAAAAA6QUAAAAAAAABAAAAcg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" + ], + [ + 47, + 1, + "insert", + { + "characters": "t" + }, + "AQAAAOkFAAAAAAAA6gUAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpBQAAAAAAAOkFAAAAAAAAAAAAAAAA8L8" + ], + [ + 59, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"get_int\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"position\":{\"character\":21,\"line\":91},\"symbolLabel\":\"get_int\",\"filePath\":\"/home/yannic/work/stacosys/stacosys/run.py\"},\"kind\":2,\"sortText\":\"09.9999.get_int\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "get_int" + }, + "AgAAAMgLAAAAAAAAyAsAAAAAAAADAAAAZ2V0yAsAAAAAAADPCwAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLCwAAAAAAAMsLAAAAAAAAAAAAAAAA8L8" + ] + ] + }, + { + "file": "Makefile", + "settings": + { + "buffer_size": 533, + "encoding": "UTF-8", + "line_ending": "Unix" + } + }, + { + "file": "stacosys/core/mailer.py", + "settings": + { + "buffer_size": 1087, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 11, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAEIEAAAAAAAAQwQAAAAAAAAAAAAAQwQAAAAAAABPBAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABCBAAAAAAAAEIEAAAAAAAAAAAAAAAA8L8" + ], + [ + 12, + 1, + "left_delete", + null, + "AQAAAEsEAAAAAAAASwQAAAAAAAAEAAAAICAgIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABPBAAAAAAAAE8EAAAAAAAAAAAAAAAA8L8" + ], + [ + 13, + 1, + "insert", + { + "characters": "else:" + }, + "BQAAAEsEAAAAAAAATAQAAAAAAAAAAAAATAQAAAAAAABNBAAAAAAAAAAAAABNBAAAAAAAAE4EAAAAAAAAAAAAAE4EAAAAAAAATwQAAAAAAAAAAAAATwQAAAAAAABQBAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLBAAAAAAAAEsEAAAAAAAAAAAAAAAA8L8" + ], + [ + 14, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAAFAEAAAAAAAAUQQAAAAAAAAAAAAAUQQAAAAAAABZBAAAAAAAAAAAAABZBAAAAAAAAF0EAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABQBAAAAAAAAFAEAAAAAAAAAAAAAAAA8L8" + ], + [ + 16, + 1, + "insert", + { + "characters": "False" + }, + "BQAAAF0EAAAAAAAAXgQAAAAAAAAAAAAAXgQAAAAAAABfBAAAAAAAAAAAAABfBAAAAAAAAGAEAAAAAAAAAAAAAGAEAAAAAAAAYQQAAAAAAAAAAAAAYQQAAAAAAABiBAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdBAAAAAAAAF0EAAAAAAAAAAAAAAAA8L8" + ], + [ + 44, + 1, + "insert", + { + "characters": "s" + }, + "AQAAAB4CAAAAAAAAHwIAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeAgAAAAAAAB4CAAAAAAAAAAAAAAAA8L8" + ], + [ + 53, + 1, + "left_delete", + null, + "AQAAAEQEAAAAAAAARAQAAAAAAAA1AAAAICAgICAgICBlbHNlOgogICAgICAgICAgICBGYWxzZQogICAgICAgIHJldHVybiBGYWxzZQo", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABEBAAAAAAAAHkEAAAAAAAAAAAAAAAAAAA" + ], + [ + 56, + 1, + "right_delete", + null, + "AQAAACwEAAAAAAAALAQAAAAAAAAXAAAAICAgICAgICAgICAgcmV0dXJuIFRydWU", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAsBAAAAAAAAEMEAAAAAAAA////////738" + ], + [ + 70, + 1, + "left_delete", + null, + "AQAAAB4CAAAAAAAAHgIAAAAAAAABAAAAcw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAfAgAAAAAAAB8CAAAAAAAAAAAAAAAA8L8" + ], + [ + 80, + 1, + "reindent", + null, + "AQAAACsEAAAAAAAANwQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAArBAAAAAAAACsEAAAAAAAAAAAAAAAA8L8" + ], + [ + 81, + 1, + "left_delete", + null, + "AQAAADMEAAAAAAAAMwQAAAAAAAAEAAAAICAgIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3BAAAAAAAADcEAAAAAAAAAAAAAAAA8L8" + ], + [ + 82, + 1, + "insert", + { + "characters": "reru" + }, + "BAAAADMEAAAAAAAANAQAAAAAAAAAAAAANAQAAAAAAAA1BAAAAAAAAAAAAAA1BAAAAAAAADYEAAAAAAAAAAAAADYEAAAAAAAANwQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAzBAAAAAAAADMEAAAAAAAAAAAAAAAA8L8" + ], + [ + 83, + 2, + "left_delete", + null, + "AgAAADYEAAAAAAAANgQAAAAAAAABAAAAdTUEAAAAAAAANQQAAAAAAAABAAAAcg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3BAAAAAAAADcEAAAAAAAAAAAAAAAA8L8" + ], + [ + 84, + 1, + "insert", + { + "characters": "turn" + }, + "BAAAADUEAAAAAAAANgQAAAAAAAAAAAAANgQAAAAAAAA3BAAAAAAAAAAAAAA3BAAAAAAAADgEAAAAAAAAAAAAADgEAAAAAAAAOQQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA1BAAAAAAAADUEAAAAAAAAAAAAAAAA8L8" + ], + [ + 85, + 1, + "insert", + { + "characters": " True" + }, + "BQAAADkEAAAAAAAAOgQAAAAAAAAAAAAAOgQAAAAAAAA7BAAAAAAAAAAAAAA7BAAAAAAAADwEAAAAAAAAAAAAADwEAAAAAAAAPQQAAAAAAAAAAAAAPQQAAAAAAAA+BAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA5BAAAAAAAADkEAAAAAAAAAAAAAAAA8L8" + ] + ] + }, + { + "file": "stacosys/db/dao.py", + "settings": + { + "buffer_size": 1633, + "line_ending": "Unix" + }, + "undo_stack": + [ + ] + }, + { + "file": "stacosys.sublime-project", + "settings": + { + "buffer_size": 381, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 4, + 1, + "", + null, + "AgAAAMMAAAAAAAAAZQEAAAAAAAAAAAAAZQEAAAAAAABlAQAAAAAAAPMAAAAgICAgInNldHRpbmdzIjoKICAgIHsKICAgICAgICAiTFNQIjoKICAgICAgICB7CiAgICAgICAgICAgICJMU1AtcHlsc3AiOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAic2V0dGluZ3MiOgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJweWxzcC5wbHVnaW5zLmplZGkuZW52aXJvbm1lbnQiOiAiLi8udmVudiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0", + "AQAAAAAAAAABAAAAtgEAAAAAAADDAAAAAAAAAAAAAAAAAPC/" + ], + [ + 8, + 1, + "paste", + null, + "AgAAACYBAAAAAAAAUwEAAAAAAAAAAAAAUwEAAAAAAABTAQAAAAAAABkAAAAvLyBQdXQgeW91ciBzZXR0aW5ncyBoZXJl", + "AQAAAAAAAAABAAAAJgEAAAAAAAA/AQAAAAAAAP///////+9/" + ] + ] + }, + { + "file": "stacosys/model/comment.py", + "settings": + { + "buffer_size": 471, + "line_ending": "Unix" + } + }, + { + "file": "stacosys/conf/config.py", + "settings": + { + "buffer_size": 2481, "encoding": "UTF-8", "line_ending": "Unix" } @@ -48,6 +365,50 @@ "last_filter": "", "selected_items": [ + [ + "diag", + "LSP: Goto Diagnostic in Project" + ], + [ + "lsp", + "LSP: Toggle Diagnostics Panel" + ], + [ + "Package Control: ", + "Package Control: Install Package" + ], + [ + "distr", + "View: Toggle Distraction Free" + ], + [ + "upg", + "Package Control: Upgrade Package" + ], + [ + "comment", + "Toggle Comment" + ], + [ + "form", + "LSP: Format Document" + ], + [ + "format", + "LSP: Format Document" + ], + [ + "lspc", + "LSP: Clear Diagnostics" + ], + [ + "ren", + "LSP: Rename Symbol" + ], + [ + "instal", + "Package Control: Install Package" + ], [ "install", "Package Control: Install Package" @@ -68,14 +429,6 @@ "insta", "Package Control: Install Package" ], - [ - "format", - "LSP: Format Document" - ], - [ - "lsp", - "LSP: Toggle Diagnostics Panel" - ], [ "inst", "Package Control: Install Package" @@ -108,17 +461,27 @@ "/home/yannic/work/stacosys", "/home/yannic/work/stacosys/stacosys", "/home/yannic/work/stacosys/stacosys/conf", - "/home/yannic/work/stacosys/stacosys/core" + "/home/yannic/work/stacosys/stacosys/core", + "/home/yannic/work/stacosys/stacosys/db", + "/home/yannic/work/stacosys/stacosys/interface", + "/home/yannic/work/stacosys/stacosys/interface/web", + "/home/yannic/work/stacosys/stacosys/model", + "/home/yannic/work/stacosys/tests" ], "file_history": [ - "/home/yannic/work/stacosys/stacosys/__init__.py", + "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/sys.pyi", + "/home/yannic/work/stacosys/stacosys/conf/config.py", + "/usr/lib64/python3.11/logging/__init__.py", "/home/yannic/work/stacosys/stacosys.sublime-project", + "/home/yannic/work/stacosys/flake8.ini", + "/home/yannic/work/stacosys/Makefile", + "/home/yannic/work/stacosys/stacosys/__init__.py", "/home/yannic/work/stacosys/stacosys/core/rss.py" ], "find": { - "height": 0.0 + "height": 28.0 }, "find_in_files": { @@ -132,6 +495,7 @@ "case_sensitive": false, "find_history": [ + "background" ], "highlight": true, "in_selection": false, @@ -141,15 +505,16 @@ [ ], "reverse": false, + "scrollbar_highlights": true, "show_context": true, "use_buffer2": true, + "use_gitignore": true, "whole_word": false, "wrap": true }, "groups": [ { - "selected": 2, "sheets": [ { @@ -171,69 +536,190 @@ ], "settings": { + "lsp_uri": "file:///home/yannic/work/stacosys/run.sh", "syntax": "Packages/ShellScript/Bash.sublime-syntax" }, "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 1, + "stack_index": 7, + "stack_multiselect": false, "type": "text" }, { "buffer": 1, - "semi_transient": false, - "settings": - { - "buffer_size": 12298, - "regions": - { - }, - "selection": - [ - [ - 12298, - 12298 - ] - ], - "settings": - { - "auto_indent": false, - "syntax": "Packages/Text/Plain text.tmLanguage", - "tab_width": 2, - "word_wrap": true - }, - "translation.x": 0.0, - "translation.y": 2862.0, - "zoom_level": 1.0 - }, - "stack_index": 2, - "type": "text" - }, - { - "buffer": 2, "file": "stacosys/run.py", "semi_transient": false, "settings": { - "buffer_size": 3315, + "buffer_size": 3298, "regions": { }, "selection": [ [ - 295, - 295 + 1918, + 1918 ] ], "settings": { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], "lsp_active": true, - "lsp_language": - { - "lsp-pylsp": "python" - }, + "lsp_hover_provider_count": 10, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/run.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 964.0, + "zoom_level": 1.0 + }, + "stack_index": 6, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 2, + "file": "Makefile", + "semi_transient": false, + "settings": + { + "buffer_size": 533, + "regions": + { + }, + "selection": + [ + [ + 334, + 334 + ] + ], + "settings": + { + "lsp_uri": "file:///home/yannic/work/stacosys/Makefile", + "syntax": "Packages/Makefile/Makefile.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": false + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 3, + "file": "stacosys/core/mailer.py", + "selected": true, + "semi_transient": false, + "settings": + { + "buffer_size": 1087, + "regions": + { + }, + "selection": + [ + [ + 1086, + 1086 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 10, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/core/mailer.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 399.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 4, + "file": "stacosys/db/dao.py", + "semi_transient": true, + "settings": + { + "buffer_size": 1633, + "regions": + { + }, + "selection": + [ + [ + 524, + 524 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/db/dao.py", "show_definitions": false, "syntax": "Packages/Python/Python.sublime-syntax", "tab_size": 4, @@ -243,7 +729,142 @@ "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 0, + "stack_index": 3, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 5, + "file": "stacosys.sublime-project", + "semi_transient": false, + "settings": + { + "buffer_size": 381, + "regions": + { + }, + "selection": + [ + [ + 364, + 364 + ] + ], + "settings": + { + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys.sublime-project", + "syntax": "Packages/JSON/JSON.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 2, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 6, + "file": "stacosys/model/comment.py", + "semi_transient": false, + "settings": + { + "buffer_size": 471, + "regions": + { + }, + "selection": + [ + [ + 150, + 150 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 6, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/model/comment.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 4, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 7, + "file": "stacosys/conf/config.py", + "semi_transient": false, + "settings": + { + "buffer_size": 2481, + "regions": + { + }, + "selection": + [ + [ + 0, + 0 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 6, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/conf/config.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 1539.0, + "zoom_level": 1.0 + }, + "stack_index": 5, + "stack_multiselect": false, "type": "text" } ] @@ -251,7 +872,7 @@ ], "incremental_find": { - "height": 0.0 + "height": 28.0 }, "input": { @@ -280,23 +901,35 @@ ] }, "menu_visible": true, + "output.LSP Log Panel": + { + "height": 0.0 + }, "output.diagnostics": { - "height": 132.0 + "height": 261.0 }, "output.find_results": { "height": 0.0 }, + "output.language servers": + { + "height": 132.0 + }, "output.mdpopups": { "height": 0.0 }, + "output.references": + { + "height": 208.0 + }, "pinned_build_system": "", "project": "stacosys.sublime-project", "replace": { - "height": 0.0 + "height": 52.0 }, "save_all_on_build": true, "select_file": @@ -334,7 +967,7 @@ "show_open_files": false, "show_tabs": true, "side_bar_visible": true, - "side_bar_width": 308.0, + "side_bar_width": 311.0, "status_bar_visible": true, "template_settings": { From add4348b3831d7e3d105de7b9ba7a81c535da4b5 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:38:25 +0100 Subject: [PATCH 072/182] Replaced by Makefile / pylint + LSP pyright --- .github/workflows/lint.yml | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index fcb2689..0000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: lint -on: push - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: "3.11.0" - - name: Install poetry - uses: abatilo/actions-poetry@v2 - with: - poetry-version: 1.2.2 - - name: Install dependencies - run: poetry install - - name: Run flake8 - uses: julianwachholz/flake8-action@v2 - with: - checkName: "Python Lint" - path: . - plugins: flake8-spellcheck - config: flake8.ini - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 2a96f1b368eeeb3a5bc379a2aff7fd59d9567c8e Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:38:58 +0100 Subject: [PATCH 073/182] Reorder more consistently --- Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 9e081e7..4ee41ee 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,8 @@ -all: test typehint lint black +all: black test typehint lint + +black: + isort --multi-line 3 --profile black stacosys/ + black stacosys/ test: pytest @@ -9,6 +13,3 @@ typehint: lint: pylint stacosys/ -black: - isort --multi-line 3 --profile black stacosys/ - black stacosys/ \ No newline at end of file From 37308f52132918af37564a29d9314688c59b7005 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:40:44 +0100 Subject: [PATCH 074/182] pylint fixes --- .pylintrc | 622 ++++++++++++++++++++++++++++++++ stacosys/core/mailer.py | 4 +- stacosys/db/dao.py | 4 +- stacosys/db/database.py | 1 + stacosys/interface/api.py | 10 +- stacosys/interface/form.py | 30 +- stacosys/interface/web/admin.py | 4 +- stacosys/run.py | 12 +- 8 files changed, 656 insertions(+), 31 deletions(-) create mode 100644 .pylintrc diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..51832a5 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,622 @@ +[MAIN] + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Load and enable all available extensions. Use --list-extensions to see a list +# all available extensions. +#enable-all-extensions= + +# In error mode, messages with a category besides ERROR or FATAL are +# suppressed, and no reports are done by default. Error mode is compatible with +# disabling specific errors. +#errors-only= + +# Always return a 0 (non-error) status code, even if lint errors are found. +# This is primarily useful in continuous integration scripts. +#exit-zero= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-allow-list= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. (This is an alternative name to extension-pkg-allow-list +# for backward compatibility.) +extension-pkg-whitelist= + +# Return non-zero exit code if any of these messages/categories are detected, +# even if score is above --fail-under value. Syntax same as enable. Messages +# specified are enabled, while categories only check already-enabled messages. +fail-on= + +# Specify a score threshold under which the program will exit with error. +fail-under=10 + +# Interpret the stdin as a python script, whose filename needs to be passed as +# the module_or_package argument. +#from-stdin= + +# Files or directories to be skipped. They should be base names, not paths. +ignore=CVS + +# Add files or directories matching the regular expressions patterns to the +# ignore-list. The regex matches against paths and can be in Posix or Windows +# format. Because '\' represents the directory delimiter on Windows systems, it +# can't be used as an escape character. +ignore-paths= + +# Files or directories matching the regular expression patterns are skipped. +# The regex matches against base names, not paths. The default value ignores +# Emacs file locks +ignore-patterns=^\.# + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis). It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use, and will cap the count on Windows to +# avoid hangs. +jobs=1 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python module names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Minimum Python version to use for version dependent checks. Will default to +# the version used to run pylint. +py-version=3.11 + +# Discover python modules and packages in the file system subtree. +recursive=no + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + +# In verbose mode, extra non-checker-related info will be displayed. +#verbose= + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. If left empty, argument names will be checked with the set +# naming style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. If left empty, attribute names will be checked with the set naming +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. If left empty, class attribute names will be checked +# with the set naming style. +#class-attribute-rgx= + +# Naming style matching correct class constant names. +class-const-naming-style=UPPER_CASE + +# Regular expression matching correct class constant names. Overrides class- +# const-naming-style. If left empty, class constant names will be checked with +# the set naming style. +#class-const-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. If left empty, class names will be checked with the set naming style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. If left empty, constant names will be checked with the set naming +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=snake_case + +# Regular expression matching correct function names. Overrides function- +# naming-style. If left empty, function names will be checked with the set +# naming style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. If left empty, inline iteration names will be checked +# with the set naming style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=snake_case + +# Regular expression matching correct method names. Overrides method-naming- +# style. If left empty, method names will be checked with the set naming style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=snake_case + +# Regular expression matching correct module names. Overrides module-naming- +# style. If left empty, module names will be checked with the set naming style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Regular expression matching correct type variable names. If left empty, type +# variable names will be checked with the set naming style. +#typevar-rgx= + +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. If left empty, variable names will be checked with the set +# naming style. +#variable-rgx= + + +[CLASSES] + +# Warn about protected attribute access inside special methods +check-protected-access-in-special-methods=no + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=cls + + +[DESIGN] + +# List of regular expressions of class ancestor names to ignore when counting +# public methods (see R0903) +exclude-too-few-public-methods= + +# List of qualified class names to ignore when counting class parents (see +# R0901) +ignored-parents= + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when caught. +overgeneral-exceptions=BaseException, + Exception + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=100 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[IMPORTS] + +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules= + +# Output a graph (.gv or any supported image format) of external dependencies +# to the given file (report RP0402 must not be disabled). +ext-import-graph= + +# Output a graph (.gv or any supported image format) of all (i.e. internal and +# external) dependencies to the given file (report RP0402 must not be +# disabled). +import-graph= + +# Output a graph (.gv or any supported image format) of internal dependencies +# to the given file (report RP0402 must not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + +[LOGGING] + +# The type of string formatting that logging methods do. `old` means using % +# formatting, `new` is for `{}` formatting. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, +# UNDEFINED. +confidence=HIGH, + CONTROL_FLOW, + INFERENCE, + INFERENCE_FAILURE, + UNDEFINED + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=raw-checker-failed, + bad-inline-option, + locally-disabled, + file-ignored, + suppressed-message, + useless-suppression, + deprecated-pragma, + use-symbolic-message-instead, + missing-module-docstring, + missing-class-docstring, + missing-function-docstring, + too-few-public-methods + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[METHOD_ARGS] + +# List of qualified names (i.e., library.method) which require a timeout +# parameter e.g. 'requests.api.get,requests.api.post' +timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + +# Regular expression of note tags to take in consideration. +notes-rgx= + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit,argparse.parse_error + + +[REPORTS] + +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'fatal', 'error', 'warning', 'refactor', +# 'convention', and 'info' which contain the number of messages in each +# category, as well as 'statement' which is the total number of statements +# analyzed. This score is used by the global evaluation report (RP0004). +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +#output-format= + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[SIMILARITIES] + +# Comments are removed from the similarity computation +ignore-comments=yes + +# Docstrings are removed from the similarity computation +ignore-docstrings=yes + +# Imports are removed from the similarity computation +ignore-imports=yes + +# Signatures are removed from the similarity computation +ignore-signatures=yes + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it work, +# install the 'python-enchant' package. +spelling-dict= + +# List of comma separated words that should be considered directives if they +# appear at the beginning of a comment and should not be checked. +spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains the private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. +spelling-store-unknown-words=no + + +[STRING] + +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=no + +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of symbolic message names to ignore for Mixin members. +ignored-checks-for-mixins=no-member, + not-async-context-manager, + not-context-manager, + attribute-defined-outside-init + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + +# Regex pattern to define which classes are considered mixins. +mixin-class-rgx=.*[Mm]ixin + +# List of decorators that change the signature of a decorated function. +signature-mutators= + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of names allowed to shadow builtins +allowed-redefined-builtins= + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io diff --git a/stacosys/core/mailer.py b/stacosys/core/mailer.py index 21f265f..43ec706 100644 --- a/stacosys/core/mailer.py +++ b/stacosys/core/mailer.py @@ -34,10 +34,10 @@ class Mailer: msg["From"] = sender context = ssl.create_default_context() + # TODO catch SMTP failure with smtplib.SMTP_SSL( self._smtp_host, self._smtp_port, context=context ) as server: server.login(self._smtp_login, self._smtp_password) server.send_message(msg, sender, receivers) - return True - return False + return True diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index 597579d..fcd3689 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -7,8 +7,8 @@ from stacosys.model.comment import Comment TIME_FORMAT = "%Y-%m-%d %H:%M:%S" -def find_comment_by_id(id): - return Comment.get_by_id(id) +def find_comment_by_id(comment_id): + return Comment.get_by_id(comment_id) def notify_comment(comment: Comment): diff --git a/stacosys/db/database.py b/stacosys/db/database.py index 73c2591..08a7580 100644 --- a/stacosys/db/database.py +++ b/stacosys/db/database.py @@ -1,5 +1,6 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- +# pylint: disable=import-outside-toplevel from peewee import Model from playhouse.db_url import SqliteDatabase diff --git a/stacosys/interface/api.py b/stacosys/interface/api.py index 042f0fc..8c88a2e 100644 --- a/stacosys/interface/api.py +++ b/stacosys/interface/api.py @@ -21,18 +21,18 @@ def query_comments(): comments = [] url = request.args.get("url", "") - logger.info("retrieve comments for url %s" % url) + logger.info("retrieve comments for url %s", url) for comment in dao.find_published_comments_by_url(url): - d = { + comment_dto = { "author": comment.author_name, "content": comment.content, "avatar": comment.author_gravatar, "date": comment.published.strftime("%Y-%m-%d %H:%M:%S"), } if comment.author_site: - d["site"] = comment.author_site - logger.debug(d) - comments.append(d) + comment_dto["site"] = comment.author_site + logger.debug(comment_dto) + comments.append(comment_dto) return jsonify({"data": comments}) diff --git a/stacosys/interface/form.py b/stacosys/interface/form.py index 6955d44..04b52b3 100644 --- a/stacosys/interface/form.py +++ b/stacosys/interface/form.py @@ -14,12 +14,12 @@ logger = logging.getLogger(__name__) @app.route("/newcomment", methods=["POST"]) def new_form_comment(): data = request.form - logger.info("form data " + str(data)) + logger.info("form data %s", str(data)) # honeypot for spammers captcha = data.get("remarque", "") if captcha: - logger.warning("discard spam: data %s" % data) + logger.warning("discard spam: data %s", data) abort(400) url = data.get("url", "") @@ -32,10 +32,10 @@ def new_form_comment(): # anti-spam again if not url or not author_name or not message: - logger.warning("empty field: data %s" % data) + logger.warning("empty field: data %s", data) abort(400) if not check_form_data(data.to_dict()): - logger.warning("additional field: data %s" % data) + logger.warning("additional field: data %s", data) abort(400) # add a row to Comment table @@ -49,23 +49,24 @@ def new_form_comment(): return redirect(app.config.get("SITE_REDIRECT"), code=302) -def check_form_data(d): +def check_form_data(posted_comment): fields = ["url", "message", "site", "remarque", "author", "token", "email"] - filtered = dict(filter(lambda x: x[0] not in fields, d.items())) + filtered = dict(filter(lambda x: x[0] not in fields, posted_comment.items())) return not filtered @background.task def submit_new_comment(comment): + site_url = app.config.get("SITE_URL") comment_list = ( - "Web admin interface: %s/web/admin" % app.config.get("SITE_URL"), + f"Web admin interface: {site_url}/web/admin", "", - "author: %s" % comment.author_name, - "site: %s" % comment.author_site, - "date: %s" % comment.created, - "url: %s" % comment.url, + f"author: {comment.author_name}", + f"site: {comment.author_site}", + f"date: {comment.created}", + f"url: {comment.url}", "", - "%s" % comment.content, + comment.content, "", ) email_body = "\n".join(comment_list) @@ -78,9 +79,10 @@ def submit_new_comment(comment): # save notification datetime dao.notify_comment(comment) else: - logger.warning("rescheduled. send mail failure " + subject) + logger.warning("rescheduled. send mail failure %s", subject) @background.callback def submit_new_comment_callback(future): - pass + # TODO use future to log submit status + logger.debug(future) diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index dafef93..26d172f 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -40,7 +40,7 @@ def login(): flash("Identifiant ou mot de passe incorrect") return redirect("/web/login") # GET - return render_template("login_" + app.config.get("LANG") + ".html") + return render_template("login_" + app.config.get("LANG", "fr") + ".html") @app.route("/web/logout", methods=["GET"]) @@ -58,7 +58,7 @@ def admin_homepage(): comments = dao.find_not_published_comments() return render_template( - "admin_" + app.config.get("LANG") + ".html", + "admin_" + app.config.get("LANG", "fr") + ".html", comments=comments, baseurl=app.config.get("SITE_URL"), ) diff --git a/stacosys/run.py b/stacosys/run.py index 0dd69b2..197215b 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -34,21 +34,21 @@ def stacosys_server(config_pathname): # check config file exists if not os.path.isfile(config_pathname): - logger.error(f"Configuration file '{config_pathname}' not found.") + logger.error("Configuration file '%s' not found.", config_pathname) sys.exit(1) # load config conf = Config.load(config_pathname) is_config_ok, erreur_config = conf.check() if not is_config_ok: - logger.error(f"Configuration incorrecte '{erreur_config}'") + logger.error("Configuration incorrecte '%s'", erreur_config) sys.exit(1) logger.info(conf) # check database file exists (prevents from creating a fresh db) db_pathname = conf.get(ConfigParameter.DB_SQLITE_FILE) - if not os.path.isfile(db_pathname): - logger.error(f"Database file '{db_pathname}' not found.") + if not db_pathname or not os.path.isfile(db_pathname): + logger.error("Database file '%s' not found.", db_pathname) sys.exit(1) # initialize database @@ -84,12 +84,12 @@ def stacosys_server(config_pathname): app.config.update(WEB_PASSWORD=conf.get(ConfigParameter.WEB_PASSWORD)) app.config.update(MAILER=mailer) app.config.update(RSS=rss) - logger.info(f"start interfaces {api} {form} {admin}") + logger.info("start interfaces %s %s %s", api, form, admin) # start Flask app.run( host=conf.get(ConfigParameter.HTTP_HOST), - port=conf.get(ConfigParameter.HTTP_PORT), + port=conf.get_int(ConfigParameter.HTTP_PORT), debug=False, use_reloader=False, ) From b1c64d2cc8e0200b08a29662fd974ca336afd862 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 25 Nov 2022 19:57:37 +0100 Subject: [PATCH 075/182] More pythonic singleton with module. Apply pylint recommandations --- Makefile | 10 +- config.ini | 4 +- stacosys.sublime-workspace | 3923 ++++++++++++++--- stacosys/core/rss.py | 66 - stacosys/interface/form.py | 11 +- stacosys/interface/web/admin.py | 19 +- stacosys/run.py | 51 +- stacosys/service/__init__.py | 10 + .../config.py => service/configuration.py} | 32 +- stacosys/{core/mailer.py => service/mail.py} | 18 +- stacosys/service/rssfeed.py | 63 + tests/test_api.py | 1 - tests/test_config.py | 30 +- tests/test_form.py | 3 +- 14 files changed, 3557 insertions(+), 684 deletions(-) delete mode 100644 stacosys/core/rss.py create mode 100644 stacosys/service/__init__.py rename stacosys/{conf/config.py => service/configuration.py} (76%) rename stacosys/{core/mailer.py => service/mail.py} (71%) create mode 100644 stacosys/service/rssfeed.py diff --git a/Makefile b/Makefile index 4ee41ee..16fd38e 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,15 @@ all: black test typehint lint black: - isort --multi-line 3 --profile black stacosys/ - black stacosys/ + poetry run isort --multi-line 3 --profile black stacosys/ + poetry run black stacosys/ test: - pytest + poetry run pytest typehint: - mypy --ignore-missing-imports stacosys/ + poetry run mypy --ignore-missing-imports stacosys/ lint: - pylint stacosys/ + poetry run pylint stacosys/ diff --git a/config.ini b/config.ini index 17e4cd3..5cd951a 100755 --- a/config.ini +++ b/config.ini @@ -6,7 +6,8 @@ db_sqlite_file = db.sqlite [site] name = "My blog" -url = http://blog.mydomain.com +proto = https +url = https://blog.mydomain.com admin_email = admin@mydomain.com redirect = /redirect @@ -15,7 +16,6 @@ host = 127.0.0.1 port = 8100 [rss] -proto = https file = comments.xml [smtp] diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace index 21684d5..82cfd31 100644 --- a/stacosys.sublime-workspace +++ b/stacosys.sublime-workspace @@ -3,6 +3,30 @@ { "selected_items": [ + [ + "c", + "configuration" + ], + [ + "assertI", + "assertIsNot" + ], + [ + "Confi", + "ConfigParameter" + ], + [ + "S", + "SITE_URL" + ], + [ + "Config", + "ConfigParameter" + ], + [ + "s", + "SITE_REDIRECT" + ], [ "get", "get_int" @@ -12,307 +36,10 @@ "buffers": [ { - "file": "run.sh", + "file": "stacosys/interface/web/admin.py", "settings": { - "buffer_size": 40, - "encoding": "UTF-8", - "line_ending": "Unix" - } - }, - { - "file": "stacosys/run.py", - "settings": - { - "buffer_size": 3298, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 34, - 1, - "insert", - { - "characters": "no" - }, - "AgAAAOcFAAAAAAAA6AUAAAAAAAAAAAAA6AUAAAAAAADpBQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADnBQAAAAAAAOcFAAAAAAAAAAAAAAAA8L8" - ], - [ - 35, - 1, - "insert", - { - "characters": " " - }, - "AQAAAOkFAAAAAAAA6gUAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpBQAAAAAAAOkFAAAAAAAAAAAAAAAA8L8" - ], - [ - 36, - 1, - "left_delete", - null, - "AQAAAOkFAAAAAAAA6QUAAAAAAAABAAAAIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" - ], - [ - 37, - 1, - "insert", - { - "characters": "r" - }, - "AQAAAOkFAAAAAAAA6gUAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpBQAAAAAAAOkFAAAAAAAAAAAAAAAA8L8" - ], - [ - 38, - 1, - "insert", - { - "characters": " " - }, - "AQAAAOoFAAAAAAAA6wUAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" - ], - [ - 39, - 1, - "paste", - null, - "AQAAAOsFAAAAAAAA9gUAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrBQAAAAAAAOsFAAAAAAAAAAAAAAAA8L8" - ], - [ - 40, - 1, - "insert", - { - "characters": " or" - }, - "AwAAAPYFAAAAAAAA9wUAAAAAAAAAAAAA9wUAAAAAAAD4BQAAAAAAAAAAAAD4BQAAAAAAAPkFAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD2BQAAAAAAAPYFAAAAAAAAAAAAAAAA8L8" - ], - [ - 41, - 1, - "insert", - { - "characters": " " - }, - "AQAAAPkFAAAAAAAA+gUAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD5BQAAAAAAAPkFAAAAAAAAAAAAAAAA8L8" - ], - [ - 46, - 1, - "left_delete", - null, - "AQAAAOkFAAAAAAAA6QUAAAAAAAABAAAAcg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" - ], - [ - 47, - 1, - "insert", - { - "characters": "t" - }, - "AQAAAOkFAAAAAAAA6gUAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpBQAAAAAAAOkFAAAAAAAAAAAAAAAA8L8" - ], - [ - 59, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"get_int\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"position\":{\"character\":21,\"line\":91},\"symbolLabel\":\"get_int\",\"filePath\":\"/home/yannic/work/stacosys/stacosys/run.py\"},\"kind\":2,\"sortText\":\"09.9999.get_int\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "get_int" - }, - "AgAAAMgLAAAAAAAAyAsAAAAAAAADAAAAZ2V0yAsAAAAAAADPCwAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLCwAAAAAAAMsLAAAAAAAAAAAAAAAA8L8" - ] - ] - }, - { - "file": "Makefile", - "settings": - { - "buffer_size": 533, - "encoding": "UTF-8", - "line_ending": "Unix" - } - }, - { - "file": "stacosys/core/mailer.py", - "settings": - { - "buffer_size": 1087, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 11, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAEIEAAAAAAAAQwQAAAAAAAAAAAAAQwQAAAAAAABPBAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABCBAAAAAAAAEIEAAAAAAAAAAAAAAAA8L8" - ], - [ - 12, - 1, - "left_delete", - null, - "AQAAAEsEAAAAAAAASwQAAAAAAAAEAAAAICAgIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABPBAAAAAAAAE8EAAAAAAAAAAAAAAAA8L8" - ], - [ - 13, - 1, - "insert", - { - "characters": "else:" - }, - "BQAAAEsEAAAAAAAATAQAAAAAAAAAAAAATAQAAAAAAABNBAAAAAAAAAAAAABNBAAAAAAAAE4EAAAAAAAAAAAAAE4EAAAAAAAATwQAAAAAAAAAAAAATwQAAAAAAABQBAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLBAAAAAAAAEsEAAAAAAAAAAAAAAAA8L8" - ], - [ - 14, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAAFAEAAAAAAAAUQQAAAAAAAAAAAAAUQQAAAAAAABZBAAAAAAAAAAAAABZBAAAAAAAAF0EAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABQBAAAAAAAAFAEAAAAAAAAAAAAAAAA8L8" - ], - [ - 16, - 1, - "insert", - { - "characters": "False" - }, - "BQAAAF0EAAAAAAAAXgQAAAAAAAAAAAAAXgQAAAAAAABfBAAAAAAAAAAAAABfBAAAAAAAAGAEAAAAAAAAAAAAAGAEAAAAAAAAYQQAAAAAAAAAAAAAYQQAAAAAAABiBAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdBAAAAAAAAF0EAAAAAAAAAAAAAAAA8L8" - ], - [ - 44, - 1, - "insert", - { - "characters": "s" - }, - "AQAAAB4CAAAAAAAAHwIAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeAgAAAAAAAB4CAAAAAAAAAAAAAAAA8L8" - ], - [ - 53, - 1, - "left_delete", - null, - "AQAAAEQEAAAAAAAARAQAAAAAAAA1AAAAICAgICAgICBlbHNlOgogICAgICAgICAgICBGYWxzZQogICAgICAgIHJldHVybiBGYWxzZQo", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABEBAAAAAAAAHkEAAAAAAAAAAAAAAAAAAA" - ], - [ - 56, - 1, - "right_delete", - null, - "AQAAACwEAAAAAAAALAQAAAAAAAAXAAAAICAgICAgICAgICAgcmV0dXJuIFRydWU", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAsBAAAAAAAAEMEAAAAAAAA////////738" - ], - [ - 70, - 1, - "left_delete", - null, - "AQAAAB4CAAAAAAAAHgIAAAAAAAABAAAAcw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAfAgAAAAAAAB8CAAAAAAAAAAAAAAAA8L8" - ], - [ - 80, - 1, - "reindent", - null, - "AQAAACsEAAAAAAAANwQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAArBAAAAAAAACsEAAAAAAAAAAAAAAAA8L8" - ], - [ - 81, - 1, - "left_delete", - null, - "AQAAADMEAAAAAAAAMwQAAAAAAAAEAAAAICAgIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3BAAAAAAAADcEAAAAAAAAAAAAAAAA8L8" - ], - [ - 82, - 1, - "insert", - { - "characters": "reru" - }, - "BAAAADMEAAAAAAAANAQAAAAAAAAAAAAANAQAAAAAAAA1BAAAAAAAAAAAAAA1BAAAAAAAADYEAAAAAAAAAAAAADYEAAAAAAAANwQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAzBAAAAAAAADMEAAAAAAAAAAAAAAAA8L8" - ], - [ - 83, - 2, - "left_delete", - null, - "AgAAADYEAAAAAAAANgQAAAAAAAABAAAAdTUEAAAAAAAANQQAAAAAAAABAAAAcg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3BAAAAAAAADcEAAAAAAAAAAAAAAAA8L8" - ], - [ - 84, - 1, - "insert", - { - "characters": "turn" - }, - "BAAAADUEAAAAAAAANgQAAAAAAAAAAAAANgQAAAAAAAA3BAAAAAAAAAAAAAA3BAAAAAAAADgEAAAAAAAAAAAAADgEAAAAAAAAOQQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA1BAAAAAAAADUEAAAAAAAAAAAAAAAA8L8" - ], - [ - 85, - 1, - "insert", - { - "characters": " True" - }, - "BQAAADkEAAAAAAAAOgQAAAAAAAAAAAAAOgQAAAAAAAA7BAAAAAAAAAAAAAA7BAAAAAAAADwEAAAAAAAAAAAAADwEAAAAAAAAPQQAAAAAAAAAAAAAPQQAAAAAAAA+BAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA5BAAAAAAAADkEAAAAAAAAAAAAAAAA8L8" - ] - ] - }, - { - "file": "stacosys/db/dao.py", - "settings": - { - "buffer_size": 1633, - "line_ending": "Unix" - }, - "undo_stack": - [ - ] - }, - { - "file": "stacosys.sublime-project", - "settings": - { - "buffer_size": 381, + "buffer_size": 2472, "encoding": "UTF-8", "line_ending": "Unix" }, @@ -321,37 +48,3079 @@ [ 4, 1, - "", - null, - "AgAAAMMAAAAAAAAAZQEAAAAAAAAAAAAAZQEAAAAAAABlAQAAAAAAAPMAAAAgICAgInNldHRpbmdzIjoKICAgIHsKICAgICAgICAiTFNQIjoKICAgICAgICB7CiAgICAgICAgICAgICJMU1AtcHlsc3AiOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAic2V0dGluZ3MiOgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJweWxzcC5wbHVnaW5zLmplZGkuZW52aXJvbm1lbnQiOiAiLi8udmVudiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0", - "AQAAAAAAAAABAAAAtgEAAAAAAADDAAAAAAAAAAAAAAAAAPC/" + "insert", + { + "characters": "\n" + }, + "AgAAAL8BAAAAAAAAwAEAAAAAAAAAAAAAwAEAAAAAAADEAQAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvwEAAAAAAAC/AQAAAAAAAAAAAAAAAPC/" ], [ 8, 1, + "insert", + { + "characters": "\n" + }, + "AgAAANIAAAAAAAAA0wAAAAAAAAAAAAAAwQEAAAAAAADBAQAAAAAAAAQAAAAgICAg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0gAAAAAAAADSAAAAAAAAAAAAAAAAIINA" + ], + [ + 9, + 1, "paste", null, - "AgAAACYBAAAAAAAAUwEAAAAAAAAAAAAAUwEAAAAAAABTAQAAAAAAABkAAAAvLyBQdXQgeW91ciBzZXR0aW5ncyBoZXJl", - "AQAAAAAAAAABAAAAJgEAAAAAAAA/AQAAAAAAAP///////+9/" + "AQAAANMAAAAAAAAACwEAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0wAAAAAAAADTAAAAAAAAAAAAAAAAAPC/" + ], + [ + 12, + 1, + "reindent", + null, + "AQAAAPkBAAAAAAAA/QEAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA+QEAAAAAAAD5AQAAAAAAAAAAAAAAAPC/" + ], + [ + 13, + 1, + "insert", + { + "characters": "cofn" + }, + "BAAAAP0BAAAAAAAA/gEAAAAAAAAAAAAA/gEAAAAAAAD/AQAAAAAAAAAAAAD/AQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAQIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA/QEAAAAAAAD9AQAAAAAAAAAAAAAAAPC/" + ], + [ + 14, + 2, + "left_delete", + null, + "AgAAAAACAAAAAAAAAAIAAAAAAAABAAAAbv8BAAAAAAAA/wEAAAAAAAABAAAAZg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAQIAAAAAAAABAgAAAAAAAAAAAAAAAPC/" + ], + [ + 15, + 1, + "insert", + { + "characters": "nfug" + }, + "BAAAAP8BAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAABAgAAAAAAAAAAAAABAgAAAAAAAAICAAAAAAAAAAAAAAICAAAAAAAAAwIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA/wEAAAAAAAD/AQAAAAAAAAAAAAAAAPC/" + ], + [ + 16, + 2, + "left_delete", + null, + "AgAAAAICAAAAAAAAAgIAAAAAAAABAAAAZwECAAAAAAAAAQIAAAAAAAABAAAAdQ", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAwIAAAAAAAADAgAAAAAAAAAAAAAAAPC/" + ], + [ + 17, + 1, + "insert", + { + "characters": "ig" + }, + "AgAAAAECAAAAAAAAAgIAAAAAAAAAAAAAAgIAAAAAAAADAgAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAQIAAAAAAAABAgAAAAAAAAAAAAAAAPC/" + ], + [ + 18, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAAMCAAAAAAAABAIAAAAAAAAAAAAABAIAAAAAAAAFAgAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAwIAAAAAAAADAgAAAAAAAAAAAAAAAPC/" + ], + [ + 19, + 1, + "insert", + { + "characters": " Config" + }, + "BwAAAAUCAAAAAAAABgIAAAAAAAAAAAAABgIAAAAAAAAHAgAAAAAAAAAAAAAHAgAAAAAAAAgCAAAAAAAAAAAAAAgCAAAAAAAACQIAAAAAAAAAAAAACQIAAAAAAAAKAgAAAAAAAAAAAAAKAgAAAAAAAAsCAAAAAAAAAAAAAAsCAAAAAAAADAIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABQIAAAAAAAAFAgAAAAAAAAAAAAAAAPC/" + ], + [ + 20, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAAwCAAAAAAAADgIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAIAAAAAAAAMAgAAAAAAAAAAAAAAAPC/" + ], + [ + 30, + 1, + "insert", + { + "characters": " " + }, + "AQAAAGcCAAAAAAAAaAIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwIAAAAAAABnAgAAAAAAAAAAAAAAAPC/" + ], + [ + 32, + 1, + "insert", + { + "characters": "config." + }, + "BwAAAGcCAAAAAAAAaAIAAAAAAAAAAAAAaAIAAAAAAABpAgAAAAAAAAAAAABpAgAAAAAAAGoCAAAAAAAAAAAAAGoCAAAAAAAAawIAAAAAAAAAAAAAawIAAAAAAABsAgAAAAAAAAAAAABsAgAAAAAAAG0CAAAAAAAAAAAAAG0CAAAAAAAAbgIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwIAAAAAAABnAgAAAAAAAAAAAAAAAPC/" + ], + [ + 33, + 1, + "insert", + { + "characters": "get" + }, + "AwAAAG4CAAAAAAAAbwIAAAAAAAAAAAAAbwIAAAAAAABwAgAAAAAAAAAAAABwAgAAAAAAAHECAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbgIAAAAAAABuAgAAAAAAAAAAAAAAAPC/" + ], + [ + 34, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAHECAAAAAAAAcwIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcQIAAAAAAABxAgAAAAAAAAAAAAAAAPC/" + ], + [ + 35, + 1, + "insert", + { + "characters": "Confi" + }, + "BQAAAHICAAAAAAAAcwIAAAAAAAAAAAAAcwIAAAAAAAB0AgAAAAAAAAAAAAB0AgAAAAAAAHUCAAAAAAAAAAAAAHUCAAAAAAAAdgIAAAAAAAAAAAAAdgIAAAAAAAB3AgAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcgIAAAAAAAByAgAAAAAAAAAAAAAAAPC/" + ], + [ + 37, + 1, + "insert_completion", + { + "completion": "ConfigParameter", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "ConfigParameter" + }, + "AgAAAHICAAAAAAAAcgIAAAAAAAAFAAAAQ29uZmlyAgAAAAAAAIECAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdwIAAAAAAAB3AgAAAAAAAAAAAAAAAPC/" + ], + [ + 38, + 1, + "insert", + { + "characters": ".W" + }, + "AgAAAIECAAAAAAAAggIAAAAAAAAAAAAAggIAAAAAAACDAgAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAgQIAAAAAAACBAgAAAAAAAAAAAAAAAPC/" + ], + [ + 39, + 1, + "insert_completion", + { + "completion": "WEB_USERNAME", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "WEB_USERNAME" + }, + "AgAAAIICAAAAAAAAggIAAAAAAAABAAAAV4ICAAAAAAAAjgIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAgwIAAAAAAACDAgAAAAAAAAAAAAAAAPC/" + ], + [ + 43, + 1, + "right_delete", + null, + "AQAAAI8CAAAAAAAAjwIAAAAAAAAfAAAAIGFwcC5jb25maWcuZ2V0KCJXRUJfVVNFUk5BTUUiKQ", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjwIAAAAAAACuAgAAAAAAAAAAAAAAAPC/" + ], + [ + 50, + 1, + "paste", + null, + "AQAAAKgCAAAAAAAA0AIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAqAIAAAAAAACoAgAAAAAAAAAAAAAAAPC/" + ], + [ + 51, + 1, + "insert", + { + "characters": " " + }, + "AQAAANACAAAAAAAA0QIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0AIAAAAAAADQAgAAAAAAAAAAAAAAAPC/" + ], + [ + 55, + 1, + "insert", + { + "characters": "PA" + }, + "AwAAAMcCAAAAAAAAyAIAAAAAAAAAAAAAyAIAAAAAAADIAgAAAAAAAAgAAABVU0VSTkFNRcgCAAAAAAAAyQIAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzwIAAAAAAADHAgAAAAAAAAAAAAAAAPC/" + ], + [ + 56, + 1, + "insert_completion", + { + "completion": "WEB_PASSWORD", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "WEB_PASSWORD" + }, + "AgAAAMMCAAAAAAAAwwIAAAAAAAAGAAAAV0VCX1BBwwIAAAAAAADPAgAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAyQIAAAAAAADJAgAAAAAAAAAAAAAAAPC/" + ], + [ + 59, + 2, + "right_delete", + null, + "AgAAANECAAAAAAAA0QIAAAAAAAAeAAAAYXBwLmNvbmZpZy5nZXQoIldFQl9QQVNTV09SRCIp0QIAAAAAAADRAgAAAAAAAAEAAAAg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0QIAAAAAAADvAgAAAAAAAAAAAAAAAPC/" + ], + [ + 69, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAKcFAAAAAAAAqAUAAAAAAAAAAAAAqAUAAAAAAACsBQAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApwUAAAAAAACnBQAAAAAAAAAAAAAAAPC/" + ], + [ + 77, + 1, + "paste", + null, + "AQAAAKwFAAAAAAAAvQUAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArAUAAAAAAACsBQAAAAAAAAAAAAAAAPC/" + ], + [ + 85, + 1, + "paste", + null, + "AgAAAPMFAAAAAAAAGwYAAAAAAAAAAAAAGwYAAAAAAAAbBgAAAAAAAB4AAABhcHAuY29uZmlnLmdldCgiV0VCX1VTRVJOQU1FIik", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8wUAAAAAAAARBgAAAAAAAAAAAAAAAPC/" + ], + [ + 98, + 1, + "paste", + null, + "AQAAAOwGAAAAAAAABwcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA7AYAAAAAAADsBgAAAAAAAAAAAAAAAPC/" + ], + [ + 99, + 1, + "insert", + { + "characters": " " + }, + "AQAAAAcHAAAAAAAACAcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABwcAAAAAAAAHBwAAAAAAAAAAAAAAAPC/" + ], + [ + 101, + 1, + "left_delete", + null, + "AQAAAAYHAAAAAAAABgcAAAAAAAABAAAALg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABwcAAAAAAAAHBwAAAAAAAAAAAAAAAPC/" + ], + [ + 102, + 1, + "insert", + { + "characters": ".LA" + }, + "AwAAAAYHAAAAAAAABwcAAAAAAAAAAAAABwcAAAAAAAAIBwAAAAAAAAAAAAAIBwAAAAAAAAkHAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABgcAAAAAAAAGBwAAAAAAAAAAAAAAAPC/" + ], + [ + 103, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"label\":\"LANG\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"LANG\",\"position\":{\"character\":48,\"line\":63},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"08.9999.LANG\",\"kind\":20},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "LANG" + }, + "AgAAAAcHAAAAAAAABwcAAAAAAAACAAAATEEHBwAAAAAAAAsHAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACQcAAAAAAAAJBwAAAAAAAAAAAAAAAPC/" + ], + [ + 104, + 1, + "insert", + { + "characters": ")" + }, + "AQAAAAsHAAAAAAAADAcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwcAAAAAAAALBwAAAAAAAAAAAAAAAPC/" + ], + [ + 107, + 1, + "right_delete", + null, + "AQAAAAwHAAAAAAAADAcAAAAAAAAdAAAAIGFwcC5jb25maWcuZ2V0KCJMQU5HIiwgImZyIik", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAcAAAAAAAApBwAAAAAAAAAAAAAAAPC/" + ], + [ + 112, + 1, + "insert", + { + "characters": "f" + }, + "AQAAAOEGAAAAAAAA4gYAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4QYAAAAAAADhBgAAAAAAAAAAAAAAAPC/" + ], + [ + 116, + 1, + "right_delete", + null, + "AQAAAOEGAAAAAAAA4QYAAAAAAAABAAAAZg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4QYAAAAAAADhBgAAAAAAAAAAAAAAAPC/" + ], + [ + 121, + 1, + "insert", + { + "characters": " " + }, + "AQAAAEMHAAAAAAAARAcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwcAAAAAAABDBwAAAAAAAAAAAAAAAPC/" + ], + [ + 123, + 1, + "paste", + null, + "AQAAAEMHAAAAAAAAXgcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwcAAAAAAABDBwAAAAAAAAAAAAAAAPC/" + ], + [ + 124, + 1, + "insert", + { + "characters": "S" + }, + "AQAAAF4HAAAAAAAAXwcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXgcAAAAAAABeBwAAAAAAAAAAAAAAAPC/" + ], + [ + 128, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"label\":\"SITE_URL\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"SITE_URL\",\"position\":{\"character\":44,\"line\":65},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"08.9999.SITE_URL\",\"kind\":20},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "SITE_URL" + }, + "AgAAAF4HAAAAAAAAXgcAAAAAAAABAAAAU14HAAAAAAAAZgcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXwcAAAAAAABfBwAAAAAAAAAAAAAAAPC/" + ], + [ + 129, + 1, + "insert", + { + "characters": ")" + }, + "AQAAAGYHAAAAAAAAZwcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZgcAAAAAAABmBwAAAAAAAAAAAAAAAPC/" + ], + [ + 132, + 1, + "right_delete", + null, + "AQAAAGcHAAAAAAAAZwcAAAAAAAAbAAAAIGFwcC5jb25maWcuZ2V0KCJTSVRFX1VSTCIp", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwcAAAAAAACCBwAAAAAAAAAAAAAAAPC/" + ], + [ + 140, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAKUIAAAAAAAApggAAAAAAAAAAAAApggAAAAAAACuCAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApQgAAAAAAAClCAAAAAAAAP///////+9/" + ], + [ + 145, + 1, + "paste", + null, + "AQAAAAwBAAAAAAAALQEAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAEAAAAAAAAMAQAAAAAAAAAAAAAAAPC/" + ], + [ + 146, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAC0BAAAAAAAALgEAAAAAAAAAAAAAyAgAAAAAAADICAAAAAAAAAgAAAAgICAgICAgIA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALQEAAAAAAAAtAQAAAAAAAAAAAAAAAPC/" + ], + [ + 150, + 1, + "insert", + { + "characters": "\nrss" + }, + "BQAAANEHAAAAAAAA0gcAAAAAAAAAAAAA0gcAAAAAAADWBwAAAAAAAAAAAADWBwAAAAAAANcHAAAAAAAAAAAAANcHAAAAAAAA2AcAAAAAAAAAAAAA2AcAAAAAAADZBwAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0QcAAAAAAADRBwAAAAAAAAAAAAAAAPC/" + ], + [ + 151, + 1, + "insert", + { + "characters": " =" + }, + "AgAAANkHAAAAAAAA2gcAAAAAAAAAAAAA2gcAAAAAAADbBwAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA2QcAAAAAAADZBwAAAAAAAAAAAAAAAPC/" + ], + [ + 152, + 1, + "insert", + { + "characters": " Rss" + }, + "BAAAANsHAAAAAAAA3AcAAAAAAAAAAAAA3AcAAAAAAADdBwAAAAAAAAAAAADdBwAAAAAAAN4HAAAAAAAAAAAAAN4HAAAAAAAA3wcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA2wcAAAAAAADbBwAAAAAAAAAAAAAAAPC/" + ], + [ + 153, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAN8HAAAAAAAA4QcAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA3wcAAAAAAADfBwAAAAAAAAAAAAAAAPC/" + ], + [ + 157, + 1, + "insert", + { + "characters": "rss" + }, + "BAAAAOEIAAAAAAAA4ggAAAAAAAAAAAAA4ggAAAAAAADiCAAAAAAAABUAAABhcHAuY29uZmlnLmdldCgiUlNTIiniCAAAAAAAAOMIAAAAAAAAAAAAAOMIAAAAAAAA5AgAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4QgAAAAAAAD2CAAAAAAAAAAAAAAAAPC/" + ], + [ + 160, + 1, + "left_delete", + null, + "AQAAANcIAAAAAAAA1wgAAAAAAAABAAAACg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA2AgAAAAAAADYCAAAAAAAAAAAAAAAAPC/" + ], + [ + 176, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAEMDAAAAAAAARAMAAAAAAAAAAAAARAMAAAAAAABIAwAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwMAAAAAAABDAwAAAAAAAAAAAAAAAPC/" + ], + [ + 177, + 1, + "paste", + null, + "AQAAAEgDAAAAAAAAWQMAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASAMAAAAAAABIAwAAAAAAAAAAAAAAAPC/" + ], + [ + 182, + 1, + "insert", + { + "characters": "conig" + }, + "BgAAAAEFAAAAAAAAAgUAAAAAAAAAAAAAAgUAAAAAAAACBQAAAAAAABwAAABhcHAuY29uZmlnLmdldCgiTEFORyIsICJmciIpAgUAAAAAAAADBQAAAAAAAAAAAAADBQAAAAAAAAQFAAAAAAAAAAAAAAQFAAAAAAAABQUAAAAAAAAAAAAABQUAAAAAAAAGBQAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAQUAAAAAAAAdBQAAAAAAAAAAAAAAAPC/" + ], + [ + 183, + 2, + "left_delete", + null, + "AgAAAAUFAAAAAAAABQUAAAAAAAABAAAAZwQFAAAAAAAABAUAAAAAAAABAAAAaQ", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABgUAAAAAAAAGBQAAAAAAAAAAAAAAAPC/" + ], + [ + 184, + 1, + "insert", + { + "characters": "fig.get" + }, + "BwAAAAQFAAAAAAAABQUAAAAAAAAAAAAABQUAAAAAAAAGBQAAAAAAAAAAAAAGBQAAAAAAAAcFAAAAAAAAAAAAAAcFAAAAAAAACAUAAAAAAAAAAAAACAUAAAAAAAAJBQAAAAAAAAAAAAAJBQAAAAAAAAoFAAAAAAAAAAAAAAoFAAAAAAAACwUAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABAUAAAAAAAAEBQAAAAAAAAAAAAAAAPC/" + ], + [ + 185, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAAsFAAAAAAAADQUAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwUAAAAAAAALBQAAAAAAAAAAAAAAAPC/" + ], + [ + 186, + 1, + "insert", + { + "characters": "Confi" + }, + "BQAAAAwFAAAAAAAADQUAAAAAAAAAAAAADQUAAAAAAAAOBQAAAAAAAAAAAAAOBQAAAAAAAA8FAAAAAAAAAAAAAA8FAAAAAAAAEAUAAAAAAAAAAAAAEAUAAAAAAAARBQAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAUAAAAAAAAMBQAAAAAAAAAAAAAAAPC/" + ], + [ + 188, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"label\":\"ConfigParameter\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"ConfigParameter\",\"position\":{\"character\":54,\"line\":46},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"05.0003.ConfigParameter\",\"kind\":7},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "ConfigParameter" + }, + "AgAAAAwFAAAAAAAADAUAAAAAAAAFAAAAQ29uZmkMBQAAAAAAABsFAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEQUAAAAAAAARBQAAAAAAAAAAAAAAAPC/" + ], + [ + 189, + 1, + "insert", + { + "characters": ".L" + }, + "AgAAABsFAAAAAAAAHAUAAAAAAAAAAAAAHAUAAAAAAAAdBQAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAGwUAAAAAAAAbBQAAAAAAAAAAAAAAAPC/" + ], + [ + 190, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"label\":\"LANG\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"LANG\",\"position\":{\"character\":66,\"line\":46},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"08.9999.LANG\",\"kind\":20},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "LANG" + }, + "AgAAABwFAAAAAAAAHAUAAAAAAAABAAAATBwFAAAAAAAAIAUAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAHQUAAAAAAAAdBQAAAAAAAAAAAAAAAPC/" + ], + [ + 194, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAADhCQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgaGFzaGxpYgppbXBvcnQgbG9nZ2luZwoKZnJvbSBmbGFzayBpbXBvcnQgZmxhc2gsIHJlZGlyZWN0LCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIHNlc3Npb24KCmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRhbwpmcm9tIHN0YWNvc3lzLmludGVyZmFjZSBpbXBvcnQgYXBwCmZyb20gc3RhY29zeXMuY29uZi5jb25maWcgaW1wb3J0IENvbmZpZywgQ29uZmlnUGFyYW1ldGVyCmZyb20gc3RhY29zeXMuY29yZS5yc3MgaW1wb3J0IFJzcwoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgphcHAuYWRkX3VybF9ydWxlKCIvd2ViIiwgZW5kcG9pbnQ9ImluZGV4IikKYXBwLmFkZF91cmxfcnVsZSgiL3dlYi8iLCBlbmRwb2ludD0iaW5kZXgiKQoKCkBhcHAuZW5kcG9pbnQoImluZGV4IikKZGVmIGluZGV4KCk6CiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCmRlZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGhhc2hlZCA9IGhhc2hsaWIuc2hhMjU2KHBhc3N3b3JkLmVuY29kZSgpKS5oZXhkaWdlc3QoKS51cHBlcigpCiAgICByZXR1cm4gKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkgPT0gdXNlcm5hbWUKICAgICAgICBhbmQgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1BBU1NXT1JEKSA9PSBoYXNoZWQKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2xvZ2luIiwgbWV0aG9kcz1bIlBPU1QiLCAiR0VUIl0pCmRlZiBsb2dpbigpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKICAgICAgICB1c2VybmFtZSA9IHJlcXVlc3QuZm9ybS5nZXQoInVzZXJuYW1lIikKICAgICAgICBwYXNzd29yZCA9IHJlcXVlc3QuZm9ybS5nZXQoInBhc3N3b3JkIikKICAgICAgICBpZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgICAgICAgICBzZXNzaW9uWyJ1c2VyIl0gPSB1c2VybmFtZQogICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiSWRlbnRpZmlhbnQgb3UgbW90IGRlIHBhc3NlIGluY29ycmVjdCIpCiAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2xvZ2luIikKICAgICMgR0VUCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKCJsb2dpbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiKQoKCkBhcHAucm91dGUoIi93ZWIvbG9nb3V0IiwgbWV0aG9kcz1bIkdFVCJdKQpkZWYgbG9nb3V0KCk6CiAgICBzZXNzaW9uLnBvcCgidXNlciIpCiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiR0VUIl0pCmRlZiBhZG1pbl9ob21lcGFnZSgpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIG5vdCAoInVzZXIiIGluIHNlc3Npb24gYW5kIHNlc3Npb25bInVzZXIiXSA9PSBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5XRUJfVVNFUk5BTUUpKToKICAgICAgICAjIFRPRE8gbG9jYWxpemF0aW9uCiAgICAgICAgZmxhc2goIlZvdXMgYXZleiDDqXTDqSBkw6ljb25uZWN0w6kuIikKICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvbG9naW4iKQoKICAgIGNvbW1lbnRzID0gZGFvLmZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICJhZG1pbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiLAogICAgICAgIGNvbW1lbnRzPWNvbW1lbnRzLAogICAgICAgIGJhc2V1cmw9Y29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiUE9TVCJdKQpkZWYgYWRtaW5fYWN0aW9uKCk6CiAgICByc3MgPSBSc3MoKQogICAgY29tbWVudCA9IGRhby5maW5kX2NvbW1lbnRfYnlfaWQocmVxdWVzdC5mb3JtLmdldCgiY29tbWVudCIpKQogICAgaWYgY29tbWVudCBpcyBOb25lOgogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgaW50cm91dmFibGUiKQogICAgZWxpZiByZXF1ZXN0LmZvcm0uZ2V0KCJhY3Rpb24iKSA9PSAiQVBQUk9WRSI6CiAgICAgICAgZGFvLnB1Ymxpc2hfY29tbWVudChjb21tZW50KQogICAgICAgIHJzcy5nZW5lcmF0ZSgpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBwdWJsacOpIikKICAgIGVsc2U6CiAgICAgICAgZGFvLmRlbGV0ZV9jb21tZW50KGNvbW1lbnQpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBzdXBwcmltw6kiKQogICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2FkbWluIikKAAAAAAAAAADxCQAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIgUAAAAAAAAiBQAAAAAAAAAAAAAAAPC/" + ], + [ + 224, + 1, + "toggle_breakpoint", + null, + "AQAAAEQDAAAAAAAAfgMAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATAMAAAAAAABMAwAAAAAAAAAAAAAAAPC/" + ], + [ + 232, + 1, + "right_delete", + null, + "AQAAAEgDAAAAAAAASAMAAAAAAAA1AAAAaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpICAjIGJyZWFrcG9pbnQgNzE4YjY2MDQgLy8", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfQMAAAAAAABIAwAAAAAAAAAAAAAAAEJA" + ], + [ + 234, + 1, + "left_delete", + null, + "AQAAAEMDAAAAAAAAQwMAAAAAAAABAAAACg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAARAMAAAAAAABEAwAAAAAAAAAAAAAAAAAA" + ], + [ + 237, + 1, + "right_delete", + null, + "AQAAAEMDAAAAAAAAQwMAAAAAAAAEAAAAICAgIA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwMAAAAAAABHAwAAAAAAAP///////+9/" + ], + [ + 256, + 1, + "toggle_breakpoint", + null, + "AQAAAEQDAAAAAAAAfgMAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASwMAAAAAAABLAwAAAAAAAAAAAAAAAPC/" + ], + [ + 264, + 1, + "toggle_breakpoint", + null, + "AQAAAEQDAAAAAAAARAMAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IGJlMjhiNmVmIC8vCg", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfQMAAAAAAAB9AwAAAAAAAAAAAAAAAPC/" + ], + [ + 267, + 2, + "toggle_breakpoint", + null, + "AgAAADcDAAAAAAAAbQMAAAAAAAAAAAAANwMAAAAAAAA3AwAAAAAAADYAAABpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkgICMgYnJlYWtwb2ludCAzZDI2NjIzOCAvLwo", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwMAAAAAAABDAwAAAAAAAAAAAAAAAPC/" + ], + [ + 13, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAKYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKYAAAAAAAAApgAAAAAAAAAAAAAAAADwvw" + ], + [ + 14, + 1, + "right_delete", + null, + "AQAAAK0AAAAAAAAArQAAAAAAAAABAAAALg", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAK0AAAAAAAAArQAAAAAAAAAAAAAAAADwvw" + ], + [ + 15, + 1, + "insert", + { + "characters": " " + }, + "AQAAAK0AAAAAAAAArgAAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAK0AAAAAAAAArQAAAAAAAAAAAAAAAADwvw" + ], + [ + 17, + 1, + "insert", + { + "characters": "\n//" + }, + "AwAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAC2AAAAAAAAALcAAAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" + ], + [ + 19, + 1, + "insert", + { + "characters": "#" + }, + "AgAAALUAAAAAAAAAtgAAAAAAAAAAAAAAtgAAAAAAAAC2AAAAAAAAAAIAAAAvLw", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALcAAAAAAAAAtQAAAAAAAAAAAAAAAADwvw" + ], + [ + 28, + 1, + "insert", + { + "characters": "config." + }, + "BwAAADECAAAAAAAAMgIAAAAAAAAAAAAAMgIAAAAAAAAzAgAAAAAAAAAAAAAzAgAAAAAAADQCAAAAAAAAAAAAADQCAAAAAAAANQIAAAAAAAAAAAAANQIAAAAAAAA2AgAAAAAAAAAAAAA2AgAAAAAAADcCAAAAAAAAAAAAADcCAAAAAAAAOAIAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADECAAAAAAAAMQIAAAAAAAAAAAAAAADwvw" + ], + [ + 39, + 1, + "insert", + { + "characters": " " + }, + "AgAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" + ], + [ + 40, + 2, + "left_delete", + null, + "AgAAALUAAAAAAAAAtQAAAAAAAAABAAAAILQAAAAAAAAAtAAAAAAAAAABAAAAIA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYAAAAAAAAAtgAAAAAAAAAAAAAAAADwvw" + ], + [ + 41, + 1, + "insert", + { + "characters": "as" + }, + "AgAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" + ], + [ + 42, + 2, + "left_delete", + null, + "AgAAALUAAAAAAAAAtQAAAAAAAAABAAAAc7QAAAAAAAAAtAAAAAAAAAABAAAAYQ", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYAAAAAAAAAtgAAAAAAAAAAAAAAAADwvw" + ], + [ + 43, + 1, + "insert", + { + "characters": " as" + }, + "AwAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAC2AAAAAAAAALcAAAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" + ], + [ + 44, + 1, + "insert", + { + "characters": " cfg" + }, + "BAAAALcAAAAAAAAAuAAAAAAAAAAAAAAAuAAAAAAAAAC5AAAAAAAAAAAAAAC5AAAAAAAAALoAAAAAAAAAAAAAALoAAAAAAAAAuwAAAAAAAAAAAAAA", + "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALcAAAAAAAAAtwAAAAAAAAAAAAAAAADwvw" + ], + [ + 10, + 1, + "insert", + { + "characters": "Config" + }, + "BwAAAK4AAAAAAAAArwAAAAAAAAAAAAAArwAAAAAAAACvAAAAAAAAAA0AAABjb25maWcgYXMgY2ZnrwAAAAAAAACwAAAAAAAAAAAAAACwAAAAAAAAALEAAAAAAAAAAAAAALEAAAAAAAAAsgAAAAAAAAAAAAAAsgAAAAAAAACzAAAAAAAAAAAAAACzAAAAAAAAALQAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACuAAAAAAAAALsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 17, + 2, + "right_delete", + null, + "AgAAADECAAAAAAAAMQIAAAAAAAAGAAAAY29uZmlnMQIAAAAAAAAxAgAAAAAAAAEAAAAu", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAxAgAAAAAAADcCAAAAAAAAAAAAAAAA8L8" + ], + [ + 21, + 1, + "insert", + { + "characters": "," + }, + "AQAAALQAAAAAAAAAtQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC0AAAAAAAAALQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 22, + 1, + "insert", + { + "characters": " ConfigPar" + }, + "CgAAALUAAAAAAAAAtgAAAAAAAAAAAAAAtgAAAAAAAAC3AAAAAAAAAAAAAAC3AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAC6AAAAAAAAALsAAAAAAAAAAAAAALsAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAAC9AAAAAAAAAAAAAAC9AAAAAAAAAL4AAAAAAAAAAAAAAL4AAAAAAAAAvwAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC1AAAAAAAAALUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 23, + 1, + "insert_completion", + { + "completion": "ConfigParameter", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "ConfigParameter" + }, + "AgAAALYAAAAAAAAAtgAAAAAAAAAJAAAAQ29uZmlnUGFytgAAAAAAAADFAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC/AAAAAAAAAL8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 30, + 1, + "insert", + { + "characters": ".config" + }, + "BwAAAKYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACmAAAAAAAAAKYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 35, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAAAYCgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgaGFzaGxpYgppbXBvcnQgbG9nZ2luZwoKZnJvbSBmbGFzayBpbXBvcnQgZmxhc2gsIHJlZGlyZWN0LCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIHNlc3Npb24KCmZyb20gc3RhY29zeXMuY29uZi5jb25maWcgaW1wb3J0IENvbmZpZywgQ29uZmlnUGFyYW1ldGVyCiMgaW1wb3J0IENvbmZpZywgQ29uZmlnUGFyYW1ldGVyCmZyb20gc3RhY29zeXMuY29yZS5yc3MgaW1wb3J0IFJzcwpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYW8KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgphcHAuYWRkX3VybF9ydWxlKCIvd2ViIiwgZW5kcG9pbnQ9ImluZGV4IikKYXBwLmFkZF91cmxfcnVsZSgiL3dlYi8iLCBlbmRwb2ludD0iaW5kZXgiKQoKCkBhcHAuZW5kcG9pbnQoImluZGV4IikKZGVmIGluZGV4KCk6CiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCmRlZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGhhc2hlZCA9IGhhc2hsaWIuc2hhMjU2KHBhc3N3b3JkLmVuY29kZSgpKS5oZXhkaWdlc3QoKS51cHBlcigpCiAgICByZXR1cm4gKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkgPT0gdXNlcm5hbWUKICAgICAgICBhbmQgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1BBU1NXT1JEKSA9PSBoYXNoZWQKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2xvZ2luIiwgbWV0aG9kcz1bIlBPU1QiLCAiR0VUIl0pCmRlZiBsb2dpbigpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKICAgICAgICB1c2VybmFtZSA9IHJlcXVlc3QuZm9ybS5nZXQoInVzZXJuYW1lIikKICAgICAgICBwYXNzd29yZCA9IHJlcXVlc3QuZm9ybS5nZXQoInBhc3N3b3JkIikKICAgICAgICBpZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgICAgICAgICBzZXNzaW9uWyJ1c2VyIl0gPSB1c2VybmFtZQogICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiSWRlbnRpZmlhbnQgb3UgbW90IGRlIHBhc3NlIGluY29ycmVjdCIpCiAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2xvZ2luIikKICAgICMgR0VUCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKCJsb2dpbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiKQoKCkBhcHAucm91dGUoIi93ZWIvbG9nb3V0IiwgbWV0aG9kcz1bIkdFVCJdKQpkZWYgbG9nb3V0KCk6CiAgICBzZXNzaW9uLnBvcCgidXNlciIpCiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiR0VUIl0pCmRlZiBhZG1pbl9ob21lcGFnZSgpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIG5vdCAoCiAgICAgICAgInVzZXIiIGluIHNlc3Npb24KICAgICAgICBhbmQgc2Vzc2lvblsidXNlciJdID09IGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkKICAgICk6CiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJWb3VzIGF2ZXogw6l0w6kgZMOpY29ubmVjdMOpLiIpCiAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2xvZ2luIikKCiAgICBjb21tZW50cyA9IGRhby5maW5kX25vdF9wdWJsaXNoZWRfY29tbWVudHMoKQogICAgcmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAiYWRtaW5fIiArIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLkxBTkcpICsgIi5odG1sIiwKICAgICAgICBjb21tZW50cz1jb21tZW50cywKICAgICAgICBiYXNldXJsPWNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNJVEVfVVJMKSwKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2FkbWluIiwgbWV0aG9kcz1bIlBPU1QiXSkKZGVmIGFkbWluX2FjdGlvbigpOgogICAgcnNzID0gUnNzKCkKICAgIGNvbW1lbnQgPSBkYW8uZmluZF9jb21tZW50X2J5X2lkKHJlcXVlc3QuZm9ybS5nZXQoImNvbW1lbnQiKSkKICAgIGlmIGNvbW1lbnQgaXMgTm9uZToKICAgICAgICAjIFRPRE8gbG9jYWxpemF0aW9uCiAgICAgICAgZmxhc2goIkNvbW1lbnRhaXJlIGludHJvdXZhYmxlIikKICAgIGVsaWYgcmVxdWVzdC5mb3JtLmdldCgiYWN0aW9uIikgPT0gIkFQUFJPVkUiOgogICAgICAgIGRhby5wdWJsaXNoX2NvbW1lbnQoY29tbWVudCkKICAgICAgICByc3MuZ2VuZXJhdGUoKQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgcHVibGnDqSIpCiAgICBlbHNlOgogICAgICAgIGRhby5kZWxldGVfY29tbWVudChjb21tZW50KQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgc3VwcHJpbcOpIikKICAgIHJldHVybiByZWRpcmVjdCgiL3dlYi9hZG1pbiIpCgAAAAAAAAAAEwoAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACnAAAAAAAAAK0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 39, + 1, + "left_delete", + null, + "AQAAALUAAAAAAAAAtQAAAAAAAAAIAAAAQ29uZmlnLCA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC1AAAAAAAAAL0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 41, + 1, + "insert", + { + "characters": "\nfrom" + }, + "BQAAAJMAAAAAAAAAlAAAAAAAAAAAAAAAlAAAAAAAAACVAAAAAAAAAAAAAACVAAAAAAAAAJYAAAAAAAAAAAAAAJYAAAAAAAAAlwAAAAAAAAAAAAAAlwAAAAAAAACYAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACTAAAAAAAAAJMAAAAAAAAAAAAAAACQckA" + ], + [ + 42, + 1, + "insert", + { + "characters": " stacosys" + }, + "CQAAAJgAAAAAAAAAmQAAAAAAAAAAAAAAmQAAAAAAAACaAAAAAAAAAAAAAACaAAAAAAAAAJsAAAAAAAAAAAAAAJsAAAAAAAAAnAAAAAAAAAAAAAAAnAAAAAAAAACdAAAAAAAAAAAAAACdAAAAAAAAAJ4AAAAAAAAAAAAAAJ4AAAAAAAAAnwAAAAAAAAAAAAAAnwAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAAKEAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACYAAAAAAAAAJgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 43, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAKEAAAAAAAAAogAAAAAAAAAAAAAAogAAAAAAAACjAAAAAAAAAAAAAACjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAACmAAAAAAAAAAAAAACmAAAAAAAAAKcAAAAAAAAAAAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAChAAAAAAAAAKEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 44, + 1, + "insert", + { + "characters": " core" + }, + "BQAAAKgAAAAAAAAAqQAAAAAAAAAAAAAAqQAAAAAAAACqAAAAAAAAAAAAAACqAAAAAAAAAKsAAAAAAAAAAAAAAKsAAAAAAAAArAAAAAAAAAAAAAAArAAAAAAAAACtAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 49, + 1, + "insert", + { + "characters": "re" + }, + "AwAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAIAAABuZr8AAAAAAAAAwAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC+AAAAAAAAAMAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 56, + 1, + "right_delete", + null, + "AQAAAFMCAAAAAAAAUwIAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAgAAAAAAAFMCAAAAAAAAAAAAAAAAQkA" + ], + [ + 58, + 1, + "left_delete", + null, + "AQAAAE4CAAAAAAAATgIAAAAAAAABAAAACg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABPAgAAAAAAAE8CAAAAAAAAAAAAAAAAAAA" + ], + [ + 61, + 1, + "insert", + { + "characters": "core." + }, + "BQAAAKsCAAAAAAAArAIAAAAAAAAAAAAArAIAAAAAAACtAgAAAAAAAAAAAACtAgAAAAAAAK4CAAAAAAAAAAAAAK4CAAAAAAAArwIAAAAAAAAAAAAArwIAAAAAAACwAgAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAgAAAAAAAKsCAAAAAAAAAAAAAAAAUkA" + ], + [ + 64, + 1, + "insert", + { + "characters": "core." + }, + "BQAAAPECAAAAAAAA8gIAAAAAAAAAAAAA8gIAAAAAAADzAgAAAAAAAAAAAADzAgAAAAAAAPQCAAAAAAAAAAAAAPQCAAAAAAAA9QIAAAAAAAAAAAAA9QIAAAAAAAD2AgAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADxAgAAAAAAAPECAAAAAAAAAAAAAAAA8L8" + ], + [ + 68, + 1, + "right_delete", + null, + "AQAAAHQDAAAAAAAAdAMAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFAwAAAAAAAHQDAAAAAAAAAAAAAAAAQkA" + ], + [ + 70, + 1, + "left_delete", + null, + "AQAAAG8DAAAAAAAAbwMAAAAAAAABAAAACg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABwAwAAAAAAAHADAAAAAAAAAAAAAAAAAAA" + ], + [ + 74, + 1, + "insert", + { + "characters": "o" + }, + "AQAAABsFAAAAAAAAHAUAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAbBQAAAAAAABsFAAAAAAAAAAAAAAAA8L8" + ], + [ + 75, + 1, + "left_delete", + null, + "AQAAABsFAAAAAAAAGwUAAAAAAAABAAAAbw", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAcBQAAAAAAABwFAAAAAAAAAAAAAAAA8L8" + ], + [ + 76, + 1, + "insert", + { + "characters": "core." + }, + "BQAAABsFAAAAAAAAHAUAAAAAAAAAAAAAHAUAAAAAAAAdBQAAAAAAAAAAAAAdBQAAAAAAAB4FAAAAAAAAAAAAAB4FAAAAAAAAHwUAAAAAAAAAAAAAHwUAAAAAAAAgBQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAbBQAAAAAAABsFAAAAAAAAAAAAAAAA8L8" + ], + [ + 82, + 1, + "right_delete", + null, + "AQAAAAcGAAAAAAAABwYAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAYBgAAAAAAAAcGAAAAAAAAAAAAAAAAQkA" + ], + [ + 84, + 1, + "left_delete", + null, + "AQAAAAIGAAAAAAAAAgYAAAAAAAABAAAACg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAADBgAAAAAAAAMGAAAAAAAAAAAAAAAAAAA" + ], + [ + 89, + 1, + "insert", + { + "characters": "core." + }, + "BQAAAE0GAAAAAAAATgYAAAAAAAAAAAAATgYAAAAAAABPBgAAAAAAAAAAAABPBgAAAAAAAFAGAAAAAAAAAAAAAFAGAAAAAAAAUQYAAAAAAAAAAAAAUQYAAAAAAABSBgAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABNBgAAAAAAAE0GAAAAAAAAAAAAAAAA8L8" + ], + [ + 94, + 1, + "insert", + { + "characters": "core." + }, + "BQAAAFAHAAAAAAAAUQcAAAAAAAAAAAAAUQcAAAAAAABSBwAAAAAAAAAAAABSBwAAAAAAAFMHAAAAAAAAAAAAAFMHAAAAAAAAVAcAAAAAAAAAAAAAVAcAAAAAAABVBwAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABQBwAAAAAAAFAHAAAAAAAAAAAAAAAA8L8" + ], + [ + 98, + 1, + "insert", + { + "characters": "core." + }, + "BQAAAKwHAAAAAAAArQcAAAAAAAAAAAAArQcAAAAAAACuBwAAAAAAAAAAAACuBwAAAAAAAK8HAAAAAAAAAAAAAK8HAAAAAAAAsAcAAAAAAAAAAAAAsAcAAAAAAACxBwAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsBwAAAAAAAKwHAAAAAAAAAAAAAAAA8L8" + ], + [ + 109, + 1, + "right_delete", + null, + "AQAAAG8DAAAAAAAAbwMAAAAAAAAEAAAAICAgIA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABvAwAAAAAAAHMDAAAAAAAA////////738" + ], + [ + 113, + 1, + "left_delete", + null, + "AQAAAG4DAAAAAAAAbgMAAAAAAAABAAAAOg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABvAwAAAAAAAG8DAAAAAAAAAAAAAAAAW0A" + ], + [ + 114, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAG4DAAAAAAAAbwMAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABuAwAAAAAAAG4DAAAAAAAAAAAAAAAA8L8" + ], + [ + 124, + 1, + "paste", + null, + "AgAAAK4AAAAAAAAA5QAAAAAAAAAAAAAA5QAAAAAAAADlAAAAAAAAADAAAABmcm9tIHN0YWNvc3lzLmNvcmUuY29uZmlnIGltcG9ydCBDb25maWdQYXJhbWV0ZXI", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADeAAAAAAAAAK4AAAAAAAAAAAAAAAAAAAA" + ], + [ + 5, + 1, + "insert", + { + "characters": ".core" + }, + "BQAAAKEAAAAAAAAAogAAAAAAAAAAAAAAogAAAAAAAACjAAAAAAAAAAAAAACjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAACmAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAoQAAAAAAAAChAAAAAAAAAAAAAAAAAPC/" + ], + [ + 8, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAK4AAAAAAAAArwAAAAAAAAAAAAAArwAAAAAAAACvAAAAAAAAAAQAAABjb3JlrwAAAAAAAACwAAAAAAAAAAAAAACwAAAAAAAAALEAAAAAAAAAAAAAALEAAAAAAAAAsgAAAAAAAAAAAAAAsgAAAAAAAACzAAAAAAAAAAAAAACzAAAAAAAAALQAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsgAAAAAAAACuAAAAAAAAAAAAAAAAAPC/" + ], + [ + 22, + 1, + "right_delete", + null, + "AQAAALkCAAAAAAAAuQIAAAAAAAAFAAAAY29yZS4", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAuQIAAAAAAAC+AgAAAAAAAAAAAAAAAPC/" + ], + [ + 28, + 1, + "right_delete", + null, + "AQAAAPoCAAAAAAAA+gIAAAAAAAAFAAAAY29yZS4", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA+gIAAAAAAAD/AgAAAAAAAAAAAAAAAPC/" + ], + [ + 35, + 1, + "right_delete", + null, + "AQAAABsFAAAAAAAAGwUAAAAAAAAFAAAAY29yZS4", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAGwUAAAAAAAAgBQAAAAAAAAAAAAAAAPC/" + ], + [ + 40, + 1, + "right_delete", + null, + "AQAAAEgGAAAAAAAASAYAAAAAAAAFAAAAY29yZS4", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATQYAAAAAAABIBgAAAAAAAAAAAAAAAPC/" + ], + [ + 44, + 1, + "right_delete", + null, + "AQAAAEYHAAAAAAAARgcAAAAAAAAFAAAAY29yZS4", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASwcAAAAAAABGBwAAAAAAAAAAAAAAAPC/" + ], + [ + 48, + 1, + "right_delete", + null, + "AQAAAJ0HAAAAAAAAnQcAAAAAAAAFAAAAY29yZS4", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAogcAAAAAAACdBwAAAAAAAAAAAAAAAPC/" + ], + [ + 55, + 2, + "right_delete", + null, + "AgAAAO4AAAAAAAAA7gAAAAAAAAAgAAAAIyBpbXBvcnQgQ29uZmlnLCBDb25maWdQYXJhbWV0ZXLuAAAAAAAAAO4AAAAAAAAAAQAAAAo", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADgEAAAAAAADuAAAAAAAAAAAAAAAAAAAA" + ], + [ + 5, + 1, + "insert", + { + "characters": "service" + }, + "CAAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACjAAAAAAAAAAQAAABjb3JlowAAAAAAAACkAAAAAAAAAAAAAACkAAAAAAAAAKUAAAAAAAAAAAAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAACnAAAAAAAAAKgAAAAAAAAAAAAAAKgAAAAAAAAAqQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKIAAAAAAAAApgAAAAAAAAAAAAAAAADwvw" + ], + [ + 9, + 1, + "insert", + { + "characters": "service" + }, + "CAAAAMYAAAAAAAAAxwAAAAAAAAAAAAAAxwAAAAAAAADHAAAAAAAAAAQAAABjb3JlxwAAAAAAAADIAAAAAAAAAAAAAADIAAAAAAAAAMkAAAAAAAAAAAAAAMkAAAAAAAAAygAAAAAAAAAAAAAAygAAAAAAAADLAAAAAAAAAAAAAADLAAAAAAAAAMwAAAAAAAAAAAAAAMwAAAAAAAAAzQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMoAAAAAAAAAxgAAAAAAAAAAAAAAAADwvw" + ], + [ + 12, + 1, + "insert", + { + "characters": "," + }, + "AQAAALcAAAAAAAAAuAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALcAAAAAAAAAtwAAAAAAAAAAAAAAAADwvw" + ], + [ + 13, + 1, + "insert", + { + "characters": " rss" + }, + "BAAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAC6AAAAAAAAALsAAAAAAAAAAAAAALsAAAAAAAAAvAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAADwvw" + ], + [ + 16, + 1, + "right_delete", + null, + "AQAAAPkAAAAAAAAA+QAAAAAAAAAhAAAAZnJvbSBzdGFjb3N5cy5jb3JlLnJzcyBpbXBvcnQgUnNz", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABoBAAAAAAAA+QAAAAAAAAAAAAAAAAAAAA" + ], + [ + 18, + 2, + "right_delete", + null, + "AgAAAPgAAAAAAAAA+AAAAAAAAAABAAAACvgAAAAAAAAA+AAAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPgAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAA" + ], + [ + 23, + 1, + "right_delete", + null, + "AQAAANUHAAAAAAAA1QcAAAAAAAALAAAAcnNzID0gUnNzKCk", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOAHAAAAAAAA1QcAAAAAAAAAAAAAAABCQA" + ], + [ + 25, + 1, + "left_delete", + null, + "AQAAANAHAAAAAAAA0AcAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANEHAAAAAAAA0QcAAAAAAAAAAAAAAAAAAA" + ], + [ + 28, + 1, + "revert", + null, + "BAAAAAAAAAAAAAAAAAAAAAAAAAC6CQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgaGFzaGxpYgppbXBvcnQgbG9nZ2luZwoKZnJvbSBmbGFzayBpbXBvcnQgZmxhc2gsIHJlZGlyZWN0LCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIHNlc3Npb24KCmZyb20gc3RhY29zeXMuc2VydmljZSBpbXBvcnQgY29uZmlnLCByc3MKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ1BhcmFtZXRlcgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYW8KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgphcHAuYWRkX3VybF9ydWxlKCIvd2ViIiwgZW5kcG9pbnQ9ImluZGV4IikKYXBwLmFkZF91cmxfcnVsZSgiL3dlYi8iLCBlbmRwb2ludD0iaW5kZXgiKQoKCkBhcHAuZW5kcG9pbnQoImluZGV4IikKZGVmIGluZGV4KCk6CiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCmRlZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOiAgICAKICAgIGhhc2hlZCA9IGhhc2hsaWIuc2hhMjU2KHBhc3N3b3JkLmVuY29kZSgpKS5oZXhkaWdlc3QoKS51cHBlcigpCiAgICByZXR1cm4gKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkgPT0gdXNlcm5hbWUKICAgICAgICBhbmQgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1BBU1NXT1JEKSA9PSBoYXNoZWQKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2xvZ2luIiwgbWV0aG9kcz1bIlBPU1QiLCAiR0VUIl0pCmRlZiBsb2dpbigpOgogICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gIlBPU1QiOgogICAgICAgIHVzZXJuYW1lID0gcmVxdWVzdC5mb3JtLmdldCgidXNlcm5hbWUiKQogICAgICAgIHBhc3N3b3JkID0gcmVxdWVzdC5mb3JtLmdldCgicGFzc3dvcmQiKQogICAgICAgIGlmIGlzX2xvZ2luX29rKHVzZXJuYW1lLCBwYXNzd29yZCk6CiAgICAgICAgICAgIHNlc3Npb25bInVzZXIiXSA9IHVzZXJuYW1lCiAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCgiL3dlYi9hZG1pbiIpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJJZGVudGlmaWFudCBvdSBtb3QgZGUgcGFzc2UgaW5jb3JyZWN0IikKICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvbG9naW4iKQogICAgIyBHRVQKICAgIHJldHVybiByZW5kZXJfdGVtcGxhdGUoImxvZ2luXyIgKyBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5MQU5HKSArICIuaHRtbCIpCgoKQGFwcC5yb3V0ZSgiL3dlYi9sb2dvdXQiLCBtZXRob2RzPVsiR0VUIl0pCmRlZiBsb2dvdXQoKToKICAgIHNlc3Npb24ucG9wKCJ1c2VyIikKICAgIHJldHVybiByZWRpcmVjdCgiL3dlYi9hZG1pbiIpCgoKQGFwcC5yb3V0ZSgiL3dlYi9hZG1pbiIsIG1ldGhvZHM9WyJHRVQiXSkKZGVmIGFkbWluX2hvbWVwYWdlKCk6ICAgIAogICAgaWYgbm90ICgKICAgICAgICAidXNlciIgaW4gc2Vzc2lvbgogICAgICAgIGFuZCBzZXNzaW9uWyJ1c2VyIl0gPT0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1VTRVJOQU1FKQogICAgKToKICAgICAgICAjIFRPRE8gbG9jYWxpemF0aW9uCiAgICAgICAgZmxhc2goIlZvdXMgYXZleiDDqXTDqSBkw6ljb25uZWN0w6kuIikKICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvbG9naW4iKQoKICAgIGNvbW1lbnRzID0gZGFvLmZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICJhZG1pbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiLAogICAgICAgIGNvbW1lbnRzPWNvbW1lbnRzLAogICAgICAgIGJhc2V1cmw9Y29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiUE9TVCJdKQpkZWYgYWRtaW5fYWN0aW9uKCk6ICAgIAogICAgY29tbWVudCA9IGRhby5maW5kX2NvbW1lbnRfYnlfaWQocmVxdWVzdC5mb3JtLmdldCgiY29tbWVudCIpKQogICAgaWYgY29tbWVudCBpcyBOb25lOgogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgaW50cm91dmFibGUiKQogICAgZWxpZiByZXF1ZXN0LmZvcm0uZ2V0KCJhY3Rpb24iKSA9PSAiQVBQUk9WRSI6CiAgICAgICAgZGFvLnB1Ymxpc2hfY29tbWVudChjb21tZW50KQogICAgICAgIHJzcy5nZW5lcmF0ZSgpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBwdWJsacOpIikKICAgIGVsc2U6CiAgICAgICAgZGFvLmRlbGV0ZV9jb21tZW50KGNvbW1lbnQpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBzdXBwcmltw6kiKQogICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2FkbWluIikKAAAAAAAAAACoCQAAAAAAAAAAAAAAAAAAAAAAAKgJAAAAAAAAAAAAAAAAAAAAAAAAqAkAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANAHAAAAAAAA0AcAAAAAAAAAAAAAAADwvw" ] ] }, { - "file": "stacosys/model/comment.py", + "file": "tests/test_config.py", "settings": { - "buffer_size": 471, + "buffer_size": 1382, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 7, + 1, + "insert", + { + "characters": "service" + }, + "CAAAAEoAAAAAAAAASwAAAAAAAAAAAAAASwAAAAAAAABLAAAAAAAAAAQAAABjb25mSwAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAE0AAAAAAAAAAAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAASgAAAAAAAAAAAAAAAADwvw" + ], + [ + 11, + 1, + "insert", + { + "characters": "uration" + }, + "BwAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAAAAAAF4AAAAAAAAAXwAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" + ], + [ + 15, + 2, + "right_delete", + null, + "AgAAAGcAAAAAAAAAZwAAAAAAAAAHAAAAQ29uZmlnLGcAAAAAAAAAZwAAAAAAAAABAAAAIA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGcAAAAAAAAAbgAAAAAAAAAAAAAAAADwvw" + ], + [ + 17, + 1, + "insert", + { + "characters": "\nimport" + }, + "BwAAADsAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAA9AAAAAAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEEAAAAAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADsAAAAAAAAAOwAAAAAAAAAAAAAAADB4QA" + ], + [ + 18, + 1, + "insert", + { + "characters": " st" + }, + "AwAAAEIAAAAAAAAAQwAAAAAAAAAAAAAAQwAAAAAAAABEAAAAAAAAAAAAAABEAAAAAAAAAEUAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEIAAAAAAAAAQgAAAAAAAAAAAAAAAADwvw" + ], + [ + 19, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"stacosys\",\"kind\":9,\"sortText\":\"02.9999.stacosys\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "stacosys" + }, + "AgAAAEMAAAAAAAAAQwAAAAAAAAACAAAAc3RDAAAAAAAAAEsAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEUAAAAAAAAARQAAAAAAAAAAAAAAAADwvw" + ], + [ + 20, + 1, + "insert", + { + "characters": ".core" + }, + "BQAAAEsAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAABNAAAAAAAAAAAAAABNAAAAAAAAAE4AAAAAAAAAAAAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEsAAAAAAAAASwAAAAAAAAAAAAAAAADwvw" + ], + [ + 21, + 4, + "left_delete", + null, + "BAAAAE8AAAAAAAAATwAAAAAAAAABAAAAZU4AAAAAAAAATgAAAAAAAAABAAAAck0AAAAAAAAATQAAAAAAAAABAAAAb0wAAAAAAAAATAAAAAAAAAABAAAAYw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFAAAAAAAAAAUAAAAAAAAAAAAAAAAADwvw" + ], + [ + 22, + 1, + "insert", + { + "characters": "ser" + }, + "AwAAAEwAAAAAAAAATQAAAAAAAAAAAAAATQAAAAAAAABOAAAAAAAAAAAAAABOAAAAAAAAAE8AAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEwAAAAAAAAATAAAAAAAAAAAAAAAAADwvw" + ], + [ + 23, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"service\",\"kind\":9,\"sortText\":\"02.9999.service\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "service" + }, + "AgAAAEwAAAAAAAAATAAAAAAAAAADAAAAc2VyTAAAAAAAAABTAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" + ], + [ + 24, + 1, + "insert", + { + "characters": "." + }, + "AQAAAFMAAAAAAAAAVAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFMAAAAAAAAAUwAAAAAAAAAAAAAAAADwvw" + ], + [ + 27, + 1, + "insert", + { + "characters": "from" + }, + "BQAAADwAAAAAAAAAPQAAAAAAAAAAAAAAPQAAAAAAAAA9AAAAAAAAAAYAAABpbXBvcnQ9AAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAABAAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADwAAAAAAAAAQgAAAAAAAAAAAAAAAADwvw" + ], + [ + 28, + 1, + "insert", + { + "characters": " " + }, + "AQAAAEAAAAAAAAAAQQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAADwvw" + ], + [ + 31, + 1, + "left_delete", + null, + "AQAAAEEAAAAAAAAAQQAAAAAAAAABAAAAIA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEIAAAAAAAAAQgAAAAAAAAAAAAAAAADwvw" + ], + [ + 33, + 1, + "left_delete", + null, + "AQAAAFEAAAAAAAAAUQAAAAAAAAABAAAALg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAUgAAAAAAAAAAAAAAAADwvw" + ], + [ + 34, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABWAAAAAAAAAAAAAABWAAAAAAAAAFcAAAAAAAAAAAAAAFcAAAAAAAAAWAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFEAAAAAAAAAUQAAAAAAAAAAAAAAAADwvw" + ], + [ + 35, + 1, + "insert", + { + "characters": " " + }, + "AQAAAFgAAAAAAAAAWQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" + ], + [ + 39, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"config\",\"data\":{\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"config\",\"position\":{\"character\":29,\"line\":5},\"filePath\":\"/home/yannic/work/stacosys/tests/test_config.py\"},\"kind\":6,\"sortText\":\"09.9999.config\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "config" + }, + "AQAAAFkAAAAAAAAAXwAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" + ], + [ + 58, + 1, + "right_delete", + null, + "AQAAADkBAAAAAAAAOQEAAAAAAAAUAAAAc2VsZi5jb25mID0gQ29uZmlnKCk", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0BAAAAAAAAOQEAAAAAAAAAAAAAAABSQA" + ], + [ + 60, + 1, + "left_delete", + null, + "AQAAADABAAAAAAAAMAEAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADEBAAAAAAAAMQEAAAAAAAAAAAAAAAAAAA" + ], + [ + 64, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAEEBAAAAAAAAQgEAAAAAAAAAAAAAQgEAAAAAAABCAQAAAAAAAAkAAABzZWxmLmNvbmZCAQAAAAAAAEMBAAAAAAAAAAAAAEMBAAAAAAAARAEAAAAAAAAAAAAARAEAAAAAAABFAQAAAAAAAAAAAABFAQAAAAAAAEYBAAAAAAAAAAAAAEYBAAAAAAAARwEAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEoBAAAAAAAAQQEAAAAAAAAAAAAAAADwvw" + ], + [ + 68, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAI0BAAAAAAAAjgEAAAAAAAAAAAAAjgEAAAAAAACOAQAAAAAAAAkAAABzZWxmLmNvbmaOAQAAAAAAAI8BAAAAAAAAAAAAAI8BAAAAAAAAkAEAAAAAAAAAAAAAkAEAAAAAAACRAQAAAAAAAAAAAACRAQAAAAAAAJIBAAAAAAAAAAAAAJIBAAAAAAAAkwEAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJYBAAAAAAAAjQEAAAAAAAAAAAAAAABSQA" + ], + [ + 79, + 1, + "paste", + null, + "AgAAAPsBAAAAAAAAAQIAAAAAAAAAAAAAAQIAAAAAAAABAgAAAAAAAAkAAABzZWxmLmNvbmY", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPsBAAAAAAAABAIAAAAAAAAAAAAAAADwvw" + ], + [ + 84, + 1, + "paste", + null, + "AgAAAGkCAAAAAAAAbwIAAAAAAAAAAAAAbwIAAAAAAABvAgAAAAAAAAkAAABzZWxmLmNvbmY", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHICAAAAAAAAaQIAAAAAAAAAAAAAAADwvw" + ], + [ + 89, + 1, + "paste", + null, + "AgAAANACAAAAAAAA1gIAAAAAAAAAAAAA1gIAAAAAAADWAgAAAAAAAAkAAABzZWxmLmNvbmY", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANACAAAAAAAA2QIAAAAAAAAAAAAAAADwvw" + ], + [ + 94, + 1, + "paste", + null, + "AgAAACEDAAAAAAAAJwMAAAAAAAAAAAAAJwMAAAAAAAAnAwAAAAAAAAkAAABzZWxmLmNvbmY", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACoDAAAAAAAAIQMAAAAAAAAAAAAAAADwvw" + ], + [ + 99, + 1, + "paste", + null, + "AgAAAIMDAAAAAAAAiQMAAAAAAAAAAAAAiQMAAAAAAACJAwAAAAAAAAkAAABzZWxmLmNvbmY", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMDAAAAAAAAjAMAAAAAAAAAAAAAAADwvw" + ], + [ + 145, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAM0DAAAAAAAAzgMAAAAAAAAAAAAAzgMAAAAAAADOAwAAAAAAAAkAAABzZWxmLmNvbmbOAwAAAAAAAM8DAAAAAAAAAAAAAM8DAAAAAAAA0AMAAAAAAAAAAAAA0AMAAAAAAADRAwAAAAAAAAAAAADRAwAAAAAAANIDAAAAAAAAAAAAANIDAAAAAAAA0wMAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANYDAAAAAAAAzQMAAAAAAAAAAAAAAADwvw" + ], + [ + 150, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAIIEAAAAAAAAgwQAAAAAAAAAAAAAgwQAAAAAAACDBAAAAAAAAAkAAABzZWxmLmNvbmaDBAAAAAAAAIQEAAAAAAAAAAAAAIQEAAAAAAAAhQQAAAAAAAAAAAAAhQQAAAAAAACGBAAAAAAAAAAAAACGBAAAAAAAAIcEAAAAAAAAAAAAAIcEAAAAAAAAiAQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIIEAAAAAAAAiwQAAAAAAAAAAAAAAADwvw" + ], + [ + 155, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAK8EAAAAAAAAsAQAAAAAAAAAAAAAsAQAAAAAAACwBAAAAAAAAAkAAABzZWxmLmNvbmawBAAAAAAAALEEAAAAAAAAAAAAALEEAAAAAAAAsgQAAAAAAAAAAAAAsgQAAAAAAACzBAAAAAAAAAAAAACzBAAAAAAAALQEAAAAAAAAAAAAALQEAAAAAAAAtQQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALgEAAAAAAAArwQAAAAAAAAAAAAAAABSQA" + ], + [ + 160, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAPcEAAAAAAAA+AQAAAAAAAAAAAAA+AQAAAAAAAD4BAAAAAAAAAkAAABzZWxmLmNvbmb4BAAAAAAAAPkEAAAAAAAAAAAAAPkEAAAAAAAA+gQAAAAAAAAAAAAA+gQAAAAAAAD7BAAAAAAAAAAAAAD7BAAAAAAAAPwEAAAAAAAAAAAAAPwEAAAAAAAA/QQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPcEAAAAAAAAAAUAAAAAAAAAAAAAAADwvw" + ], + [ + 164, + 1, + "insert", + { + "characters": "config" + }, + "BwAAADUFAAAAAAAANgUAAAAAAAAAAAAANgUAAAAAAAA2BQAAAAAAAAkAAABzZWxmLmNvbmY2BQAAAAAAADcFAAAAAAAAAAAAADcFAAAAAAAAOAUAAAAAAAAAAAAAOAUAAAAAAAA5BQAAAAAAAAAAAAA5BQAAAAAAADoFAAAAAAAAAAAAADoFAAAAAAAAOwUAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADUFAAAAAAAAPgUAAAAAAAAAAAAAAADwvw" + ] + ] + }, + { + "file": "Dockerfile", + "settings": + { + "buffer_size": 716, "line_ending": "Unix" } }, { - "file": "stacosys/conf/config.py", + "file": "tests/test_api.py", "settings": { - "buffer_size": 2481, + "buffer_size": 1634, "encoding": "UTF-8", "line_ending": "Unix" } + }, + { + "file": "stacosys/service/__init__.py", + "settings": + { + "buffer_size": 180, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 4, + 1, + "insert", + { + "characters": "from" + }, + "BAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAUQAAAAAAAABRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 5, + 1, + "insert", + { + "characters": " .maile" + }, + "BwAAAFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAABXAAAAAAAAAFgAAAAAAAAAAAAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAFsAAAAAAAAAXAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 6, + 1, + "insert", + { + "characters": "r" + }, + "AQAAAFwAAAAAAAAAXQAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXAAAAAAAAABcAAAAAAAAAAAAAAAAAPC/" + ], + [ + 7, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" + ], + [ + 8, + 1, + "insert", + { + "characters": " Mailer" + }, + "BwAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABpAAAAAAAAAAAAAABpAAAAAAAAAGoAAAAAAAAAAAAAAGoAAAAAAAAAawAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAPC/" + ], + [ + 9, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAGsAAAAAAAAAbAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" + ], + [ + 11, + 1, + "insert", + { + "characters": "mailer" + }, + "BgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAAAA" + ], + [ + 12, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 13, + 1, + "insert", + { + "characters": " " + }, + "AQAAAIcAAAAAAAAAiAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" + ], + [ + 17, + 2, + "left_delete", + null, + "AgAAAFwAAAAAAAAAXAAAAAAAAAABAAAAclsAAAAAAAAAWwAAAAAAAAABAAAAZQ", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" + ], + [ + 22, + 1, + "insert", + { + "characters": "Mailer" + }, + "BgAAAIYAAAAAAAAAhwAAAAAAAAAAAAAAhwAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIkAAAAAAAAAAAAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" + ], + [ + 23, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAIwAAAAAAAAAjgAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjAAAAAAAAACMAAAAAAAAAAAAAAAAAPC/" + ], + [ + 33, + 1, + "insert", + { + "characters": "\nfrom" + }, + "BQAAAGkAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABuAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" + ], + [ + 34, + 1, + "insert", + { + "characters": " .rss" + }, + "BQAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHEAAAAAAAAAAAAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbgAAAAAAAABuAAAAAAAAAAAAAAAAAPC/" + ], + [ + 35, + 1, + "insert", + { + "characters": "feed" + }, + "BAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB1AAAAAAAAAAAAAAB1AAAAAAAAAHYAAAAAAAAAAAAAAHYAAAAAAAAAdwAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" + ], + [ + 36, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAHcAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAB5AAAAAAAAAAAAAAB5AAAAAAAAAHoAAAAAAAAAAAAAAHoAAAAAAAAAewAAAAAAAAAAAAAAewAAAAAAAAB8AAAAAAAAAAAAAAB8AAAAAAAAAH0AAAAAAAAAAAAAAH0AAAAAAAAAfgAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdwAAAAAAAAB3AAAAAAAAAAAAAAAAAPC/" + ], + [ + 37, + 1, + "insert", + { + "characters": " " + }, + "AQAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfgAAAAAAAAB+AAAAAAAAAAAAAAAAAPC/" + ], + [ + 38, + 1, + "insert", + { + "characters": "Rss" + }, + "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 41, + 1, + "insert", + { + "characters": "\nrss" + }, + "BAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAAqAAAAAAAAACpAAAAAAAAAAAAAACpAAAAAAAAAKoAAAAAAAAAAAAAAKoAAAAAAAAAqwAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApwAAAAAAAACnAAAAAAAAAAAAAAAAAGtA" + ], + [ + 42, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAKsAAAAAAAAArAAAAAAAAAAAAAAArAAAAAAAAACtAAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAqwAAAAAAAACrAAAAAAAAAAAAAAAAAPC/" + ], + [ + 43, + 1, + "insert", + { + "characters": " Rss" + }, + "BAAAAK0AAAAAAAAArgAAAAAAAAAAAAAArgAAAAAAAACvAAAAAAAAAAAAAACvAAAAAAAAALAAAAAAAAAAAAAAALAAAAAAAAAAsQAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArQAAAAAAAACtAAAAAAAAAAAAAAAAAPC/" + ], + [ + 44, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAALEAAAAAAAAAswAAAAAAAAAAAAAA", + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsQAAAAAAAACxAAAAAAAAAAAAAAAAAPC/" + ], + [ + 9, + 1, + "revert", + null, + "BAAAAAAAAAAAAAAAAAAAAAAAAACzAAAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIC5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWcKZnJvbSAubWFpbCBpbXBvcnQgTWFpbGVyCmZyb20gLnJzc2ZlZWQgaW1wb3J0IFJzcwoKY29uZmlnID0gQ29uZmlnKCkKbWFpbGVyID0gTWFpbGVyKCkKcnNzID0gUnNzKCkAAAAAAAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAC0AAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAlQAAAAAAAAAAAAAAAADwvw" + ] + ] + }, + { + "file": "stacosys/interface/form.py", + "settings": + { + "buffer_size": 2659, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 7, + 1, + "right_delete", + null, + "AQAAAJ0AAAAAAAAAnQAAAAAAAAAHAAAAQ29uZmlnLA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdAAAAAAAAAKQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 9, + 1, + "insert", + { + "characters": "\nfrom" + }, + "BQAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAAAAAAAfwAAAAAAAACAAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB7AAAAAAAAAHsAAAAAAAAAAAAAAACQckA" + ], + [ + 10, + 1, + "insert", + { + "characters": " stacosys" + }, + "CQAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAAAAAAIYAAAAAAAAAhwAAAAAAAAAAAAAAhwAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIkAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 11, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAAjQAAAAAAAACOAAAAAAAAAAAAAACOAAAAAAAAAI8AAAAAAAAAAAAAAI8AAAAAAAAAkAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACJAAAAAAAAAIkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 12, + 1, + "insert", + { + "characters": " core" + }, + "BQAAAJAAAAAAAAAAkQAAAAAAAAAAAAAAkQAAAAAAAACSAAAAAAAAAAAAAACSAAAAAAAAAJMAAAAAAAAAAAAAAJMAAAAAAAAAlAAAAAAAAAAAAAAAlAAAAAAAAACVAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACQAAAAAAAAAJAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 19, + 1, + "insert", + { + "characters": "core" + }, + "BQAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAAClAAAAAAAAAAQAAABjb25mpQAAAAAAAACmAAAAAAAAAAAAAACmAAAAAAAAAKcAAAAAAAAAAAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACkAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 24, + 1, + "right_delete", + null, + "AQAAAJ8BAAAAAAAAnwEAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACwAQAAAAAAAJ8BAAAAAAAAAAAAAAAAQkA" + ], + [ + 26, + 1, + "left_delete", + null, + "AQAAAJoBAAAAAAAAmgEAAAAAAAABAAAACg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAQAAAAAAAJsBAAAAAAAAAAAAAAAAAAA" + ], + [ + 31, + 1, + "insert", + { + "characters": "core." + }, + "BQAAALgFAAAAAAAAuQUAAAAAAAAAAAAAuQUAAAAAAAC6BQAAAAAAAAAAAAC6BQAAAAAAALsFAAAAAAAAAAAAALsFAAAAAAAAvAUAAAAAAAAAAAAAvAUAAAAAAAC9BQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC4BQAAAAAAALgFAAAAAAAAAAAAAAAA8L8" + ], + [ + 36, + 1, + "right_delete", + null, + "AQAAAAsHAAAAAAAACwcAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAcBwAAAAAAAAsHAAAAAAAAAAAAAAAAQkA" + ], + [ + 38, + 1, + "left_delete", + null, + "AQAAAAYHAAAAAAAABgcAAAAAAAABAAAACg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAHBwAAAAAAAAcHAAAAAAAAAAAAAAAAAAA" + ], + [ + 43, + 1, + "insert", + { + "characters": "core." + }, + "BQAAANMIAAAAAAAA1AgAAAAAAAAAAAAA1AgAAAAAAADVCAAAAAAAAAAAAADVCAAAAAAAANYIAAAAAAAAAAAAANYIAAAAAAAA1wgAAAAAAAAAAAAA1wgAAAAAAADYCAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTCAAAAAAAANMIAAAAAAAAAAAAAAAA8L8" + ], + [ + 49, + 1, + "insert", + { + "characters": "coer." + }, + "BQAAABoHAAAAAAAAGwcAAAAAAAAAAAAAGwcAAAAAAAAcBwAAAAAAAAAAAAAcBwAAAAAAAB0HAAAAAAAAAAAAAB0HAAAAAAAAHgcAAAAAAAAAAAAAHgcAAAAAAAAfBwAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAaBwAAAAAAABoHAAAAAAAAAAAAAAAA8L8" + ], + [ + 52, + 1, + "insert", + { + "characters": "re" + }, + "AwAAABwHAAAAAAAAHQcAAAAAAAAAAAAAHQcAAAAAAAAdBwAAAAAAAAIAAABlch0HAAAAAAAAHgcAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeBwAAAAAAABwHAAAAAAAAAAAAAAAA8L8" + ], + [ + 57, + 1, + "paste", + null, + "AgAAAJYAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADNAAAAAAAAADEAAABmcm9tIHN0YWNvc3lzLmNvcmUuY29uZmlnIGltcG9ydCAgQ29uZmlnUGFyYW1ldGVy", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADHAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAA" + ], + [ + 5, + 1, + "insert", + { + "characters": ".ser" + }, + "BAAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIkAAAAAAAAAiQAAAAAAAAAAAAAAAADwvw" + ], + [ + 6, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"service\",\"kind\":9,\"sortText\":\"02.9999.service\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "service" + }, + "AgAAAIoAAAAAAAAAigAAAAAAAAADAAAAc2VyigAAAAAAAACRAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0AAAAAAAAAjQAAAAAAAAAAAAAAAADwvw" + ], + [ + 10, + 1, + "insert", + { + "characters": "config" + }, + "BwAAAJkAAAAAAAAAmgAAAAAAAAAAAAAAmgAAAAAAAACaAAAAAAAAAAQAAABjb3JlmgAAAAAAAACbAAAAAAAAAAAAAACbAAAAAAAAAJwAAAAAAAAAAAAAAJwAAAAAAAAAnQAAAAAAAAAAAAAAnQAAAAAAAACeAAAAAAAAAAAAAACeAAAAAAAAAJ8AAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJ0AAAAAAAAAmQAAAAAAAAAAAAAAAADwvw" + ], + [ + 11, + 1, + "insert", + { + "characters": "," + }, + "AQAAAJ8AAAAAAAAAoAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJ8AAAAAAAAAnwAAAAAAAAAAAAAAAADwvw" + ], + [ + 12, + 1, + "insert", + { + "characters": " mailer" + }, + "BwAAAKAAAAAAAAAAoQAAAAAAAAAAAAAAoQAAAAAAAACiAAAAAAAAAAAAAACiAAAAAAAAAKMAAAAAAAAAAAAAAKMAAAAAAAAApAAAAAAAAAAAAAAApAAAAAAAAAClAAAAAAAAAAAAAAClAAAAAAAAAKYAAAAAAAAAAAAAAKYAAAAAAAAApwAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKAAAAAAAAAAoAAAAAAAAAAAAAAAAADwvw" + ], + [ + 16, + 1, + "right_delete", + null, + "AQAAAOAAAAAAAAAA4AAAAAAAAAAnAAAAZnJvbSBzdGFjb3N5cy5jb3JlLm1haWxlciBpbXBvcnQgTWFpbGVy", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAcBAAAAAAAA4AAAAAAAAAAAAAAAAAAAAA" + ], + [ + 17, + 1, + "left_delete", + null, + "AQAAAN8AAAAAAAAA3wAAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAADwvw" + ], + [ + 20, + 1, + "insert", + { + "characters": "service" + }, + "CAAAALYAAAAAAAAAtwAAAAAAAAAAAAAAtwAAAAAAAAC3AAAAAAAAAAQAAABjb3JltwAAAAAAAAC4AAAAAAAAAAAAAAC4AAAAAAAAALkAAAAAAAAAAAAAALkAAAAAAAAAugAAAAAAAAAAAAAAugAAAAAAAAC7AAAAAAAAAAAAAAC7AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYAAAAAAAAAugAAAAAAAAAAAAAAAADwvw" + ], + [ + 26, + 1, + "right_delete", + null, + "AQAAAKsFAAAAAAAAqwUAAAAAAAAFAAAAY29yZS4", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALAFAAAAAAAAqwUAAAAAAAAAAAAAAADwvw" + ], + [ + 33, + 1, + "right_delete", + null, + "AQAAAAgHAAAAAAAACAcAAAAAAAAFAAAAY29yZS4", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA0HAAAAAAAACAcAAAAAAAAAAAAAAADwvw" + ], + [ + 39, + 1, + "right_delete", + null, + "AQAAAJ8IAAAAAAAAnwgAAAAAAAARAAAAbWFpbGVyID0gTWFpbGVyKCk", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALAIAAAAAAAAnwgAAAAAAAAAAAAAAABCQA" + ], + [ + 41, + 1, + "left_delete", + null, + "AQAAAJoIAAAAAAAAmggAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJsIAAAAAAAAmwgAAAAAAAAAAAAAAAAAAA" + ], + [ + 45, + 1, + "right_delete", + null, + "AQAAAK8IAAAAAAAArwgAAAAAAAAFAAAAY29yZS4", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQIAAAAAAAArwgAAAAAAAAAAAAAAADwvw" + ], + [ + 48, + 1, + "revert", + null, + "BAAAAAAAAAAAAAAAAAAAAAAAAABvCgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCmltcG9ydCBsb2dnaW5nCgppbXBvcnQgYmFja2dyb3VuZApmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwgcmVkaXJlY3QsIHJlcXVlc3QKCmZyb20gc3RhY29zeXMuc2VydmljZSBpbXBvcnQgY29uZmlnLCBtYWlsZXIKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ1BhcmFtZXRlcgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYW8KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgoKQGFwcC5yb3V0ZSgiL25ld2NvbW1lbnQiLCBtZXRob2RzPVsiUE9TVCJdKQpkZWYgbmV3X2Zvcm1fY29tbWVudCgpOiAgICAKICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0KICAgIGxvZ2dlci5pbmZvKCJmb3JtIGRhdGEgJXMiLCBzdHIoZGF0YSkpCgogICAgIyBob25leXBvdCBmb3Igc3BhbW1lcnMKICAgIGNhcHRjaGEgPSBkYXRhLmdldCgicmVtYXJxdWUiLCAiIikKICAgIGlmIGNhcHRjaGE6CiAgICAgICAgbG9nZ2VyLndhcm5pbmcoImRpc2NhcmQgc3BhbTogZGF0YSAlcyIsIGRhdGEpCiAgICAgICAgYWJvcnQoNDAwKQoKICAgIHVybCA9IGRhdGEuZ2V0KCJ1cmwiLCAiIikKICAgIGF1dGhvcl9uYW1lID0gZGF0YS5nZXQoImF1dGhvciIsICIiKS5zdHJpcCgpCiAgICBhdXRob3JfZ3JhdmF0YXIgPSBkYXRhLmdldCgiZW1haWwiLCAiIikuc3RyaXAoKQogICAgYXV0aG9yX3NpdGUgPSBkYXRhLmdldCgic2l0ZSIsICIiKS5sb3dlcigpLnN0cmlwKCkKICAgIGlmIGF1dGhvcl9zaXRlIGFuZCBhdXRob3Jfc2l0ZVs6NF0gIT0gImh0dHAiOgogICAgICAgIGF1dGhvcl9zaXRlID0gImh0dHA6Ly8iICsgYXV0aG9yX3NpdGUKICAgIG1lc3NhZ2UgPSBkYXRhLmdldCgibWVzc2FnZSIsICIiKQoKICAgICMgYW50aS1zcGFtIGFnYWluCiAgICBpZiBub3QgdXJsIG9yIG5vdCBhdXRob3JfbmFtZSBvciBub3QgbWVzc2FnZToKICAgICAgICBsb2dnZXIud2FybmluZygiZW1wdHkgZmllbGQ6IGRhdGEgJXMiLCBkYXRhKQogICAgICAgIGFib3J0KDQwMCkKICAgIGlmIG5vdCBjaGVja19mb3JtX2RhdGEoZGF0YS50b19kaWN0KCkpOgogICAgICAgIGxvZ2dlci53YXJuaW5nKCJhZGRpdGlvbmFsIGZpZWxkOiBkYXRhICVzIiwgZGF0YSkKICAgICAgICBhYm9ydCg0MDApCgogICAgIyBhZGQgYSByb3cgdG8gQ29tbWVudCB0YWJsZQogICAgY29tbWVudCA9IGRhby5jcmVhdGVfY29tbWVudCgKICAgICAgICB1cmwsIGF1dGhvcl9uYW1lLCBhdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyLCBtZXNzYWdlCiAgICApCgogICAgIyBzZW5kIG5vdGlmaWNhdGlvbiBlLW1haWwgYXN5bmNocm9ub3VzbHkKICAgIHN1Ym1pdF9uZXdfY29tbWVudChjb21tZW50KQoKICAgIHJldHVybiByZWRpcmVjdChjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5TSVRFX1JFRElSRUNUKSwgY29kZT0zMDIpCgoKZGVmIGNoZWNrX2Zvcm1fZGF0YShwb3N0ZWRfY29tbWVudCk6CiAgICBmaWVsZHMgPSBbInVybCIsICJtZXNzYWdlIiwgInNpdGUiLCAicmVtYXJxdWUiLCAiYXV0aG9yIiwgInRva2VuIiwgImVtYWlsIl0KICAgIGZpbHRlcmVkID0gZGljdChmaWx0ZXIobGFtYmRhIHg6IHhbMF0gbm90IGluIGZpZWxkcywgcG9zdGVkX2NvbW1lbnQuaXRlbXMoKSkpCiAgICByZXR1cm4gbm90IGZpbHRlcmVkCgoKQGJhY2tncm91bmQudGFzawpkZWYgc3VibWl0X25ld19jb21tZW50KGNvbW1lbnQpOiAgICAKICAgIHNpdGVfdXJsID0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpCiAgICBjb21tZW50X2xpc3QgPSAoCiAgICAgICAgZiJXZWIgYWRtaW4gaW50ZXJmYWNlOiB7c2l0ZV91cmx9L3dlYi9hZG1pbiIsCiAgICAgICAgIiIsCiAgICAgICAgZiJhdXRob3I6IHtjb21tZW50LmF1dGhvcl9uYW1lfSIsCiAgICAgICAgZiJzaXRlOiB7Y29tbWVudC5hdXRob3Jfc2l0ZX0iLAogICAgICAgIGYiZGF0ZToge2NvbW1lbnQuY3JlYXRlZH0iLAogICAgICAgIGYidXJsOiB7Y29tbWVudC51cmx9IiwKICAgICAgICAiIiwKICAgICAgICBjb21tZW50LmNvbnRlbnQsCiAgICAgICAgIiIsCiAgICApCiAgICBlbWFpbF9ib2R5ID0gIlxuIi5qb2luKGNvbW1lbnRfbGlzdCkKCiAgICAjIHNlbmQgZW1haWwgdG8gbm90aWZ5IGFkbWluICAgIAogICAgc2l0ZV9uYW1lID0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9OQU1FKQogICAgc3ViamVjdCA9IGYiU1RBQ09TWVMge3NpdGVfbmFtZX0iCiAgICBpZiBtYWlsZXIuc2VuZChzdWJqZWN0LCBlbWFpbF9ib2R5KToKICAgICAgICBsb2dnZXIuZGVidWcoIm5ldyBjb21tZW50IHByb2Nlc3NlZCIpCgogICAgICAgICMgc2F2ZSBub3RpZmljYXRpb24gZGF0ZXRpbWUKICAgICAgICBkYW8ubm90aWZ5X2NvbW1lbnQoY29tbWVudCkKICAgIGVsc2U6CiAgICAgICAgbG9nZ2VyLndhcm5pbmcoInJlc2NoZWR1bGVkLiBzZW5kIG1haWwgZmFpbHVyZSAlcyIsIHN1YmplY3QpCgoKQGJhY2tncm91bmQuY2FsbGJhY2sKZGVmIHN1Ym1pdF9uZXdfY29tbWVudF9jYWxsYmFjayhmdXR1cmUpOgogICAgIyBUT0RPIHVzZSBmdXR1cmUgdG8gbG9nIHN1Ym1pdCBzdGF0dXMKICAgIGxvZ2dlci5kZWJ1ZyhmdXR1cmUpCgAAAAAAAAAAYwoAAAAAAAAAAAAAAAAAAAAAAABjCgAAAAAAAAAAAAAAAAAAAAAAAGMKAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADQJAAAAAAAANAkAAAAAAAAAAAAAAABiQA" + ] + ] + }, + { + "file": "stacosys/run.py", + "settings": + { + "buffer_size": 2789, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 7, + 1, + "insert", + { + "characters": "core" + }, + "BQAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABvAAAAAAAAAAQAAABjb25mbwAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHEAAAAAAAAAAAAAAHEAAAAAAAAAcgAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABuAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 11, + 1, + "cut", + null, + "AQAAAIEAAAAAAAAAgQAAAAAAAAAHAAAAQ29uZmlnLA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAAAAAAAAAIgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 12, + 1, + "right_delete", + null, + "AQAAAIEAAAAAAAAAgQAAAAAAAAABAAAAIA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAAAAAAAAAIEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 14, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAF8AAAAAAAAAYAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABfAAAAAAAAAF8AAAAAAAAAAAAAAACQckA" + ], + [ + 19, + 1, + "paste", + null, + "AQAAAGAAAAAAAAAAcgAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 20, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 21, + 1, + "insert", + { + "characters": " config" + }, + "BwAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5AAAAAAAAAHkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 36, + 1, + "insert", + { + "characters": "import" + }, + "BwAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABhAAAAAAAAAAQAAABmcm9tYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 41, + 1, + "right_delete", + null, + "AQAAAHQAAAAAAAAAdAAAAAAAAAAOAAAAIGltcG9ydCBjb25maWc", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 53, + 1, + "right_delete", + null, + "AQAAAJ0EAAAAAAAAnQQAAAAAAAAHAAAAY29uZiA9IA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACkBAAAAAAAAJ0EAAAAAAAAAAAAAAAAQkA" + ], + [ + 54, + 1, + "insert", + { + "characters": "core.c" + }, + "BgAAAJ0EAAAAAAAAngQAAAAAAAAAAAAAngQAAAAAAACfBAAAAAAAAAAAAACfBAAAAAAAAKAEAAAAAAAAAAAAAKAEAAAAAAAAoQQAAAAAAAAAAAAAoQQAAAAAAACiBAAAAAAAAAAAAACiBAAAAAAAAKMEAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdBAAAAAAAAJ0EAAAAAAAAAAAAAAAA8L8" + ], + [ + 55, + 1, + "right_delete", + null, + "AQAAAKMEAAAAAAAAowQAAAAAAAABAAAAQw", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACjBAAAAAAAAKMEAAAAAAAAAAAAAAAA8L8" + ], + [ + 79, + 1, + "insert", + { + "characters": "from" + }, + "BAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAA" + ], + [ + 80, + 1, + "insert", + { + "characters": " " + }, + "AQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 82, + 2, + "right_delete", + null, + "AgAAAGUAAAAAAAAAZQAAAAAAAAAGAAAAaW1wb3J0ZQAAAAAAAABlAAAAAAAAAAEAAAAg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlAAAAAAAAAGsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 84, + 1, + "insert", + { + "characters": " imo" + }, + "BAAAAG0AAAAAAAAAbgAAAAAAAAAAAAAAbgAAAAAAAABvAAAAAAAAAAAAAABvAAAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAAAAAcQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABtAAAAAAAAAG0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 85, + 1, + "left_delete", + null, + "AQAAAHAAAAAAAAAAcAAAAAAAAAABAAAAbw", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABxAAAAAAAAAHEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 86, + 1, + "insert", + { + "characters": "port" + }, + "BAAAAHAAAAAAAAAAcQAAAAAAAAAAAAAAcQAAAAAAAAByAAAAAAAAAAAAAAByAAAAAAAAAHMAAAAAAAAAAAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABwAAAAAAAAAHAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 87, + 1, + "right_delete", + null, + "AQAAAHQAAAAAAAAAdAAAAAAAAAABAAAALg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 88, + 1, + "insert", + { + "characters": " " + }, + "AQAAAHQAAAAAAAAAdQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 97, + 1, + "insert", + { + "characters": "core" + }, + "BAAAAOYEAAAAAAAA5wQAAAAAAAAAAAAA5wQAAAAAAADoBAAAAAAAAAAAAADoBAAAAAAAAOkEAAAAAAAAAAAAAOkEAAAAAAAA6gQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADmBAAAAAAAAOYEAAAAAAAAAAAAAAAA8L8" + ], + [ + 100, + 1, + "insert", + { + "characters": "." + }, + "AQAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBAAAAAAAAOoEAAAAAAAAAAAAAAAA8L8" + ], + [ + 102, + 1, + "insert", + { + "characters": "ig" + }, + "AgAAAO8EAAAAAAAA8AQAAAAAAAAAAAAA8AQAAAAAAADxBAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADvBAAAAAAAAO8EAAAAAAAAAAAAAAAA8L8" + ], + [ + 107, + 1, + "insert", + { + "characters": "core." + }, + "BQAAAHwFAAAAAAAAfQUAAAAAAAAAAAAAfQUAAAAAAAB+BQAAAAAAAAAAAAB+BQAAAAAAAH8FAAAAAAAAAAAAAH8FAAAAAAAAgAUAAAAAAAAAAAAAgAUAAAAAAACBBQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB8BQAAAAAAAHwFAAAAAAAAAAAAAAAA8L8" + ], + [ + 110, + 1, + "insert", + { + "characters": "ig" + }, + "AgAAAIUFAAAAAAAAhgUAAAAAAAAAAAAAhgUAAAAAAACHBQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFBQAAAAAAAIUFAAAAAAAAAAAAAAAA8L8" + ], + [ + 116, + 1, + "insert", + { + "characters": "coer." + }, + "BQAAAOEFAAAAAAAA4gUAAAAAAAAAAAAA4gUAAAAAAADjBQAAAAAAAAAAAADjBQAAAAAAAOQFAAAAAAAAAAAAAOQFAAAAAAAA5QUAAAAAAAAAAAAA5QUAAAAAAADmBQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADhBQAAAAAAAOEFAAAAAAAAAAAAAAAA8L8" + ], + [ + 117, + 3, + "left_delete", + null, + "AwAAAOUFAAAAAAAA5QUAAAAAAAABAAAALuQFAAAAAAAA5AUAAAAAAAABAAAAcuMFAAAAAAAA4wUAAAAAAAABAAAAZQ", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADmBQAAAAAAAOYFAAAAAAAAAAAAAAAA8L8" + ], + [ + 118, + 1, + "insert", + { + "characters": "re." + }, + "AwAAAOMFAAAAAAAA5AUAAAAAAAAAAAAA5AUAAAAAAADlBQAAAAAAAAAAAADlBQAAAAAAAOYFAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADjBQAAAAAAAOMFAAAAAAAAAAAAAAAA8L8" + ], + [ + 120, + 1, + "insert", + { + "characters": "ig" + }, + "AgAAAOoFAAAAAAAA6wUAAAAAAAAAAAAA6wUAAAAAAADsBQAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" + ], + [ + 126, + 1, + "insert", + { + "characters": "core." + }, + "BQAAAEwHAAAAAAAATQcAAAAAAAAAAAAATQcAAAAAAABOBwAAAAAAAAAAAABOBwAAAAAAAE8HAAAAAAAAAAAAAE8HAAAAAAAAUAcAAAAAAAAAAAAAUAcAAAAAAABRBwAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABMBwAAAAAAAEwHAAAAAAAAAAAAAAAA8L8" + ], + [ + 127, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"symbolLabel\":\"Config\",\"workspacePath\":\"/home/yannic/work/stacosys\",\"position\":{\"character\":13,\"line\":62},\"filePath\":\"/home/yannic/work/stacosys/stacosys/run.py\"},\"label\":\"Config\",\"sortText\":\"05.0000.Config\",\"kind\":7},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "Config" + }, + "AQAAAFEHAAAAAAAAVwcAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABRBwAAAAAAAFEHAAAAAAAAAAAAAAAA8L8" + ], + [ + 129, + 1, + "right_delete", + null, + "AQAAAFcHAAAAAAAAVwcAAAAAAAAEAAAAY29uZg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABXBwAAAAAAAFsHAAAAAAAAAAAAAAAA8L8" + ], + [ + 134, + 1, + "insert", + { + "characters": "c" + }, + "AQAAAFEHAAAAAAAAUgcAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABRBwAAAAAAAFEHAAAAAAAAAAAAAAAA8L8" + ], + [ + 135, + 1, + "right_delete", + null, + "AQAAAFIHAAAAAAAAUgcAAAAAAAABAAAAQw", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABSBwAAAAAAAFIHAAAAAAAAAAAAAAAA8L8" + ], + [ + 146, + 1, + "paste", + null, + "AgAAAHsHAAAAAAAAhgcAAAAAAAAAAAAAhgcAAAAAAACGBwAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB7BwAAAAAAAH8HAAAAAAAAAAAAAAAA8L8" + ], + [ + 150, + 1, + "paste", + null, + "AgAAAK4HAAAAAAAAuQcAAAAAAAAAAAAAuQcAAAAAAAC5BwAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACuBwAAAAAAALIHAAAAAAAAAAAAAAAA8L8" + ], + [ + 154, + 1, + "paste", + null, + "AgAAAOIHAAAAAAAA7QcAAAAAAAAAAAAA7QcAAAAAAADtBwAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADiBwAAAAAAAOYHAAAAAAAAAAAAAAAA8L8" + ], + [ + 158, + 1, + "paste", + null, + "AgAAABYIAAAAAAAAIQgAAAAAAAAAAAAAIQgAAAAAAAAhCAAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAWCAAAAAAAABoIAAAAAAAAAAAAAAAA8L8" + ], + [ + 170, + 1, + "paste", + null, + "AgAAAKYIAAAAAAAAsQgAAAAAAAAAAAAAsQgAAAAAAACxCAAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACmCAAAAAAAAKoIAAAAAAAAAAAAAAAA8L8" + ], + [ + 175, + 1, + "paste", + null, + "AgAAANoIAAAAAAAA5QgAAAAAAAAAAAAA5QgAAAAAAADlCAAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADaCAAAAAAAAN4IAAAAAAAAAAAAAAAA8L8" + ], + [ + 180, + 1, + "paste", + null, + "AgAAABIJAAAAAAAAHQkAAAAAAAAAAAAAHQkAAAAAAAAdCQAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAASCQAAAAAAABYJAAAAAAAAAAAAAAAA8L8" + ], + [ + 185, + 1, + "paste", + null, + "AgAAAEcJAAAAAAAAUgkAAAAAAAAAAAAAUgkAAAAAAABSCQAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABHCQAAAAAAAEsJAAAAAAAAAAAAAAAA8L8" + ], + [ + 190, + 1, + "paste", + null, + "AgAAAH8JAAAAAAAAigkAAAAAAAAAAAAAigkAAAAAAACKCQAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/CQAAAAAAAIMJAAAAAAAAAAAAAAAA8L8" + ], + [ + 195, + 1, + "paste", + null, + "AgAAACUKAAAAAAAAMAoAAAAAAAAAAAAAMAoAAAAAAAAwCgAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAlCgAAAAAAACkKAAAAAAAAAAAAAAAA8L8" + ], + [ + 200, + 1, + "paste", + null, + "AgAAAF4KAAAAAAAAaQoAAAAAAAAAAAAAaQoAAAAAAABpCgAAAAAAAAQAAABjb25m", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABeCgAAAAAAAGIKAAAAAAAAAAAAAAAA8L8" + ], + [ + 216, + 1, + "insert", + { + "characters": "." + }, + "AQAAAG0AAAAAAAAAbgAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABtAAAAAAAAAG0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 219, + 1, + "right_delete", + null, + "AQAAAG4AAAAAAAAAbgAAAAAAAAAIAAAAIGltcG9ydCA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABuAAAAAAAAAHYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 226, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 227, + 1, + "insert", + { + "characters": " confi" + }, + "BgAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5AAAAAAAAAHkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 228, + 1, + "insert", + { + "characters": "g" + }, + "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AAAAAAAAAH8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 241, + 1, + "insert", + { + "characters": "import" + }, + "BwAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABhAAAAAAAAAAQAAABmcm9tYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 251, + 1, + "insert", + { + "characters": "." + }, + "AgAAAHQAAAAAAAAAdQAAAAAAAAAAAAAAdQAAAAAAAAB1AAAAAAAAAAgAAAAgaW1wb3J0IA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 258, + 1, + "right_delete", + null, + "AQAAAKQEAAAAAAAApAQAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACpBAAAAAAAAKQEAAAAAAAAAAAAAAAA8L8" + ], + [ + 265, + 1, + "right_delete", + null, + "AQAAAOMEAAAAAAAA4wQAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADjBAAAAAAAAOgEAAAAAAAAAAAAAAAA8L8" + ], + [ + 270, + 1, + "right_delete", + null, + "AQAAAHQFAAAAAAAAdAUAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5BQAAAAAAAHQFAAAAAAAAAAAAAAAA8L8" + ], + [ + 297, + 1, + "insert", + { + "characters": "from" + }, + "BAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAA" + ], + [ + 298, + 1, + "insert", + { + "characters": " " + }, + "AQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 300, + 2, + "right_delete", + null, + "AgAAAGUAAAAAAAAAZQAAAAAAAAAGAAAAaW1wb3J0ZQAAAAAAAABlAAAAAAAAAAEAAAAg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlAAAAAAAAAGsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 302, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 303, + 1, + "insert", + { + "characters": " " + }, + "AQAAAHkAAAAAAAAAegAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5AAAAAAAAAHkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 304, + 1, + "right_delete", + null, + "AQAAAHoAAAAAAAAAegAAAAAAAAABAAAALg", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB6AAAAAAAAAHoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 311, + 1, + "insert", + { + "characters": "u" + }, + "AQAAAJoAAAAAAAAAmwAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 312, + 1, + "left_delete", + null, + "AQAAAJoAAAAAAAAAmgAAAAAAAAABAAAAdQ", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAAAAAAAAAJsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 313, + 1, + "insert", + { + "characters": "uration" + }, + "BwAAAJoAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACcAAAAAAAAAAAAAACcAAAAAAAAAJ0AAAAAAAAAAAAAAJ0AAAAAAAAAngAAAAAAAAAAAAAAngAAAAAAAACfAAAAAAAAAAAAAACfAAAAAAAAAKAAAAAAAAAAAAAAAKAAAAAAAAAAoQAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 353, + 1, + "right_delete", + null, + "AQAAAOAFAAAAAAAA4AUAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADgBQAAAAAAAOUFAAAAAAAAAAAAAAAA8L8" + ], + [ + 359, + 1, + "right_delete", + null, + "AQAAAEYHAAAAAAAARgcAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLBwAAAAAAAEYHAAAAAAAAAAAAAAAA8L8" + ], + [ + 363, + 1, + "right_delete", + null, + "AQAAAHAHAAAAAAAAcAcAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABwBwAAAAAAAHUHAAAAAAAAAAAAAAAA8L8" + ], + [ + 367, + 1, + "right_delete", + null, + "AQAAAJ4HAAAAAAAAngcAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeBwAAAAAAAKMHAAAAAAAAAAAAAAAA8L8" + ], + [ + 371, + 1, + "right_delete", + null, + "AQAAAM0HAAAAAAAAzQcAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADNBwAAAAAAANIHAAAAAAAAAAAAAAAA8L8" + ], + [ + 375, + 1, + "right_delete", + null, + "AQAAAPwHAAAAAAAA/AcAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD8BwAAAAAAAAEIAAAAAAAAAAAAAAAA8L8" + ], + [ + 379, + 1, + "right_delete", + null, + "AQAAAIcIAAAAAAAAhwgAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACMCAAAAAAAAIcIAAAAAAAAAAAAAAAA8L8" + ], + [ + 383, + 1, + "right_delete", + null, + "AQAAALYIAAAAAAAAtggAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC2CAAAAAAAALsIAAAAAAAAAAAAAAAA8L8" + ], + [ + 387, + 1, + "right_delete", + null, + "AQAAAOkIAAAAAAAA6QgAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpCAAAAAAAAO4IAAAAAAAAAAAAAAAA8L8" + ], + [ + 391, + 1, + "right_delete", + null, + "AQAAABkJAAAAAAAAGQkAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAZCQAAAAAAAB4JAAAAAAAAAAAAAAAA8L8" + ], + [ + 395, + 1, + "right_delete", + null, + "AQAAAEwJAAAAAAAATAkAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABMCQAAAAAAAFEJAAAAAAAAAAAAAAAA8L8" + ], + [ + 402, + 1, + "right_delete", + null, + "AQAAAO0JAAAAAAAA7QkAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADyCQAAAAAAAO0JAAAAAAAAAAAAAAAA8L8" + ], + [ + 406, + 1, + "right_delete", + null, + "AQAAACEKAAAAAAAAIQoAAAAAAAAFAAAAY29yZS4", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAhCgAAAAAAACYKAAAAAAAAAAAAAAAA8L8" + ], + [ + 5, + 1, + "insert", + { + "characters": "service" + }, + "CAAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABvAAAAAAAAAAQAAABjb3JlbwAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHEAAAAAAAAAAAAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAABzAAAAAAAAAHQAAAAAAAAAAAAAAHQAAAAAAAAAdQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHIAAAAAAAAAbgAAAAAAAAAAAAAAAADwvw" + ], + [ + 16, + 1, + "insert", + { + "characters": "service" + }, + "CAAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACTAAAAAAAAAAQAAABjb3JlkwAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJUAAAAAAAAAAAAAAJUAAAAAAAAAlgAAAAAAAAAAAAAAlgAAAAAAAACXAAAAAAAAAAAAAACXAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAmQAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJIAAAAAAAAAlgAAAAAAAAAAAAAAAADwvw" + ], + [ + 21, + 1, + "insert", + { + "characters": "service" + }, + "CAAAAM0AAAAAAAAAzgAAAAAAAAAAAAAAzgAAAAAAAADOAAAAAAAAAAQAAABjb3JlzgAAAAAAAADPAAAAAAAAAAAAAADPAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA0QAAAAAAAAAAAAAA0QAAAAAAAADSAAAAAAAAAAAAAADSAAAAAAAAANMAAAAAAAAAAAAAANMAAAAAAAAA1AAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAM0AAAAAAAAA0QAAAAAAAAAAAAAAAADwvw" + ], + [ + 25, + 2, + "left_delete", + null, + "AgAAANoAAAAAAAAA2gAAAAAAAAABAAAActkAAAAAAAAA2QAAAAAAAAABAAAAZQ", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANsAAAAAAAAA2wAAAAAAAAAAAAAAAADwvw" + ], + [ + 30, + 1, + "insert", + { + "characters": "," + }, + "AQAAAIMAAAAAAAAAhAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAgwAAAAAAAAAAAAAAAADwvw" + ], + [ + 31, + 1, + "insert", + { + "characters": " a" + }, + "AgAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIQAAAAAAAAAhAAAAAAAAAAAAAAAAADwvw" + ], + [ + 32, + 1, + "left_delete", + null, + "AQAAAIUAAAAAAAAAhQAAAAAAAAABAAAAYQ", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIYAAAAAAAAAhgAAAAAAAAAAAAAAAADwvw" + ], + [ + 33, + 1, + "insert", + { + "characters": "mailer," + }, + "BwAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAiQAAAAAAAAAAAAAAiQAAAAAAAACKAAAAAAAAAAAAAACKAAAAAAAAAIsAAAAAAAAAAAAAAIsAAAAAAAAAjAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" + ], + [ + 34, + 1, + "insert", + { + "characters": " rss" + }, + "BAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAAjQAAAAAAAACOAAAAAAAAAAAAAACOAAAAAAAAAI8AAAAAAAAAAAAAAI8AAAAAAAAAkAAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwAAAAAAAAAjAAAAAAAAAAAAAAAAADwvw" + ], + [ + 41, + 1, + "right_delete", + null, + "AQAAAMwAAAAAAAAAzAAAAAAAAABLAAAAZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLm1haWwgaW1wb3J0IE1haWxlcgpmcm9tIHN0YWNvc3lzLmNvcmUucnNzIGltcG9ydCBSc3MK", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMwAAAAAAAAAFwEAAAAAAAAAAAAAAAAAAA" + ], + [ + 48, + 1, + "right_delete", + null, + "AQAAAOgGAAAAAAAA6AYAAAAAAAALAAAAcnNzID0gUnNzKCk", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPMGAAAAAAAA6AYAAAAAAAAAAAAAAABCQA" + ], + [ + 50, + 1, + "left_delete", + null, + "AQAAAOMGAAAAAAAA4wYAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOQGAAAAAAAA5AYAAAAAAAAAAAAAAAAAAA" + ], + [ + 54, + 1, + "right_delete", + null, + "AQAAABQIAAAAAAAAFAgAAAAAAAARAAAAbWFpbGVyID0gTWFpbGVyKCk", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACUIAAAAAAAAFAgAAAAAAAAAAAAAAABCQA" + ], + [ + 56, + 1, + "left_delete", + null, + "AQAAAA8IAAAAAAAADwgAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABAIAAAAAAAAEAgAAAAAAAAAAAAAAAAAAA" + ], + [ + 59, + 1, + "revert", + null, + "BAAAAAAAAAAAAAAAAAAAAAAAAADtCgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmltcG9ydCBhcmdwYXJzZQppbXBvcnQgbG9nZ2luZwppbXBvcnQgb3MKaW1wb3J0IHN5cwoKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlIGltcG9ydCBjb25maWcsIG1haWxlciwgcnNzCmZyb20gc3RhY29zeXMuc2VydmljZS5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWdQYXJhbWV0ZXIKZnJvbSBzdGFjb3N5cy5kYiBpbXBvcnQgZGF0YWJhc2UKZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwaSwgYXBwLCBmb3JtCmZyb20gc3RhY29zeXMuaW50ZXJmYWNlLndlYiBpbXBvcnQgYWRtaW4KCgojIGNvbmZpZ3VyZSBsb2dnaW5nCmRlZiBjb25maWd1cmVfbG9nZ2luZyhsZXZlbCk6CiAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgIHJvb3RfbG9nZ2VyLnNldExldmVsKGxldmVsKQogICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCiAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQogICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoIlslKGFzY3RpbWUpc10gJShuYW1lKXMgJShsZXZlbG5hbWUpcyAlKG1lc3NhZ2UpcyIpCiAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCiAgICByb290X2xvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCgoKZGVmIHN0YWNvc3lzX3NlcnZlcihjb25maWdfcGF0aG5hbWUpOgogICAgIyBjb25maWd1cmUgbG9nZ2luZwogICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAgICBjb25maWd1cmVfbG9nZ2luZyhsb2dnaW5nLklORk8pCiAgICBsb2dnaW5nLmdldExvZ2dlcigid2Vya3pldWciKS5sZXZlbCA9IGxvZ2dpbmcuV0FSTklORwogICAgbG9nZ2luZy5nZXRMb2dnZXIoImFwc2NoZWR1bGVyLmV4ZWN1dG9ycyIpLmxldmVsID0gbG9nZ2luZy5XQVJOSU5HCgogICAgIyBjaGVjayBjb25maWcgZmlsZSBleGlzdHMKICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjb25maWdfcGF0aG5hbWUpOgogICAgICAgIGxvZ2dlci5lcnJvcigiQ29uZmlndXJhdGlvbiBmaWxlICclcycgbm90IGZvdW5kLiIsIGNvbmZpZ19wYXRobmFtZSkKICAgICAgICBzeXMuZXhpdCgxKQoKICAgICMgbG9hZCBhbmQgY2hlY2sgY29uZmlnCiAgICBjb25maWcubG9hZChjb25maWdfcGF0aG5hbWUpCiAgICBpc19jb25maWdfb2ssIGVycmV1cl9jb25maWcgPSBjb25maWcuY2hlY2soKQogICAgaWYgbm90IGlzX2NvbmZpZ19vazoKICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbmZpZ3VyYXRpb24gaW5jb3JyZWN0ZSAnJXMnIiwgZXJyZXVyX2NvbmZpZykKICAgICAgICBzeXMuZXhpdCgxKQogICAgbG9nZ2VyLmluZm8oY29uZmlnKQoKICAgICMgY2hlY2sgZGF0YWJhc2UgZmlsZSBleGlzdHMgKHByZXZlbnRzIGZyb20gY3JlYXRpbmcgYSBmcmVzaCBkYikKICAgIGRiX3BhdGhuYW1lID0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuREJfU1FMSVRFX0ZJTEUpCiAgICBpZiBub3QgZGJfcGF0aG5hbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKGRiX3BhdGhuYW1lKToKICAgICAgICBsb2dnZXIuZXJyb3IoIkRhdGFiYXNlIGZpbGUgJyVzJyBub3QgZm91bmQuIiwgZGJfcGF0aG5hbWUpCiAgICAgICAgc3lzLmV4aXQoMSkKCiAgICAjIGluaXRpYWxpemUgZGF0YWJhc2UKICAgIGRhdGFiYXNlLnNldHVwKGRiX3BhdGhuYW1lKQoKICAgIGxvZ2dlci5pbmZvKCJTdGFydCBTdGFjb3N5cyBhcHBsaWNhdGlvbiIpCgogICAgIyBnZW5lcmF0ZSBSU1MgICAgCiAgICByc3MuY29uZmlndXJlKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLkxBTkcpLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlJTU19GSUxFKSwKICAgICAgICBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5SU1NfUFJPVE8pLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNJVEVfTkFNRSksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQogICAgcnNzLmdlbmVyYXRlKCkKCiAgICAjIGNvbmZpZ3VyZSBtYWlsZXIgICAgCiAgICBtYWlsZXIuY29uZmlndXJlKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfSE9TVCksCiAgICAgICAgY29uZmlnLmdldF9pbnQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfUE9SVCksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU01UUF9MT0dJTiksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU01UUF9QQVNTV09SRCksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9BRE1JTl9FTUFJTCksCiAgICApCgogICAgbG9nZ2VyLmluZm8oInN0YXJ0IGludGVyZmFjZXMgJXMgJXMgJXMiLCBhcGksIGZvcm0sIGFkbWluKQoKICAgICMgc3RhcnQgRmxhc2sKICAgIGFwcC5ydW4oCiAgICAgICAgaG9zdD1jb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5IVFRQX0hPU1QpLAogICAgICAgIHBvcnQ9Y29uZmlnLmdldF9pbnQoQ29uZmlnUGFyYW1ldGVyLkhUVFBfUE9SVCksCiAgICAgICAgZGVidWc9RmFsc2UsCiAgICAgICAgdXNlX3JlbG9hZGVyPUZhbHNlLAogICAgKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJjb25maWciLCBoZWxwPSJjb25maWcgcGF0aCBuYW1lIikKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAgICBzdGFjb3N5c19zZXJ2ZXIoYXJncy5jb25maWcpCgAAAAAAAAAA5QoAAAAAAAAAAAAAAAAAAAAAAADlCgAAAAAAAAAAAAAAAAAAAAAAAOUKAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA8IAAAAAAAADwgAAAAAAAAAAAAAAADwvw" + ] + ] + }, + { + "file": "Makefile", + "settings": + { + "buffer_size": 253, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 3, + 1, + "insert", + { + "characters": "poetry" + }, + "BgAAACgAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAAqAAAAAAAAAAAAAAAqAAAAAAAAACsAAAAAAAAAAAAAACsAAAAAAAAALAAAAAAAAAAAAAAALAAAAAAAAAAtAAAAAAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAKAAAAAAAAAAoAAAAAAAAAAAAAAAAAPC/" + ], + [ + 4, + 1, + "insert", + { + "characters": " run" + }, + "BAAAAC4AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAAPC/" + ], + [ + 5, + 1, + "insert", + { + "characters": " " + }, + "AQAAADIAAAAAAAAAMwAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMgAAAAAAAAAyAAAAAAAAAAAAAAAAAPC/" + ], + [ + 8, + 1, + "insert", + { + "characters": "potr" + }, + "BAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAGYAAAAAAAAAZwAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAEJA" + ], + [ + 9, + 2, + "left_delete", + null, + "AgAAAGYAAAAAAAAAZgAAAAAAAAABAAAAcmUAAAAAAAAAZQAAAAAAAAABAAAAdA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwAAAAAAAABnAAAAAAAAAAAAAAAAAPC/" + ], + [ + 10, + 1, + "insert", + { + "characters": "etry" + }, + "BAAAAGUAAAAAAAAAZgAAAAAAAAAAAAAAZgAAAAAAAABnAAAAAAAAAAAAAABnAAAAAAAAAGgAAAAAAAAAAAAAAGgAAAAAAAAAaQAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZQAAAAAAAABlAAAAAAAAAAAAAAAAAPC/" + ], + [ + 11, + 1, + "insert", + { + "characters": " run" + }, + "BAAAAGkAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" + ], + [ + 12, + 1, + "insert", + { + "characters": " " + }, + "AQAAAG0AAAAAAAAAbgAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbQAAAAAAAABtAAAAAAAAAAAAAAAAAPC/" + ], + [ + 15, + 1, + "insert", + { + "characters": "poetry" + }, + "BgAAAIYAAAAAAAAAhwAAAAAAAAAAAAAAhwAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIkAAAAAAAAAAAAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" + ], + [ + 16, + 1, + "insert", + { + "characters": " run" + }, + "BAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAAjQAAAAAAAACOAAAAAAAAAAAAAACOAAAAAAAAAI8AAAAAAAAAAAAAAI8AAAAAAAAAkAAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjAAAAAAAAACMAAAAAAAAAAAAAAAAAPC/" + ], + [ + 17, + 1, + "insert", + { + "characters": " " + }, + "AQAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAPC/" + ], + [ + 23, + 1, + "paste", + null, + "AQAAAKUAAAAAAAAAsAAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApQAAAAAAAAClAAAAAAAAAAAAAAAAAPC/" + ], + [ + 26, + 1, + "paste", + null, + "AQAAAOAAAAAAAAAA6wAAAAAAAAAAAAAA", + "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" + ], + [ + 1, + 1, + "revert", + null, + "BgAAAAAAAAAAAAAAAAAAAAAAAAD9AAAAYWxsOiBibGFjayB0ZXN0IHR5cGVoaW50IGxpbnQgCgpibGFjazoKCXBvZXRyeSBydW4gaXNvcnQgLS1tdWx0aS1saW5lIDMgLS1wcm9maWxlIGJsYWNrIHN0YWNvc3lzLwoJcG9ldHJ5IHJ1biBibGFjayBzdGFjb3N5cy8KCnRlc3Q6Cglwb2V0cnkgcnVuIHB5dGVzdAoKdHlwZWhpbnQ6IAoJcG9ldHJ5IHJ1biBteXB5IC0taWdub3JlLW1pc3NpbmctaW1wb3J0cyBzdGFjb3N5cy8KCmxpbnQ6Cglwb2V0cnkgcnVuIHB5bGludCBzdGFjb3N5cy8KCgAAAAAAAAAA/QAAAAAAAAAAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAA", + "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD7AAAAAAAAAPsAAAAAAAAAAAAAAAAA8L8" + ] + ] } ], "build_system": "", @@ -366,13 +3135,53 @@ "selected_items": [ [ - "diag", - "LSP: Goto Diagnostic in Project" + "brea", + "Python Breakpoints: Clear All" + ], + [ + "comm", + "Toggle Comment" + ], + [ + "move", + "File: Move…" + ], + [ + "break", + "Python Breakpoints: Clear All" + ], + [ + "remove", + "Package Control: Remove Package" + ], + [ + "make", + "Build With: Make" + ], + [ + "python", + "Python Breakpoints: Toggle" + ], + [ + "insta", + "Package Control: Install Package" + ], + [ + "install", + "Package Control: Install Package" ], [ "lsp", "LSP: Toggle Diagnostics Panel" ], + [ + "diag", + "LSP: Toggle Diagnostics Panel" + ], + [ + "docstr", + "AutoDocstring: Current" + ], [ "Package Control: ", "Package Control: Install Package" @@ -409,10 +3218,6 @@ "instal", "Package Control: Install Package" ], - [ - "install", - "Package Control: Install Package" - ], [ "package re", "Package Control: Remove Package" @@ -421,14 +3226,6 @@ "paka", "Package Control: Remove Package" ], - [ - "remove", - "Package Control: Remove Package" - ], - [ - "insta", - "Package Control: Install Package" - ], [ "inst", "Package Control: Install Package" @@ -459,25 +3256,50 @@ "expanded_folders": [ "/home/yannic/work/stacosys", + "/home/yannic/work/stacosys/.github", + "/home/yannic/work/stacosys/.github/workflows", + "/home/yannic/work/stacosys/docker", "/home/yannic/work/stacosys/stacosys", - "/home/yannic/work/stacosys/stacosys/conf", - "/home/yannic/work/stacosys/stacosys/core", "/home/yannic/work/stacosys/stacosys/db", "/home/yannic/work/stacosys/stacosys/interface", "/home/yannic/work/stacosys/stacosys/interface/web", "/home/yannic/work/stacosys/stacosys/model", + "/home/yannic/work/stacosys/stacosys/service", "/home/yannic/work/stacosys/tests" ], "file_history": [ - "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/sys.pyi", - "/home/yannic/work/stacosys/stacosys/conf/config.py", + "/home/yannic/work/blog/README.md", + "/home/yannic/work/blog/Dockerfile", "/usr/lib64/python3.11/logging/__init__.py", - "/home/yannic/work/stacosys/stacosys.sublime-project", - "/home/yannic/work/stacosys/flake8.ini", + "/home/yannic/work/stacosys/stacosys/core/__init__.py", + "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", + "/home/yannic/work/stacosys/stacosys/service/mail.py", + "/home/yannic/work/stacosys/stacosys/core/configuration.py", + "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/builtins.pyi", + "/home/yannic/work/stacosys/.pylintrc", + "/home/yannic/work/stacosys/stacosys/interface/form.py", + "/home/yannic/work/stacosys/tests/test_config.py", + "/home/yannic/work/stacosys/tests/test_form.py", + "/home/yannic/work/stacosys/tests/test_api.py", + "/home/yannic/work/stacosys/stacosys/core/mailer.py", + "/home/yannic/work/stacosys/stacosys/conf/config.py", + "/home/yannic/work/stacosys/stacosys/core/rss.py", + "/home/yannic/work/stacosys/stacosys/db/dao.py", + "/home/yannic/work/stacosys/stacosys/run.py", + "/home/yannic/work/stacosys/stacosys/db/database.py", "/home/yannic/work/stacosys/Makefile", - "/home/yannic/work/stacosys/stacosys/__init__.py", - "/home/yannic/work/stacosys/stacosys/core/rss.py" + "/home/yannic/work/stacosys/run.sh", + "/home/yannic/work/stacosys/stacosys/interface/web/admin.py", + "/home/yannic/work/stacosys/stacosys/interface/__init__.py", + "/home/yannic/work/stacosys/stacosys/interface/api.py", + "/home/yannic/work/stacosys/stacosys.sublime-project", + "/home/yannic/work/stacosys/stacosys/model/comment.py", + "/home/yannic/work/stacosys/pylintrc", + "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/flask/app.py", + "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/sys.pyi", + "/home/yannic/work/stacosys/flake8.ini", + "/home/yannic/work/stacosys/stacosys/__init__.py" ], "find": { @@ -485,9 +3307,10 @@ }, "find_in_files": { - "height": 0.0, + "height": 104.0, "where_history": [ + "" ] }, "find_state": @@ -495,6 +3318,10 @@ "case_sensitive": false, "find_history": [ + "config", + "SITE_TOKE", + "app.conf", + "disable", "background" ], "highlight": true, @@ -519,49 +3346,32 @@ [ { "buffer": 0, - "file": "run.sh", + "file": "stacosys/interface/web/admin.py", "semi_transient": false, "settings": { - "buffer_size": 40, + "buffer_size": 2472, "regions": { + "bp-718b6604": + { + "flags": 16, + "icon": "Packages/Theme - Default/common/circle.png", + "regions": + [ + [ + 826, + 826 + ] + ], + "scope": "invalid" + } }, "selection": [ [ - 27, - 27 - ] - ], - "settings": - { - "lsp_uri": "file:///home/yannic/work/stacosys/run.sh", - "syntax": "Packages/ShellScript/Bash.sublime-syntax" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 7, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 1, - "file": "stacosys/run.py", - "semi_transient": false, - "settings": - { - "buffer_size": 3298, - "regions": - { - }, - "selection": - [ - [ - 1918, - 1918 + 1207, + 1207 ] ], "settings": @@ -583,46 +3393,14 @@ } ], "lsp_active": true, - "lsp_hover_provider_count": 10, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/run.py", + "lsp_hover_provider_count": 8, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/interface/web/admin.py", "show_definitions": false, "syntax": "Packages/Python/Python.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 964.0, - "zoom_level": 1.0 - }, - "stack_index": 6, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 2, - "file": "Makefile", - "semi_transient": false, - "settings": - { - "buffer_size": 533, - "regions": - { - }, - "selection": - [ - [ - 334, - 334 - ] - ], - "settings": - { - "lsp_uri": "file:///home/yannic/work/stacosys/Makefile", - "syntax": "Packages/Makefile/Makefile.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": false - }, - "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, @@ -631,21 +3409,20 @@ "type": "text" }, { - "buffer": 3, - "file": "stacosys/core/mailer.py", - "selected": true, + "buffer": 1, + "file": "tests/test_config.py", "semi_transient": false, "settings": { - "buffer_size": 1087, + "buffer_size": 1382, "regions": { }, "selection": [ [ - 1086, - 1086 + 1222, + 1222 ] ], "settings": @@ -667,97 +3444,14 @@ } ], "lsp_active": true, - "lsp_hover_provider_count": 10, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/core/mailer.py", + "lsp_hover_provider_count": 4, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_config.py", "show_definitions": false, "syntax": "Packages/Python/Python.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 399.0, - "zoom_level": 1.0 - }, - "stack_index": 0, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 4, - "file": "stacosys/db/dao.py", - "semi_transient": true, - "settings": - { - "buffer_size": 1633, - "regions": - { - }, - "selection": - [ - [ - 524, - 524 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/db/dao.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 3, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 5, - "file": "stacosys.sublime-project", - "semi_transient": false, - "settings": - { - "buffer_size": 381, - "regions": - { - }, - "selection": - [ - [ - 364, - 364 - ] - ], - "settings": - { - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys.sublime-project", - "syntax": "Packages/JSON/JSON.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, @@ -766,63 +3460,43 @@ "type": "text" }, { - "buffer": 6, - "file": "stacosys/model/comment.py", - "semi_transient": false, + "buffer": 2, + "file": "Dockerfile", + "selected": true, + "semi_transient": true, "settings": { - "buffer_size": 471, + "buffer_size": 716, "regions": { }, "selection": [ [ - 150, - 150 + 0, + 0 ] ], "settings": { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 6, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/model/comment.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true + "lsp_uri": "file:///home/yannic/work/stacosys/Dockerfile", + "syntax": "Packages/Text/Plain text.tmLanguage" }, "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 4, + "stack_index": 0, "stack_multiselect": false, "type": "text" }, { - "buffer": 7, - "file": "stacosys/conf/config.py", + "buffer": 3, + "file": "tests/test_api.py", "semi_transient": false, "settings": { - "buffer_size": 2481, + "buffer_size": 1634, "regions": { }, @@ -852,20 +3526,203 @@ } ], "lsp_active": true, - "lsp_hover_provider_count": 6, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/conf/config.py", + "lsp_hover_provider_count": 4, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_api.py", "show_definitions": false, "syntax": "Packages/Python/Python.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 1539.0, + "translation.y": 114.0, + "zoom_level": 1.0 + }, + "stack_index": 3, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 4, + "file": "stacosys/service/__init__.py", + "semi_transient": false, + "settings": + { + "buffer_size": 180, + "regions": + { + }, + "selection": + [ + [ + 149, + 149 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 5, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/__init__.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax" + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 4, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 5, + "file": "stacosys/interface/form.py", + "semi_transient": false, + "settings": + { + "buffer_size": 2659, + "regions": + { + }, + "selection": + [ + [ + 2356, + 2356 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 6, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/interface/form.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 1311.0, "zoom_level": 1.0 }, "stack_index": 5, "stack_multiselect": false, "type": "text" + }, + { + "buffer": 6, + "file": "stacosys/run.py", + "semi_transient": false, + "settings": + { + "buffer_size": 2789, + "regions": + { + }, + "selection": + [ + [ + 2063, + 2063 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 6, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/run.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 6, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 7, + "file": "Makefile", + "semi_transient": false, + "settings": + { + "buffer_size": 253, + "regions": + { + }, + "selection": + [ + [ + 251, + 251 + ] + ], + "settings": + { + "lsp_uri": "file:///home/yannic/work/stacosys/Makefile", + "syntax": "Packages/Makefile/Makefile.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": false + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 7, + "stack_multiselect": false, + "type": "text" } ] } @@ -876,7 +3733,7 @@ }, "input": { - "height": 0.0 + "height": 40.0 }, "layout": { @@ -909,6 +3766,10 @@ { "height": 261.0 }, + "output.exec": + { + "height": 132.0 + }, "output.find_results": { "height": 0.0 @@ -943,12 +3804,12 @@ }, "select_project": { - "height": 0.0, + "height": 500.0, "last_filter": "", "selected_items": [ ], - "width": 0.0 + "width": 380.0 }, "select_symbol": { @@ -967,7 +3828,7 @@ "show_open_files": false, "show_tabs": true, "side_bar_visible": true, - "side_bar_width": 311.0, + "side_bar_width": 302.0, "status_bar_visible": true, "template_settings": { diff --git a/stacosys/core/rss.py b/stacosys/core/rss.py deleted file mode 100644 index 42f9b8d..0000000 --- a/stacosys/core/rss.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/python -# -*- coding: UTF-8 -*- - -from datetime import datetime - -import markdown -import PyRSS2Gen - -from stacosys.model.comment import Comment - - -class Rss: - def __init__( - self, - lang, - rss_file, - rss_proto, - site_name, - site_url, - ): - self._lang = lang - self._rss_file = rss_file - self._rss_proto = rss_proto - self._site_name = site_name - self._site_url = site_url - - def generate(self): - md = markdown.Markdown() - - items = [] - for row in ( - Comment.select() - .where(Comment.published) - .order_by(-Comment.published) - .limit(10) - ): - item_link = "%s://%s%s" % ( - self._rss_proto, - self._site_url, - row.url, - ) - items.append( - PyRSS2Gen.RSSItem( - title="%s - %s://%s%s" - % ( - self._rss_proto, - row.author_name, - self._site_url, - row.url, - ), - link=item_link, - description=md.convert(row.content), - guid=PyRSS2Gen.Guid("%s/%d" % (item_link, row.id)), - pubDate=row.published, - ) - ) - - rss_title = 'Commentaires du site "%s"' % self._site_name - rss = PyRSS2Gen.RSS2( - title=rss_title, - link="%s://%s" % (self._rss_proto, self._site_url), - description=rss_title, - lastBuildDate=datetime.now(), - items=items, - ) - rss.write_xml(open(self._rss_file, "w"), encoding="utf-8") diff --git a/stacosys/interface/form.py b/stacosys/interface/form.py index 04b52b3..52b5bb8 100644 --- a/stacosys/interface/form.py +++ b/stacosys/interface/form.py @@ -7,6 +7,8 @@ from flask import abort, redirect, request from stacosys.db import dao from stacosys.interface import app +from stacosys.service import config, mailer +from stacosys.service.configuration import ConfigParameter logger = logging.getLogger(__name__) @@ -46,7 +48,7 @@ def new_form_comment(): # send notification e-mail asynchronously submit_new_comment(comment) - return redirect(app.config.get("SITE_REDIRECT"), code=302) + return redirect(config.get(ConfigParameter.SITE_REDIRECT), code=302) def check_form_data(posted_comment): @@ -57,7 +59,7 @@ def check_form_data(posted_comment): @background.task def submit_new_comment(comment): - site_url = app.config.get("SITE_URL") + site_url = config.get(ConfigParameter.SITE_URL) comment_list = ( f"Web admin interface: {site_url}/web/admin", "", @@ -72,8 +74,9 @@ def submit_new_comment(comment): email_body = "\n".join(comment_list) # send email to notify admin - subject = "STACOSYS " + app.config.get("SITE_NAME") - if app.config.get("MAILER").send(subject, email_body): + site_name = config.get(ConfigParameter.SITE_NAME) + subject = f"STACOSYS {site_name}" + if mailer.send(subject, email_body): logger.debug("new comment processed") # save notification datetime diff --git a/stacosys/interface/web/admin.py b/stacosys/interface/web/admin.py index 26d172f..8d81e3c 100644 --- a/stacosys/interface/web/admin.py +++ b/stacosys/interface/web/admin.py @@ -8,6 +8,8 @@ from flask import flash, redirect, render_template, request, session from stacosys.db import dao from stacosys.interface import app +from stacosys.service import config, rss +from stacosys.service.configuration import ConfigParameter logger = logging.getLogger(__name__) @@ -23,8 +25,8 @@ def index(): def is_login_ok(username, password): hashed = hashlib.sha256(password.encode()).hexdigest().upper() return ( - app.config.get("WEB_USERNAME") == username - and app.config.get("WEB_PASSWORD") == hashed + config.get(ConfigParameter.WEB_USERNAME) == username + and config.get(ConfigParameter.WEB_PASSWORD) == hashed ) @@ -40,7 +42,7 @@ def login(): flash("Identifiant ou mot de passe incorrect") return redirect("/web/login") # GET - return render_template("login_" + app.config.get("LANG", "fr") + ".html") + return render_template("login_" + config.get(ConfigParameter.LANG) + ".html") @app.route("/web/logout", methods=["GET"]) @@ -51,16 +53,19 @@ def logout(): @app.route("/web/admin", methods=["GET"]) def admin_homepage(): - if not ("user" in session and session["user"] == app.config.get("WEB_USERNAME")): + if not ( + "user" in session + and session["user"] == config.get(ConfigParameter.WEB_USERNAME) + ): # TODO localization flash("Vous avez été déconnecté.") return redirect("/web/login") comments = dao.find_not_published_comments() return render_template( - "admin_" + app.config.get("LANG", "fr") + ".html", + "admin_" + config.get(ConfigParameter.LANG) + ".html", comments=comments, - baseurl=app.config.get("SITE_URL"), + baseurl=config.get(ConfigParameter.SITE_URL), ) @@ -72,7 +77,7 @@ def admin_action(): flash("Commentaire introuvable") elif request.form.get("action") == "APPROVE": dao.publish_comment(comment) - app.config.get("RSS").generate() + rss.generate() # TODO localization flash("Commentaire publié") else: diff --git a/stacosys/run.py b/stacosys/run.py index 197215b..5109299 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -6,12 +6,11 @@ import logging import os import sys -from stacosys.conf.config import Config, ConfigParameter -from stacosys.core.mailer import Mailer -from stacosys.core.rss import Rss from stacosys.db import database from stacosys.interface import api, app, form from stacosys.interface.web import admin +from stacosys.service import config, mailer, rss +from stacosys.service.configuration import ConfigParameter # configure logging @@ -37,16 +36,16 @@ def stacosys_server(config_pathname): logger.error("Configuration file '%s' not found.", config_pathname) sys.exit(1) - # load config - conf = Config.load(config_pathname) - is_config_ok, erreur_config = conf.check() + # load and check config + config.load(config_pathname) + is_config_ok, erreur_config = config.check() if not is_config_ok: logger.error("Configuration incorrecte '%s'", erreur_config) sys.exit(1) - logger.info(conf) + logger.info(config) # check database file exists (prevents from creating a fresh db) - db_pathname = conf.get(ConfigParameter.DB_SQLITE_FILE) + db_pathname = config.get(ConfigParameter.DB_SQLITE_FILE) if not db_pathname or not os.path.isfile(db_pathname): logger.error("Database file '%s' not found.", db_pathname) sys.exit(1) @@ -57,39 +56,29 @@ def stacosys_server(config_pathname): logger.info("Start Stacosys application") # generate RSS - rss = Rss( - conf.get(ConfigParameter.LANG), - conf.get(ConfigParameter.RSS_FILE), - conf.get(ConfigParameter.RSS_PROTO), - conf.get(ConfigParameter.SITE_NAME), - conf.get(ConfigParameter.SITE_URL), + rss.configure( + config.get(ConfigParameter.RSS_FILE), + config.get(ConfigParameter.SITE_PROTO), + config.get(ConfigParameter.SITE_NAME), + config.get(ConfigParameter.SITE_URL), ) rss.generate() # configure mailer - mailer = Mailer( - conf.get(ConfigParameter.SMTP_HOST), - conf.get_int(ConfigParameter.SMTP_PORT), - conf.get(ConfigParameter.SMTP_LOGIN), - conf.get(ConfigParameter.SMTP_PASSWORD), - conf.get(ConfigParameter.SITE_ADMIN_EMAIL), + mailer.configure_smtp( + config.get(ConfigParameter.SMTP_HOST), + config.get_int(ConfigParameter.SMTP_PORT), + config.get(ConfigParameter.SMTP_LOGIN), + config.get(ConfigParameter.SMTP_PASSWORD), ) + mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) - # inject config parameters into flask - app.config.update(LANG=conf.get(ConfigParameter.LANG)) - app.config.update(SITE_NAME=conf.get(ConfigParameter.SITE_NAME)) - app.config.update(SITE_URL=conf.get(ConfigParameter.SITE_URL)) - app.config.update(SITE_REDIRECT=conf.get(ConfigParameter.SITE_REDIRECT)) - app.config.update(WEB_USERNAME=conf.get(ConfigParameter.WEB_USERNAME)) - app.config.update(WEB_PASSWORD=conf.get(ConfigParameter.WEB_PASSWORD)) - app.config.update(MAILER=mailer) - app.config.update(RSS=rss) logger.info("start interfaces %s %s %s", api, form, admin) # start Flask app.run( - host=conf.get(ConfigParameter.HTTP_HOST), - port=conf.get_int(ConfigParameter.HTTP_PORT), + host=config.get(ConfigParameter.HTTP_HOST), + port=config.get_int(ConfigParameter.HTTP_PORT), debug=False, use_reloader=False, ) diff --git a/stacosys/service/__init__.py b/stacosys/service/__init__.py new file mode 100644 index 0000000..6fcc80a --- /dev/null +++ b/stacosys/service/__init__.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from .configuration import Config +from .mail import Mailer +from .rssfeed import Rss + +config = Config() +mailer = Mailer() +rss = Rss() diff --git a/stacosys/conf/config.py b/stacosys/service/configuration.py similarity index 76% rename from stacosys/conf/config.py rename to stacosys/service/configuration.py index 78adea8..85b3db8 100644 --- a/stacosys/conf/config.py +++ b/stacosys/service/configuration.py @@ -12,7 +12,6 @@ class ConfigParameter(Enum): HTTP_HOST = "http.host" HTTP_PORT = "http.port" - RSS_PROTO = "rss.proto" RSS_FILE = "rss.file" SMTP_HOST = "smtp.host" @@ -20,6 +19,7 @@ class ConfigParameter(Enum): SMTP_LOGIN = "smtp.login" SMTP_PASSWORD = "smtp.password" + SITE_PROTO = "site.proto" SITE_NAME = "site.name" SITE_URL = "site.url" SITE_ADMIN_EMAIL = "site.admin_email" @@ -30,14 +30,16 @@ class ConfigParameter(Enum): class Config: - def __init__(self): - self._cfg = configparser.ConfigParser() - @classmethod - def load(cls, config_pathname): - config = cls() - config._cfg.read(config_pathname) - return config + _cfg = configparser.ConfigParser() + + # def __new__(cls): + # if not hasattr(cls, "instance"): + # cls.instance = super(Config, cls).__new__(cls) + # return cls.instance + + def load(self, config_pathname): + self._cfg.read(config_pathname) def _split_key(self, key: ConfigParameter): section, param = str(key.value).split(".") @@ -50,12 +52,12 @@ class Config: section, param = self._split_key(key) return self._cfg.has_option(section, param) - def get(self, key: ConfigParameter): + def get(self, key: ConfigParameter) -> str: section, param = self._split_key(key) return ( self._cfg.get(section, param) if self._cfg.has_option(section, param) - else None + else "" ) def put(self, key: ConfigParameter, value): @@ -64,11 +66,11 @@ class Config: self._cfg.add_section(section) self._cfg.set(section, param, str(value)) - def get_int(self, key: ConfigParameter): + def get_int(self, key: ConfigParameter) -> int: value = self.get(key) return int(value) if value else 0 - def get_bool(self, key: ConfigParameter): + def get_bool(self, key: ConfigParameter) -> bool: value = self.get(key) assert value in ( "yes", @@ -85,8 +87,8 @@ class Config: return (True, None) def __repr__(self): - d = dict() + dict_repr = {} for section in self._cfg.sections(): for option in self._cfg.options(section): - d[".".join([section, option])] = self._cfg.get(section, option) - return str(d) + dict_repr[".".join([section, option])] = self._cfg.get(section, option) + return str(dict_repr) diff --git a/stacosys/core/mailer.py b/stacosys/service/mail.py similarity index 71% rename from stacosys/core/mailer.py rename to stacosys/service/mail.py index 43ec706..6d756bb 100644 --- a/stacosys/core/mailer.py +++ b/stacosys/service/mail.py @@ -10,21 +10,29 @@ logger = logging.getLogger(__name__) class Mailer: - def __init__( + def __init__(self) -> None: + self._smtp_host: str = "" + self._smtp_port: int = 0 + self._smtp_login: str = "" + self._smtp_password: str = "" + self._site_admin_email: str = "" + + def configure_smtp( self, smtp_host, smtp_port, smtp_login, smtp_password, - site_admin_email, - ): + ) -> None: self._smtp_host = smtp_host self._smtp_port = smtp_port self._smtp_login = smtp_login self._smtp_password = smtp_password + + def configure_destination(self, site_admin_email) -> None: self._site_admin_email = site_admin_email - def send(self, subject, message): + def send(self, subject, message) -> bool: sender = self._smtp_login receivers = [self._site_admin_email] @@ -34,7 +42,7 @@ class Mailer: msg["From"] = sender context = ssl.create_default_context() - # TODO catch SMTP failure + # TODO catch SMTP failure with smtplib.SMTP_SSL( self._smtp_host, self._smtp_port, context=context ) as server: diff --git a/stacosys/service/rssfeed.py b/stacosys/service/rssfeed.py new file mode 100644 index 0000000..a5f5c12 --- /dev/null +++ b/stacosys/service/rssfeed.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +from datetime import datetime + +import markdown +import PyRSS2Gen + +from stacosys.model.comment import Comment + + +class Rss: + def __init__(self) -> None: + self._rss_file: str = "" + self._site_proto: str = "" + self._site_name: str = "" + self._site_url: str = "" + + def configure( + self, + rss_file, + site_proto, + site_name, + site_url, + ) -> None: + self._rss_file = rss_file + self._site_proto = site_proto + self._site_name = site_name + self._site_url = site_url + + def generate(self) -> None: + markdownizer = markdown.Markdown() + + items = [] + for row in ( + Comment.select() + .where(Comment.published) + .order_by(-Comment.published) + .limit(10) + ): + item_link = f"{self._site_proto}://{self._site_url}{row.url}" + items.append( + PyRSS2Gen.RSSItem( + title=f"{self._site_proto}://{self._site_url}{row.url} - {row.author_name}", + link=item_link, + description=markdownizer.convert(row.content), + guid=PyRSS2Gen.Guid(f"{item_link}{row.id}"), + pubDate=row.published, + ) + ) + + rss_title = f"Commentaires du site {self._site_name}" + rss = PyRSS2Gen.RSS2( + title=rss_title, + link=f"{self._site_proto}://{self._site_url}", + description=rss_title, + lastBuildDate=datetime.now(), + items=items, + ) + # TODO technical debt: replace pyRss2Gen + # TODO validate feed (https://validator.w3.org/feed/check.cgi) + # pylint: disable=consider-using-with + rss.write_xml(open(self._rss_file, "w", encoding="utf-8"), encoding="utf-8") diff --git a/tests/test_api.py b/tests/test_api.py index 6cb2196..8efd052 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -25,7 +25,6 @@ def client(): logger = logging.getLogger(__name__) database.setup(":memory:") init_test_db() - app.config.update(SITE_TOKEN="ETC") logger.info(f"start interface {api}") return app.test_client() diff --git a/tests/test_config.py b/tests/test_config.py index e098965..3aaaaff 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -3,7 +3,8 @@ import unittest -from stacosys.conf.config import Config, ConfigParameter +from stacosys.service import config +from stacosys.service.configuration import ConfigParameter EXPECTED_DB_SQLITE_FILE = "db.sqlite" EXPECTED_HTTP_PORT = 8080 @@ -11,31 +12,30 @@ EXPECTED_LANG = "fr" class ConfigTestCase(unittest.TestCase): - def setUp(self): - self.conf = Config() - self.conf.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) - self.conf.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) + def setUp(self): + config.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) + config.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) def test_exists(self): - self.assertTrue(self.conf.exists(ConfigParameter.DB_SQLITE_FILE)) + self.assertTrue(config.exists(ConfigParameter.DB_SQLITE_FILE)) def test_get(self): self.assertEqual( - self.conf.get(ConfigParameter.DB_SQLITE_FILE), EXPECTED_DB_SQLITE_FILE + config.get(ConfigParameter.DB_SQLITE_FILE), EXPECTED_DB_SQLITE_FILE ) - self.assertIsNone(self.conf.get(ConfigParameter.HTTP_HOST)) + self.assertEqual(config.get(ConfigParameter.HTTP_HOST), "") self.assertEqual( - self.conf.get(ConfigParameter.HTTP_PORT), str(EXPECTED_HTTP_PORT) + config.get(ConfigParameter.HTTP_PORT), str(EXPECTED_HTTP_PORT) ) - self.assertEqual(self.conf.get_int(ConfigParameter.HTTP_PORT), 8080) + self.assertEqual(config.get_int(ConfigParameter.HTTP_PORT), 8080) try: - self.conf.get_bool(ConfigParameter.DB_SQLITE_FILE) + config.get_bool(ConfigParameter.DB_SQLITE_FILE) self.assertTrue(False) except AssertionError: pass def test_put(self): - self.assertFalse(self.conf.exists(ConfigParameter.LANG)) - self.conf.put(ConfigParameter.LANG, EXPECTED_LANG) - self.assertTrue(self.conf.exists(ConfigParameter.LANG)) - self.assertEqual(self.conf.get(ConfigParameter.LANG), EXPECTED_LANG) + self.assertFalse(config.exists(ConfigParameter.LANG)) + config.put(ConfigParameter.LANG, EXPECTED_LANG) + self.assertTrue(config.exists(ConfigParameter.LANG)) + self.assertEqual(config.get(ConfigParameter.LANG), EXPECTED_LANG) diff --git a/tests/test_form.py b/tests/test_form.py index 55ebda8..dedef3a 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -13,8 +13,7 @@ from stacosys.interface import form @pytest.fixture def client(): logger = logging.getLogger(__name__) - database.setup(":memory:") - app.config.update(SITE_REDIRECT="/redirect") + database.setup(":memory:") logger.info(f"start interface {form}") return app.test_client() From a62cb8eff1f688272b418aace52bc2e36f408957 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 27 Nov 2022 20:43:06 +0100 Subject: [PATCH 076/182] replace unittest by pytest --- tests/test_config.py | 45 +++++++++------------ tests/test_db.py | 96 ++++++++++++++++++++++---------------------- 2 files changed, 68 insertions(+), 73 deletions(-) diff --git a/tests/test_config.py b/tests/test_config.py index 3aaaaff..d0d8e75 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- -import unittest +import pytest from stacosys.service import config from stacosys.service.configuration import ConfigParameter @@ -11,31 +11,24 @@ EXPECTED_HTTP_PORT = 8080 EXPECTED_LANG = "fr" -class ConfigTestCase(unittest.TestCase): - def setUp(self): - config.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) - config.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) +@pytest.fixture +def init_config(): + config.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) + config.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) - def test_exists(self): - self.assertTrue(config.exists(ConfigParameter.DB_SQLITE_FILE)) +def test_exists(init_config): + assert config.exists(ConfigParameter.DB_SQLITE_FILE) - def test_get(self): - self.assertEqual( - config.get(ConfigParameter.DB_SQLITE_FILE), EXPECTED_DB_SQLITE_FILE - ) - self.assertEqual(config.get(ConfigParameter.HTTP_HOST), "") - self.assertEqual( - config.get(ConfigParameter.HTTP_PORT), str(EXPECTED_HTTP_PORT) - ) - self.assertEqual(config.get_int(ConfigParameter.HTTP_PORT), 8080) - try: - config.get_bool(ConfigParameter.DB_SQLITE_FILE) - self.assertTrue(False) - except AssertionError: - pass +def test_get(init_config): + assert config.get(ConfigParameter.DB_SQLITE_FILE) == EXPECTED_DB_SQLITE_FILE + assert config.get(ConfigParameter.HTTP_HOST) == "" + assert config.get(ConfigParameter.HTTP_PORT) == str(EXPECTED_HTTP_PORT) + assert config.get_int(ConfigParameter.HTTP_PORT) == EXPECTED_HTTP_PORT + with pytest.raises(AssertionError): + config.get_bool(ConfigParameter.DB_SQLITE_FILE) - def test_put(self): - self.assertFalse(config.exists(ConfigParameter.LANG)) - config.put(ConfigParameter.LANG, EXPECTED_LANG) - self.assertTrue(config.exists(ConfigParameter.LANG)) - self.assertEqual(config.get(ConfigParameter.LANG), EXPECTED_LANG) +def test_put(init_config): + assert not config.exists(ConfigParameter.LANG) + config.put(ConfigParameter.LANG, EXPECTED_LANG) + assert config.exists(ConfigParameter.LANG) + assert config.get(ConfigParameter.LANG) == EXPECTED_LANG diff --git a/tests/test_db.py b/tests/test_db.py index 99eeb7e..1f390c3 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -1,53 +1,55 @@ -import unittest +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +import pytest from stacosys.db import dao from stacosys.db import database - -class DbTestCase(unittest.TestCase): - def setUp(self): - database.setup(":memory:") - - def test_dao_published(self): - - # test count published - self.assertEqual(0, dao.count_published_comments("")) - c1 = dao.create_comment("/post1", "Yax", "", "", "Comment 1") - self.assertEqual(0, dao.count_published_comments("")) - dao.publish_comment(c1) - self.assertEqual(1, dao.count_published_comments("")) - c2 = dao.create_comment("/post2", "Yax", "", "", "Comment 2") - dao.publish_comment(c2) - self.assertEqual(2, dao.count_published_comments("")) - c3 = dao.create_comment("/post2", "Yax", "", "", "Comment 3") - dao.publish_comment(c3) - self.assertEqual(1, dao.count_published_comments("/post1")) - self.assertEqual(2, dao.count_published_comments("/post2")) - - # test find published - self.assertEqual(0, len(dao.find_published_comments_by_url("/"))) - self.assertEqual(1, len(dao.find_published_comments_by_url("/post1"))) - self.assertEqual(2, len(dao.find_published_comments_by_url("/post2"))) - - dao.delete_comment(c1) - self.assertEqual(0, len(dao.find_published_comments_by_url("/post1"))) - - def test_dao_notified(self): - - # test count notified - self.assertEqual(0, len(dao.find_not_notified_comments())) - c1 = dao.create_comment("/post1", "Yax", "", "", "Comment 1") - self.assertEqual(1, len(dao.find_not_notified_comments())) - c2 = dao.create_comment("/post2", "Yax", "", "", "Comment 2") - self.assertEqual(2, len(dao.find_not_notified_comments())) - dao.notify_comment(c1) - dao.notify_comment(c2) - self.assertEqual(0, len(dao.find_not_notified_comments())) - c3 = dao.create_comment("/post2", "Yax", "", "", "Comment 3") - self.assertEqual(1, len(dao.find_not_notified_comments())) - dao.notify_comment(c3) - self.assertEqual(0, len(dao.find_not_notified_comments())) +@pytest.fixture +def setup_db(): + database.setup(":memory:") + + + +def test_dao_published(setup_db): + + # test count published + assert 0 == dao.count_published_comments("") + c1 = dao.create_comment("/post1", "Yax", "", "", "Comment 1") + assert 0 == dao.count_published_comments("") + dao.publish_comment(c1) + assert 1 == dao.count_published_comments("") + c2 = dao.create_comment("/post2", "Yax", "", "", "Comment 2") + dao.publish_comment(c2) + assert 2 == dao.count_published_comments("") + c3 = dao.create_comment("/post2", "Yax", "", "", "Comment 3") + dao.publish_comment(c3) + assert 1 == dao.count_published_comments("/post1") + assert 2 == dao.count_published_comments("/post2") + + # test find published + assert 0 == len(dao.find_published_comments_by_url("/")) + assert 1 == len(dao.find_published_comments_by_url("/post1")) + assert 2 == len(dao.find_published_comments_by_url("/post2")) + + dao.delete_comment(c1) + assert 0 == len(dao.find_published_comments_by_url("/post1")) + +def test_dao_notified(setup_db): + + # test count notified + assert 0 == len(dao.find_not_notified_comments()) + c1 = dao.create_comment("/post1", "Yax", "", "", "Comment 1") + assert 1 == len(dao.find_not_notified_comments()) + c2 = dao.create_comment("/post2", "Yax", "", "", "Comment 2") + assert 2 == len(dao.find_not_notified_comments()) + dao.notify_comment(c1) + dao.notify_comment(c2) + assert 0 == len(dao.find_not_notified_comments()) + c3 = dao.create_comment("/post2", "Yax", "", "", "Comment 3") + assert 1 == len(dao.find_not_notified_comments()) + dao.notify_comment(c3) + assert 0 == len(dao.find_not_notified_comments()) -if __name__ == "__main__": - unittest.main() From 15413672c9b62165f9770fc424148f63264d8788 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:51:34 +0100 Subject: [PATCH 077/182] Add test coverage to local makefile --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 16fd38e..2eb9197 100644 --- a/Makefile +++ b/Makefile @@ -4,8 +4,9 @@ black: poetry run isort --multi-line 3 --profile black stacosys/ poetry run black stacosys/ -test: - poetry run pytest +test: + poetry run coverage run -m --source=stacosys pytest + poetry run coverage report typehint: poetry run mypy --ignore-missing-imports stacosys/ From 601259cc557851b01c4428762e828a1ddb57d512 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:52:10 +0100 Subject: [PATCH 078/182] update deps and remove unused ones --- poetry.lock | 390 +++++++++++-------------------------------------- pyproject.toml | 6 +- tox.ini | 9 -- 3 files changed, 86 insertions(+), 319 deletions(-) delete mode 100644 tox.ini diff --git a/poetry.lock b/poetry.lock index 2842c27..c5a9026 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,33 +1,6 @@ -[[package]] -name = "apscheduler" -version = "3.9.1.post1" -description = "In-process task scheduler with Cron-like capabilities" -category = "main" -optional = false -python-versions = "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" - -[package.dependencies] -pytz = "*" -setuptools = ">=0.7" -six = ">=1.4.0" -tzlocal = ">=2.0,<3.0.0 || >=4.0.0" - -[package.extras] -asyncio = ["trollius"] -doc = ["sphinx", "sphinx-rtd-theme"] -gevent = ["gevent"] -mongodb = ["pymongo (>=3.0)"] -redis = ["redis (>=3.0)"] -rethinkdb = ["rethinkdb (>=2.4.0)"] -sqlalchemy = ["sqlalchemy (>=0.8)"] -testing = ["mock", "pytest", "pytest-asyncio", "pytest-asyncio (<0.6)", "pytest-cov", "pytest-tornado5"] -tornado = ["tornado (>=4.3)"] -twisted = ["twisted"] -zookeeper = ["kazoo"] - [[package]] name = "astroid" -version = "2.12.12" +version = "2.12.13" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -119,17 +92,14 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7 [[package]] name = "coverage" -version = "5.5" +version = "6.5.0" description = "Code coverage measurement for Python" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" - -[package.dependencies] -toml = {version = "*", optional = true, markers = "extra == \"toml\""} +python-versions = ">=3.7" [package.extras] -toml = ["toml"] +toml = ["tomli"] [[package]] name = "coveralls" @@ -158,14 +128,6 @@ python-versions = ">=3.7" [package.extras] graph = ["objgraph (>=1.7.2)"] -[[package]] -name = "distlib" -version = "0.3.6" -description = "Distribution utilities" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "docopt" version = "0.6.2" @@ -174,34 +136,22 @@ category = "dev" optional = false python-versions = "*" -[[package]] -name = "filelock" -version = "3.8.0" -description = "A platform independent file lock." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] -testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] - [[package]] name = "flake8" -version = "5.0.4" +version = "6.0.0" description = "the modular source code checker: pep8 pyflakes and co" category = "dev" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.8.1" [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" +pycodestyle = ">=2.10.0,<2.11.0" +pyflakes = ">=3.0.0,<3.1.0" [[package]] name = "flake8-black" -version = "0.3.4" +version = "0.3.5" description = "flake8 plugin to call black as a code style validator" category = "dev" optional = false @@ -350,7 +300,7 @@ python-versions = "*" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -377,7 +327,7 @@ python-versions = "*" name = "platformdirs" version = "2.5.4" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" +category = "dev" optional = false python-versions = ">=3.7" @@ -389,7 +339,7 @@ test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -397,17 +347,9 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - [[package]] name = "pycodestyle" -version = "2.9.1" +version = "2.10.0" description = "Python style guide checker" category = "dev" optional = false @@ -415,7 +357,7 @@ python-versions = ">=3.6" [[package]] name = "pyflakes" -version = "2.5.0" +version = "3.0.1" description = "passive checker of Python programs" category = "dev" optional = false @@ -423,14 +365,14 @@ python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.15.6" +version = "2.15.7" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.12.12,<=2.14.0-dev0" +astroid = ">=2.12.13,<=2.14.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -446,7 +388,7 @@ testutils = ["gitpython (>3)"] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" +category = "dev" optional = false python-versions = ">=3.6.8" @@ -494,25 +436,6 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] -[[package]] -name = "pytz" -version = "2022.6" -description = "World timezone definitions, modern and historical" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "pytz-deprecation-shim" -version = "0.1.0.post0" -description = "Shims to make deprecation of pytz easier" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" - -[package.dependencies] -tzdata = {version = "*", markers = "python_version >= \"3.6\""} - [[package]] name = "requests" version = "2.28.1" @@ -531,35 +454,6 @@ urllib3 = ">=1.21.1,<1.27" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "setuptools" -version = "65.6.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - [[package]] name = "tomli" version = "2.0.1" @@ -576,27 +470,6 @@ category = "dev" optional = false python-versions = ">=3.6" -[[package]] -name = "tox" -version = "3.27.1" -description = "tox is a generic virtualenv management and test command line tool" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" - -[package.dependencies] -colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} -filelock = ">=3.0.0" -packaging = ">=14" -pluggy = ">=0.12.0" -py = ">=1.4.17" -six = ">=1.14.0" -virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" - -[package.extras] -docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] -testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] - [[package]] name = "types-markdown" version = "3.4.2.1" @@ -613,60 +486,19 @@ category = "dev" optional = false python-versions = ">=3.7" -[[package]] -name = "tzdata" -version = "2022.6" -description = "Provider of IANA time zone data" -category = "main" -optional = false -python-versions = ">=2" - -[[package]] -name = "tzlocal" -version = "4.2" -description = "tzinfo object for the local timezone" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -pytz-deprecation-shim = "*" -tzdata = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -devenv = ["black", "pyroma", "pytest-cov", "zest.releaser"] -test = ["pytest (>=4.3)", "pytest-mock (>=3.3)"] - [[package]] name = "urllib3" -version = "1.26.12" +version = "1.26.13" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] -[[package]] -name = "virtualenv" -version = "20.16.7" -description = "Virtual Python Environment builder" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -distlib = ">=0.3.6,<1" -filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<3" - -[package.extras] -docs = ["proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-argparse (>=0.3.2)", "sphinx-rtd-theme (>=1)", "towncrier (>=22.8)"] -testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] - [[package]] name = "werkzeug" version = "2.2.2" @@ -692,16 +524,12 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [metadata] lock-version = "1.1" python-versions = "~3.11" -content-hash = "94614b000f5848489ed0e32caf25a06df9daa05bc063d0e2fe03a00f6859d27b" +content-hash = "c7fd5e51d22b64ab20394250b12819609483e7e825996bb8c62e6bb2bb537951" [metadata.files] -apscheduler = [ - {file = "APScheduler-3.9.1.post1-py2.py3-none-any.whl", hash = "sha256:c8c618241dbb2785ed5a687504b14cb1851d6f7b5a4edf3a51e39cc6a069967a"}, - {file = "APScheduler-3.9.1.post1.tar.gz", hash = "sha256:b2bea0309569da53a7261bfa0ce19c67ddbfe151bda776a6a907579fdbd3eb2a"}, -] astroid = [ - {file = "astroid-2.12.12-py3-none-any.whl", hash = "sha256:72702205200b2a638358369d90c222d74ebc376787af8fb2f7f2a86f7b5cc85f"}, - {file = "astroid-2.12.12.tar.gz", hash = "sha256:1c00a14f5a3ed0339d38d2e2e5b74ea2591df5861c0936bb292b84ccf3a78d83"}, + {file = "astroid-2.12.13-py3-none-any.whl", hash = "sha256:10e0ad5f7b79c435179d0d0f0df69998c4eef4597534aae44910db060baeb907"}, + {file = "astroid-2.12.13.tar.gz", hash = "sha256:1493fe8bd3dfd73dc35bd53c9d5b6e49ead98497c47b2307662556a5692d29d7"}, ] attrs = [ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, @@ -751,58 +579,56 @@ colorama = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] coverage = [ - {file = "coverage-5.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf"}, - {file = "coverage-5.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b"}, - {file = "coverage-5.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669"}, - {file = "coverage-5.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90"}, - {file = "coverage-5.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c"}, - {file = "coverage-5.5-cp27-cp27m-win32.whl", hash = "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a"}, - {file = "coverage-5.5-cp27-cp27m-win_amd64.whl", hash = "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82"}, - {file = "coverage-5.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905"}, - {file = "coverage-5.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083"}, - {file = "coverage-5.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5"}, - {file = "coverage-5.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81"}, - {file = "coverage-5.5-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6"}, - {file = "coverage-5.5-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0"}, - {file = "coverage-5.5-cp310-cp310-win_amd64.whl", hash = "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae"}, - {file = "coverage-5.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb"}, - {file = "coverage-5.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160"}, - {file = "coverage-5.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6"}, - {file = "coverage-5.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701"}, - {file = "coverage-5.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793"}, - {file = "coverage-5.5-cp35-cp35m-win32.whl", hash = "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e"}, - {file = "coverage-5.5-cp35-cp35m-win_amd64.whl", hash = "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3"}, - {file = "coverage-5.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066"}, - {file = "coverage-5.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a"}, - {file = "coverage-5.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465"}, - {file = "coverage-5.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb"}, - {file = "coverage-5.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821"}, - {file = "coverage-5.5-cp36-cp36m-win32.whl", hash = "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45"}, - {file = "coverage-5.5-cp36-cp36m-win_amd64.whl", hash = "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184"}, - {file = "coverage-5.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a"}, - {file = "coverage-5.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53"}, - {file = "coverage-5.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d"}, - {file = "coverage-5.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638"}, - {file = "coverage-5.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3"}, - {file = "coverage-5.5-cp37-cp37m-win32.whl", hash = "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a"}, - {file = "coverage-5.5-cp37-cp37m-win_amd64.whl", hash = "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a"}, - {file = "coverage-5.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6"}, - {file = "coverage-5.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2"}, - {file = "coverage-5.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759"}, - {file = "coverage-5.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873"}, - {file = "coverage-5.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a"}, - {file = "coverage-5.5-cp38-cp38-win32.whl", hash = "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6"}, - {file = "coverage-5.5-cp38-cp38-win_amd64.whl", hash = "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502"}, - {file = "coverage-5.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b"}, - {file = "coverage-5.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529"}, - {file = "coverage-5.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b"}, - {file = "coverage-5.5-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff"}, - {file = "coverage-5.5-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b"}, - {file = "coverage-5.5-cp39-cp39-win32.whl", hash = "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6"}, - {file = "coverage-5.5-cp39-cp39-win_amd64.whl", hash = "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03"}, - {file = "coverage-5.5-pp36-none-any.whl", hash = "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079"}, - {file = "coverage-5.5-pp37-none-any.whl", hash = "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"}, - {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, + {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, + {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, + {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, + {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, + {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, + {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, + {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, + {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, + {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, + {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, + {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, + {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, + {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, + {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, ] coveralls = [ {file = "coveralls-3.3.1-py2.py3-none-any.whl", hash = "sha256:f42015f31d386b351d4226389b387ae173207058832fbf5c8ec4b40e27b16026"}, @@ -812,24 +638,16 @@ dill = [ {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, ] -distlib = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, -] docopt = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, ] -filelock = [ - {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, - {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, -] flake8 = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, + {file = "flake8-6.0.0-py2.py3-none-any.whl", hash = "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7"}, + {file = "flake8-6.0.0.tar.gz", hash = "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"}, ] flake8-black = [ - {file = "flake8-black-0.3.4.tar.gz", hash = "sha256:7f96a4c80a828d09f1d550724e16aabb2adacd6a5f8e0bb051df422fc63d2183"}, - {file = "flake8_black-0.3.4-py3-none-any.whl", hash = "sha256:fb52f258dfa6a25645c4ba8730eadc5f2ecd32057bf6c9fc21aef1cba9fefd74"}, + {file = "flake8-black-0.3.5.tar.gz", hash = "sha256:9e93252b1314a8eb3c2f55dec54a07239e502b12f57567f2c105f2202714b15e"}, + {file = "flake8_black-0.3.5-py3-none-any.whl", hash = "sha256:4948a579fdddd98fbf935fd94255dfcfce560c4ddc1ceee08e3f12d6114c8619"}, ] flask = [ {file = "Flask-2.2.2-py3-none-any.whl", hash = "sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526"}, @@ -981,21 +799,17 @@ pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] pycodestyle = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, + {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"}, + {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"}, ] pyflakes = [ - {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, - {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, + {file = "pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"}, + {file = "pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"}, ] pylint = [ - {file = "pylint-2.15.6-py3-none-any.whl", hash = "sha256:15060cc22ed6830a4049cf40bc24977744df2e554d38da1b2657591de5bcd052"}, - {file = "pylint-2.15.6.tar.gz", hash = "sha256:25b13ddcf5af7d112cf96935e21806c1da60e676f952efb650130f2a4483421c"}, + {file = "pylint-2.15.7-py3-none-any.whl", hash = "sha256:1d561d1d3e8be9dd880edc685162fbdaa0409c88b9b7400873c0cf345602e326"}, + {file = "pylint-2.15.7.tar.gz", hash = "sha256:91e4776dbcb4b4d921a3e4b6fec669551107ba11f29d9199154a01622e460a57"}, ] pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, @@ -1012,30 +826,10 @@ pytest-cov = [ {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, ] -pytz = [ - {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, - {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, -] -pytz-deprecation-shim = [ - {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, - {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, -] requests = [ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, ] -setuptools = [ - {file = "setuptools-65.6.0-py3-none-any.whl", hash = "sha256:6211d2f5eddad8757bd0484923ca7c0a6302ebc4ab32ea5e94357176e0ca0840"}, - {file = "setuptools-65.6.0.tar.gz", hash = "sha256:d1eebf881c6114e51df1664bc2c9133d022f78d12d5f4f665b9191f084e2862d"}, -] -six = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -1044,10 +838,6 @@ tomlkit = [ {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, ] -tox = [ - {file = "tox-3.27.1-py2.py3-none-any.whl", hash = "sha256:f52ca66eae115fcfef0e77ef81fd107133d295c97c52df337adedb8dfac6ab84"}, - {file = "tox-3.27.1.tar.gz", hash = "sha256:b2a920e35a668cc06942ffd1cf3a4fb221a4d909ca72191fb6d84b0b18a7be04"}, -] types-markdown = [ {file = "types-Markdown-3.4.2.1.tar.gz", hash = "sha256:03c0904cf5886a7d8193e2f50bcf842afc89e0ab80f060f389f6c2635c65628f"}, {file = "types_Markdown-3.4.2.1-py3-none-any.whl", hash = "sha256:b2333f6f4b8f69af83de359e10a097e4a3f14bbd6d2484e1829d9b0ec56fa0cb"}, @@ -1056,21 +846,9 @@ typing-extensions = [ {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] -tzdata = [ - {file = "tzdata-2022.6-py2.py3-none-any.whl", hash = "sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342"}, - {file = "tzdata-2022.6.tar.gz", hash = "sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae"}, -] -tzlocal = [ - {file = "tzlocal-4.2-py3-none-any.whl", hash = "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745"}, - {file = "tzlocal-4.2.tar.gz", hash = "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7"}, -] urllib3 = [ - {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, - {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, -] -virtualenv = [ - {file = "virtualenv-20.16.7-py3-none-any.whl", hash = "sha256:efd66b00386fdb7dbe4822d172303f40cd05e50e01740b19ea42425cbe653e29"}, - {file = "virtualenv-20.16.7.tar.gz", hash = "sha256:8691e3ff9387f743e00f6bb20f70121f5e4f596cae754531f2b3b3a1b1ac696e"}, + {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, + {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, ] werkzeug = [ {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, diff --git a/pyproject.toml b/pyproject.toml index d1ec3da..f048766 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,19 +8,17 @@ include = ["run.py"] [tool.poetry.dependencies] python = "~3.11" -apscheduler = "^3.6.3" pyrss2gen = "^1.1" markdown = "^3.1.1" requests = "^2.25.1" -coverage = "^5.5" +coverage = "^6.5" peewee = "^3.14.8" -tox = "^3.24.5" background = "^0.2.1" Flask = "^2.1.1" types-markdown = "^3.4.2.1" [tool.poetry.group.dev.dependencies] -pylint = "^2.15.5" +pylint = "^2.15" mypy = "^0.991" pytest = "^7.2.0" coveralls = "^3.3.1" diff --git a/tox.ini b/tox.ini deleted file mode 100644 index c4ac41c..0000000 --- a/tox.ini +++ /dev/null @@ -1,9 +0,0 @@ -[tox] -isolated_build = true -envlist = py38, py39 - -[testenv] -whitelist_externals = poetry -commands = - poetry install -v - poetry run pytest tests/ From 661eb35717fb98714c015147b2c6ed88eae07abd Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:54:11 +0100 Subject: [PATCH 079/182] clean-up rss and mail. Add mail connection check at startup --- stacosys/run.py | 4 ++-- stacosys/service/mail.py | 23 +++++++++++++++++------ stacosys/service/rssfeed.py | 4 ++-- tests/test_rssfeed.py | 7 +++++++ 4 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 tests/test_rssfeed.py diff --git a/stacosys/run.py b/stacosys/run.py index 5109299..8bd26ad 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -29,7 +29,6 @@ def stacosys_server(config_pathname): logger = logging.getLogger(__name__) configure_logging(logging.INFO) logging.getLogger("werkzeug").level = logging.WARNING - logging.getLogger("apscheduler.executors").level = logging.WARNING # check config file exists if not os.path.isfile(config_pathname): @@ -58,8 +57,8 @@ def stacosys_server(config_pathname): # generate RSS rss.configure( config.get(ConfigParameter.RSS_FILE), - config.get(ConfigParameter.SITE_PROTO), config.get(ConfigParameter.SITE_NAME), + config.get(ConfigParameter.SITE_PROTO), config.get(ConfigParameter.SITE_URL), ) rss.generate() @@ -72,6 +71,7 @@ def stacosys_server(config_pathname): config.get(ConfigParameter.SMTP_PASSWORD), ) mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) + mailer.check() logger.info("start interfaces %s %s %s", api, form, admin) diff --git a/stacosys/service/mail.py b/stacosys/service/mail.py index 6d756bb..d7fe5ca 100644 --- a/stacosys/service/mail.py +++ b/stacosys/service/mail.py @@ -32,6 +32,13 @@ class Mailer: def configure_destination(self, site_admin_email) -> None: self._site_admin_email = site_admin_email + def check(self): + server = smtplib.SMTP_SSL( + self._smtp_host, self._smtp_port, context=ssl.create_default_context() + ) + server.login(self._smtp_login, self._smtp_password) + server.close() + def send(self, subject, message) -> bool: sender = self._smtp_login receivers = [self._site_admin_email] @@ -41,11 +48,15 @@ class Mailer: msg["To"] = self._site_admin_email msg["From"] = sender - context = ssl.create_default_context() - # TODO catch SMTP failure - with smtplib.SMTP_SSL( - self._smtp_host, self._smtp_port, context=context - ) as server: + # pylint: disable=bare-except + try: + server = smtplib.SMTP_SSL( + self._smtp_host, self._smtp_port, context=ssl.create_default_context() + ) server.login(self._smtp_login, self._smtp_password) server.send_message(msg, sender, receivers) - return True + server.close() + success = True + except: + success = False + return success diff --git a/stacosys/service/rssfeed.py b/stacosys/service/rssfeed.py index a5f5c12..3e81389 100644 --- a/stacosys/service/rssfeed.py +++ b/stacosys/service/rssfeed.py @@ -19,13 +19,13 @@ class Rss: def configure( self, rss_file, - site_proto, site_name, + site_proto, site_url, ) -> None: self._rss_file = rss_file - self._site_proto = site_proto self._site_name = site_name + self._site_proto = site_proto self._site_url = site_url def generate(self) -> None: diff --git a/tests/test_rssfeed.py b/tests/test_rssfeed.py new file mode 100644 index 0000000..713eead --- /dev/null +++ b/tests/test_rssfeed.py @@ -0,0 +1,7 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +from stacosys.service import rss + +def test_configure(): + rss.configure("comments.xml", "blog", "http", "blog.mydomain.com") From d8794bb35ee8498c0dc72c8004baa761b41370b5 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:54:43 +0100 Subject: [PATCH 080/182] TODO relaunch pending comments on count request as CRON alternative --- stacosys/interface/api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/stacosys/interface/api.py b/stacosys/interface/api.py index 8c88a2e..06aa07f 100644 --- a/stacosys/interface/api.py +++ b/stacosys/interface/api.py @@ -38,5 +38,6 @@ def query_comments(): @app.route("/api/comments/count", methods=["GET"]) def get_comments_count(): + # TODO process pending comments url = request.args.get("url", "") return jsonify({"count": dao.count_published_comments(url)}) From 9912ead51625e5c12847918d6ddbadf6bd14f2fb Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:55:33 +0100 Subject: [PATCH 081/182] Add tests --- tests/test_config.py | 2 +- tests/test_db.py | 2 -- tests/test_mail.py | 11 +++++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 tests/test_mail.py diff --git a/tests/test_config.py b/tests/test_config.py index d0d8e75..db884c8 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -24,7 +24,7 @@ def test_get(init_config): assert config.get(ConfigParameter.HTTP_HOST) == "" assert config.get(ConfigParameter.HTTP_PORT) == str(EXPECTED_HTTP_PORT) assert config.get_int(ConfigParameter.HTTP_PORT) == EXPECTED_HTTP_PORT - with pytest.raises(AssertionError): + with pytest.raises(AssertionError): config.get_bool(ConfigParameter.DB_SQLITE_FILE) def test_put(init_config): diff --git a/tests/test_db.py b/tests/test_db.py index 1f390c3..649c5e7 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -11,7 +11,6 @@ def setup_db(): database.setup(":memory:") - def test_dao_published(setup_db): # test count published @@ -52,4 +51,3 @@ def test_dao_notified(setup_db): dao.notify_comment(c3) assert 0 == len(dao.find_not_notified_comments()) - diff --git a/tests/test_mail.py b/tests/test_mail.py new file mode 100644 index 0000000..192c3cc --- /dev/null +++ b/tests/test_mail.py @@ -0,0 +1,11 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +import pytest +from stacosys.service import mailer + +def test_configure_and_check(): + mailer.configure_smtp("localhost", 2525, "admin", "admin") + mailer.configure_destination("admin@mydomain.com") + with pytest.raises(ConnectionRefusedError): + mailer.check() \ No newline at end of file From 1df8d3f8a4c2a79e6da9302bc2ceba121675abdf Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:56:13 +0100 Subject: [PATCH 082/182] remove dead code --- stacosys/interface/form.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/stacosys/interface/form.py b/stacosys/interface/form.py index 52b5bb8..20722f9 100644 --- a/stacosys/interface/form.py +++ b/stacosys/interface/form.py @@ -78,14 +78,7 @@ def submit_new_comment(comment): subject = f"STACOSYS {site_name}" if mailer.send(subject, email_body): logger.debug("new comment processed") - # save notification datetime dao.notify_comment(comment) else: logger.warning("rescheduled. send mail failure %s", subject) - - -@background.callback -def submit_new_comment_callback(future): - # TODO use future to log submit status - logger.debug(future) From 9e2e2b1750529d5c617f9a8814e7a4836c2ff697 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:56:35 +0100 Subject: [PATCH 083/182] Update workspace config --- stacosys.sublime-workspace | 3542 ++---------------------------------- 1 file changed, 114 insertions(+), 3428 deletions(-) diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace index 82cfd31..a2e5ee9 100644 --- a/stacosys.sublime-workspace +++ b/stacosys.sublime-workspace @@ -5,7 +5,23 @@ [ [ "c", - "configuration" + "check" + ], + [ + "con", + "configure_destination" + ], + [ + "EXP", + "EXPECTED_HTTP_PORT" + ], + [ + "auth", + "auth_login" + ], + [ + "l", + "login" ], [ "assertI", @@ -36,3089 +52,79 @@ "buffers": [ { - "file": "stacosys/interface/web/admin.py", + "file": "pyproject.toml", + "redo_stack": + [ + [ + 84, + 1, + "insert", + { + "characters": ".1" + }, + "AgAAADABAAAAAAAAMAEAAAAAAAABAAAAMS8BAAAAAAAALwEAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAMQEAAAAAAAAxAQAAAAAAAAAAAAAAAPC/" + ] + ], "settings": { - "buffer_size": 2472, + "buffer_size": 620, "encoding": "UTF-8", "line_ending": "Unix" }, "undo_stack": [ - [ - 4, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAL8BAAAAAAAAwAEAAAAAAAAAAAAAwAEAAAAAAADEAQAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvwEAAAAAAAC/AQAAAAAAAAAAAAAAAPC/" - ], - [ - 8, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAANIAAAAAAAAA0wAAAAAAAAAAAAAAwQEAAAAAAADBAQAAAAAAAAQAAAAgICAg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0gAAAAAAAADSAAAAAAAAAAAAAAAAIINA" - ], - [ - 9, - 1, - "paste", - null, - "AQAAANMAAAAAAAAACwEAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0wAAAAAAAADTAAAAAAAAAAAAAAAAAPC/" - ], - [ - 12, - 1, - "reindent", - null, - "AQAAAPkBAAAAAAAA/QEAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA+QEAAAAAAAD5AQAAAAAAAAAAAAAAAPC/" - ], - [ - 13, - 1, - "insert", - { - "characters": "cofn" - }, - "BAAAAP0BAAAAAAAA/gEAAAAAAAAAAAAA/gEAAAAAAAD/AQAAAAAAAAAAAAD/AQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAQIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA/QEAAAAAAAD9AQAAAAAAAAAAAAAAAPC/" - ], - [ - 14, - 2, - "left_delete", - null, - "AgAAAAACAAAAAAAAAAIAAAAAAAABAAAAbv8BAAAAAAAA/wEAAAAAAAABAAAAZg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAQIAAAAAAAABAgAAAAAAAAAAAAAAAPC/" - ], - [ - 15, - 1, - "insert", - { - "characters": "nfug" - }, - "BAAAAP8BAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAABAgAAAAAAAAAAAAABAgAAAAAAAAICAAAAAAAAAAAAAAICAAAAAAAAAwIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA/wEAAAAAAAD/AQAAAAAAAAAAAAAAAPC/" - ], [ 16, - 2, - "left_delete", + 1, + "insert", + { + "characters": "6" + }, + "AgAAACIBAAAAAAAAIwEAAAAAAAAAAAAAIwEAAAAAAAAjAQAAAAAAAAEAAAA1", + "AQAAAAAAAAABAAAAIgEAAAAAAAAjAQAAAAAAAAAAAAAAAPC/" + ], + [ + 25, + 1, + "right_delete", null, - "AgAAAAICAAAAAAAAAgIAAAAAAAABAAAAZwECAAAAAAAAAQIAAAAAAAABAAAAdQ", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAwIAAAAAAAADAgAAAAAAAAAAAAAAAPC/" - ], - [ - 17, - 1, - "insert", - { - "characters": "ig" - }, - "AgAAAAECAAAAAAAAAgIAAAAAAAAAAAAAAgIAAAAAAAADAgAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAQIAAAAAAAABAgAAAAAAAAAAAAAAAPC/" - ], - [ - 18, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAAMCAAAAAAAABAIAAAAAAAAAAAAABAIAAAAAAAAFAgAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAwIAAAAAAAADAgAAAAAAAAAAAAAAAPC/" - ], - [ - 19, - 1, - "insert", - { - "characters": " Config" - }, - "BwAAAAUCAAAAAAAABgIAAAAAAAAAAAAABgIAAAAAAAAHAgAAAAAAAAAAAAAHAgAAAAAAAAgCAAAAAAAAAAAAAAgCAAAAAAAACQIAAAAAAAAAAAAACQIAAAAAAAAKAgAAAAAAAAAAAAAKAgAAAAAAAAsCAAAAAAAAAAAAAAsCAAAAAAAADAIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABQIAAAAAAAAFAgAAAAAAAAAAAAAAAPC/" - ], - [ - 20, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAAwCAAAAAAAADgIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAIAAAAAAAAMAgAAAAAAAAAAAAAAAPC/" - ], - [ - 30, - 1, - "insert", - { - "characters": " " - }, - "AQAAAGcCAAAAAAAAaAIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwIAAAAAAABnAgAAAAAAAAAAAAAAAPC/" - ], - [ - 32, - 1, - "insert", - { - "characters": "config." - }, - "BwAAAGcCAAAAAAAAaAIAAAAAAAAAAAAAaAIAAAAAAABpAgAAAAAAAAAAAABpAgAAAAAAAGoCAAAAAAAAAAAAAGoCAAAAAAAAawIAAAAAAAAAAAAAawIAAAAAAABsAgAAAAAAAAAAAABsAgAAAAAAAG0CAAAAAAAAAAAAAG0CAAAAAAAAbgIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwIAAAAAAABnAgAAAAAAAAAAAAAAAPC/" - ], - [ - 33, - 1, - "insert", - { - "characters": "get" - }, - "AwAAAG4CAAAAAAAAbwIAAAAAAAAAAAAAbwIAAAAAAABwAgAAAAAAAAAAAABwAgAAAAAAAHECAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbgIAAAAAAABuAgAAAAAAAAAAAAAAAPC/" - ], - [ - 34, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAHECAAAAAAAAcwIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcQIAAAAAAABxAgAAAAAAAAAAAAAAAPC/" - ], - [ - 35, - 1, - "insert", - { - "characters": "Confi" - }, - "BQAAAHICAAAAAAAAcwIAAAAAAAAAAAAAcwIAAAAAAAB0AgAAAAAAAAAAAAB0AgAAAAAAAHUCAAAAAAAAAAAAAHUCAAAAAAAAdgIAAAAAAAAAAAAAdgIAAAAAAAB3AgAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcgIAAAAAAAByAgAAAAAAAAAAAAAAAPC/" - ], - [ - 37, - 1, - "insert_completion", - { - "completion": "ConfigParameter", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "ConfigParameter" - }, - "AgAAAHICAAAAAAAAcgIAAAAAAAAFAAAAQ29uZmlyAgAAAAAAAIECAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdwIAAAAAAAB3AgAAAAAAAAAAAAAAAPC/" - ], - [ - 38, - 1, - "insert", - { - "characters": ".W" - }, - "AgAAAIECAAAAAAAAggIAAAAAAAAAAAAAggIAAAAAAACDAgAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAgQIAAAAAAACBAgAAAAAAAAAAAAAAAPC/" - ], - [ - 39, - 1, - "insert_completion", - { - "completion": "WEB_USERNAME", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "WEB_USERNAME" - }, - "AgAAAIICAAAAAAAAggIAAAAAAAABAAAAV4ICAAAAAAAAjgIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAgwIAAAAAAACDAgAAAAAAAAAAAAAAAPC/" + "AQAAAMIBAAAAAAAAwgEAAAAAAAACAAAALjU", + "AQAAAAAAAAABAAAAwgEAAAAAAADEAQAAAAAAAAAAAAAAAPC/" ], [ 43, 1, "right_delete", null, - "AQAAAI8CAAAAAAAAjwIAAAAAAAAfAAAAIGFwcC5jb25maWcuZ2V0KCJXRUJfVVNFUk5BTUUiKQ", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjwIAAAAAAACuAgAAAAAAAAAAAAAAAPC/" - ], - [ - 50, - 1, - "paste", - null, - "AQAAAKgCAAAAAAAA0AIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAqAIAAAAAAACoAgAAAAAAAAAAAAAAAPC/" - ], - [ - 51, - 1, - "insert", - { - "characters": " " - }, - "AQAAANACAAAAAAAA0QIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0AIAAAAAAADQAgAAAAAAAAAAAAAAAPC/" - ], - [ - 55, - 1, - "insert", - { - "characters": "PA" - }, - "AwAAAMcCAAAAAAAAyAIAAAAAAAAAAAAAyAIAAAAAAADIAgAAAAAAAAgAAABVU0VSTkFNRcgCAAAAAAAAyQIAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzwIAAAAAAADHAgAAAAAAAAAAAAAAAPC/" - ], - [ - 56, - 1, - "insert_completion", - { - "completion": "WEB_PASSWORD", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "WEB_PASSWORD" - }, - "AgAAAMMCAAAAAAAAwwIAAAAAAAAGAAAAV0VCX1BBwwIAAAAAAADPAgAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAyQIAAAAAAADJAgAAAAAAAAAAAAAAAPC/" - ], - [ - 59, - 2, - "right_delete", - null, - "AgAAANECAAAAAAAA0QIAAAAAAAAeAAAAYXBwLmNvbmZpZy5nZXQoIldFQl9QQVNTV09SRCIp0QIAAAAAAADRAgAAAAAAAAEAAAAg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0QIAAAAAAADvAgAAAAAAAAAAAAAAAPC/" - ], - [ - 69, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAKcFAAAAAAAAqAUAAAAAAAAAAAAAqAUAAAAAAACsBQAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApwUAAAAAAACnBQAAAAAAAAAAAAAAAPC/" - ], - [ - 77, - 1, - "paste", - null, - "AQAAAKwFAAAAAAAAvQUAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArAUAAAAAAACsBQAAAAAAAAAAAAAAAPC/" - ], - [ - 85, - 1, - "paste", - null, - "AgAAAPMFAAAAAAAAGwYAAAAAAAAAAAAAGwYAAAAAAAAbBgAAAAAAAB4AAABhcHAuY29uZmlnLmdldCgiV0VCX1VTRVJOQU1FIik", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8wUAAAAAAAARBgAAAAAAAAAAAAAAAPC/" - ], - [ - 98, - 1, - "paste", - null, - "AQAAAOwGAAAAAAAABwcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA7AYAAAAAAADsBgAAAAAAAAAAAAAAAPC/" - ], - [ - 99, - 1, - "insert", - { - "characters": " " - }, - "AQAAAAcHAAAAAAAACAcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABwcAAAAAAAAHBwAAAAAAAAAAAAAAAPC/" - ], - [ - 101, - 1, - "left_delete", - null, - "AQAAAAYHAAAAAAAABgcAAAAAAAABAAAALg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABwcAAAAAAAAHBwAAAAAAAAAAAAAAAPC/" - ], - [ - 102, - 1, - "insert", - { - "characters": ".LA" - }, - "AwAAAAYHAAAAAAAABwcAAAAAAAAAAAAABwcAAAAAAAAIBwAAAAAAAAAAAAAIBwAAAAAAAAkHAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABgcAAAAAAAAGBwAAAAAAAAAAAAAAAPC/" - ], - [ - 103, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"label\":\"LANG\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"LANG\",\"position\":{\"character\":48,\"line\":63},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"08.9999.LANG\",\"kind\":20},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "LANG" - }, - "AgAAAAcHAAAAAAAABwcAAAAAAAACAAAATEEHBwAAAAAAAAsHAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACQcAAAAAAAAJBwAAAAAAAAAAAAAAAPC/" - ], - [ - 104, - 1, - "insert", - { - "characters": ")" - }, - "AQAAAAsHAAAAAAAADAcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwcAAAAAAAALBwAAAAAAAAAAAAAAAPC/" - ], - [ - 107, - 1, - "right_delete", - null, - "AQAAAAwHAAAAAAAADAcAAAAAAAAdAAAAIGFwcC5jb25maWcuZ2V0KCJMQU5HIiwgImZyIik", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAcAAAAAAAApBwAAAAAAAAAAAAAAAPC/" - ], - [ - 112, - 1, - "insert", - { - "characters": "f" - }, - "AQAAAOEGAAAAAAAA4gYAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4QYAAAAAAADhBgAAAAAAAAAAAAAAAPC/" - ], - [ - 116, - 1, - "right_delete", - null, - "AQAAAOEGAAAAAAAA4QYAAAAAAAABAAAAZg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4QYAAAAAAADhBgAAAAAAAAAAAAAAAPC/" - ], - [ - 121, - 1, - "insert", - { - "characters": " " - }, - "AQAAAEMHAAAAAAAARAcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwcAAAAAAABDBwAAAAAAAAAAAAAAAPC/" - ], - [ - 123, - 1, - "paste", - null, - "AQAAAEMHAAAAAAAAXgcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwcAAAAAAABDBwAAAAAAAAAAAAAAAPC/" - ], - [ - 124, - 1, - "insert", - { - "characters": "S" - }, - "AQAAAF4HAAAAAAAAXwcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXgcAAAAAAABeBwAAAAAAAAAAAAAAAPC/" - ], - [ - 128, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"label\":\"SITE_URL\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"SITE_URL\",\"position\":{\"character\":44,\"line\":65},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"08.9999.SITE_URL\",\"kind\":20},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "SITE_URL" - }, - "AgAAAF4HAAAAAAAAXgcAAAAAAAABAAAAU14HAAAAAAAAZgcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXwcAAAAAAABfBwAAAAAAAAAAAAAAAPC/" - ], - [ - 129, - 1, - "insert", - { - "characters": ")" - }, - "AQAAAGYHAAAAAAAAZwcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZgcAAAAAAABmBwAAAAAAAAAAAAAAAPC/" - ], - [ - 132, - 1, - "right_delete", - null, - "AQAAAGcHAAAAAAAAZwcAAAAAAAAbAAAAIGFwcC5jb25maWcuZ2V0KCJTSVRFX1VSTCIp", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwcAAAAAAACCBwAAAAAAAAAAAAAAAPC/" - ], - [ - 140, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAKUIAAAAAAAApggAAAAAAAAAAAAApggAAAAAAACuCAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApQgAAAAAAAClCAAAAAAAAP///////+9/" - ], - [ - 145, - 1, - "paste", - null, - "AQAAAAwBAAAAAAAALQEAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAEAAAAAAAAMAQAAAAAAAAAAAAAAAPC/" - ], - [ - 146, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAC0BAAAAAAAALgEAAAAAAAAAAAAAyAgAAAAAAADICAAAAAAAAAgAAAAgICAgICAgIA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALQEAAAAAAAAtAQAAAAAAAAAAAAAAAPC/" - ], - [ - 150, - 1, - "insert", - { - "characters": "\nrss" - }, - "BQAAANEHAAAAAAAA0gcAAAAAAAAAAAAA0gcAAAAAAADWBwAAAAAAAAAAAADWBwAAAAAAANcHAAAAAAAAAAAAANcHAAAAAAAA2AcAAAAAAAAAAAAA2AcAAAAAAADZBwAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0QcAAAAAAADRBwAAAAAAAAAAAAAAAPC/" - ], - [ - 151, - 1, - "insert", - { - "characters": " =" - }, - "AgAAANkHAAAAAAAA2gcAAAAAAAAAAAAA2gcAAAAAAADbBwAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA2QcAAAAAAADZBwAAAAAAAAAAAAAAAPC/" - ], - [ - 152, - 1, - "insert", - { - "characters": " Rss" - }, - "BAAAANsHAAAAAAAA3AcAAAAAAAAAAAAA3AcAAAAAAADdBwAAAAAAAAAAAADdBwAAAAAAAN4HAAAAAAAAAAAAAN4HAAAAAAAA3wcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA2wcAAAAAAADbBwAAAAAAAAAAAAAAAPC/" - ], - [ - 153, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAN8HAAAAAAAA4QcAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA3wcAAAAAAADfBwAAAAAAAAAAAAAAAPC/" - ], - [ - 157, - 1, - "insert", - { - "characters": "rss" - }, - "BAAAAOEIAAAAAAAA4ggAAAAAAAAAAAAA4ggAAAAAAADiCAAAAAAAABUAAABhcHAuY29uZmlnLmdldCgiUlNTIiniCAAAAAAAAOMIAAAAAAAAAAAAAOMIAAAAAAAA5AgAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4QgAAAAAAAD2CAAAAAAAAAAAAAAAAPC/" - ], - [ - 160, - 1, - "left_delete", - null, - "AQAAANcIAAAAAAAA1wgAAAAAAAABAAAACg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA2AgAAAAAAADYCAAAAAAAAAAAAAAAAPC/" - ], - [ - 176, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAEMDAAAAAAAARAMAAAAAAAAAAAAARAMAAAAAAABIAwAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwMAAAAAAABDAwAAAAAAAAAAAAAAAPC/" - ], - [ - 177, - 1, - "paste", - null, - "AQAAAEgDAAAAAAAAWQMAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASAMAAAAAAABIAwAAAAAAAAAAAAAAAPC/" - ], - [ - 182, - 1, - "insert", - { - "characters": "conig" - }, - "BgAAAAEFAAAAAAAAAgUAAAAAAAAAAAAAAgUAAAAAAAACBQAAAAAAABwAAABhcHAuY29uZmlnLmdldCgiTEFORyIsICJmciIpAgUAAAAAAAADBQAAAAAAAAAAAAADBQAAAAAAAAQFAAAAAAAAAAAAAAQFAAAAAAAABQUAAAAAAAAAAAAABQUAAAAAAAAGBQAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAQUAAAAAAAAdBQAAAAAAAAAAAAAAAPC/" - ], - [ - 183, - 2, - "left_delete", - null, - "AgAAAAUFAAAAAAAABQUAAAAAAAABAAAAZwQFAAAAAAAABAUAAAAAAAABAAAAaQ", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABgUAAAAAAAAGBQAAAAAAAAAAAAAAAPC/" - ], - [ - 184, - 1, - "insert", - { - "characters": "fig.get" - }, - "BwAAAAQFAAAAAAAABQUAAAAAAAAAAAAABQUAAAAAAAAGBQAAAAAAAAAAAAAGBQAAAAAAAAcFAAAAAAAAAAAAAAcFAAAAAAAACAUAAAAAAAAAAAAACAUAAAAAAAAJBQAAAAAAAAAAAAAJBQAAAAAAAAoFAAAAAAAAAAAAAAoFAAAAAAAACwUAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAABAUAAAAAAAAEBQAAAAAAAAAAAAAAAPC/" - ], - [ - 185, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAAsFAAAAAAAADQUAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwUAAAAAAAALBQAAAAAAAAAAAAAAAPC/" - ], - [ - 186, - 1, - "insert", - { - "characters": "Confi" - }, - "BQAAAAwFAAAAAAAADQUAAAAAAAAAAAAADQUAAAAAAAAOBQAAAAAAAAAAAAAOBQAAAAAAAA8FAAAAAAAAAAAAAA8FAAAAAAAAEAUAAAAAAAAAAAAAEAUAAAAAAAARBQAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAUAAAAAAAAMBQAAAAAAAAAAAAAAAPC/" - ], - [ - 188, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"label\":\"ConfigParameter\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"ConfigParameter\",\"position\":{\"character\":54,\"line\":46},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"05.0003.ConfigParameter\",\"kind\":7},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "ConfigParameter" - }, - "AgAAAAwFAAAAAAAADAUAAAAAAAAFAAAAQ29uZmkMBQAAAAAAABsFAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEQUAAAAAAAARBQAAAAAAAAAAAAAAAPC/" - ], - [ - 189, - 1, - "insert", - { - "characters": ".L" - }, - "AgAAABsFAAAAAAAAHAUAAAAAAAAAAAAAHAUAAAAAAAAdBQAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAGwUAAAAAAAAbBQAAAAAAAAAAAAAAAPC/" - ], - [ - 190, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"label\":\"LANG\",\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"LANG\",\"position\":{\"character\":66,\"line\":46},\"filePath\":\"/home/yannic/work/stacosys/stacosys/interface/web/admin.py\"},\"sortText\":\"08.9999.LANG\",\"kind\":20},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "LANG" - }, - "AgAAABwFAAAAAAAAHAUAAAAAAAABAAAATBwFAAAAAAAAIAUAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAHQUAAAAAAAAdBQAAAAAAAAAAAAAAAPC/" - ], - [ - 194, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAADhCQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgaGFzaGxpYgppbXBvcnQgbG9nZ2luZwoKZnJvbSBmbGFzayBpbXBvcnQgZmxhc2gsIHJlZGlyZWN0LCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIHNlc3Npb24KCmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRhbwpmcm9tIHN0YWNvc3lzLmludGVyZmFjZSBpbXBvcnQgYXBwCmZyb20gc3RhY29zeXMuY29uZi5jb25maWcgaW1wb3J0IENvbmZpZywgQ29uZmlnUGFyYW1ldGVyCmZyb20gc3RhY29zeXMuY29yZS5yc3MgaW1wb3J0IFJzcwoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgphcHAuYWRkX3VybF9ydWxlKCIvd2ViIiwgZW5kcG9pbnQ9ImluZGV4IikKYXBwLmFkZF91cmxfcnVsZSgiL3dlYi8iLCBlbmRwb2ludD0iaW5kZXgiKQoKCkBhcHAuZW5kcG9pbnQoImluZGV4IikKZGVmIGluZGV4KCk6CiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCmRlZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGhhc2hlZCA9IGhhc2hsaWIuc2hhMjU2KHBhc3N3b3JkLmVuY29kZSgpKS5oZXhkaWdlc3QoKS51cHBlcigpCiAgICByZXR1cm4gKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkgPT0gdXNlcm5hbWUKICAgICAgICBhbmQgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1BBU1NXT1JEKSA9PSBoYXNoZWQKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2xvZ2luIiwgbWV0aG9kcz1bIlBPU1QiLCAiR0VUIl0pCmRlZiBsb2dpbigpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKICAgICAgICB1c2VybmFtZSA9IHJlcXVlc3QuZm9ybS5nZXQoInVzZXJuYW1lIikKICAgICAgICBwYXNzd29yZCA9IHJlcXVlc3QuZm9ybS5nZXQoInBhc3N3b3JkIikKICAgICAgICBpZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgICAgICAgICBzZXNzaW9uWyJ1c2VyIl0gPSB1c2VybmFtZQogICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiSWRlbnRpZmlhbnQgb3UgbW90IGRlIHBhc3NlIGluY29ycmVjdCIpCiAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2xvZ2luIikKICAgICMgR0VUCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKCJsb2dpbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiKQoKCkBhcHAucm91dGUoIi93ZWIvbG9nb3V0IiwgbWV0aG9kcz1bIkdFVCJdKQpkZWYgbG9nb3V0KCk6CiAgICBzZXNzaW9uLnBvcCgidXNlciIpCiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiR0VUIl0pCmRlZiBhZG1pbl9ob21lcGFnZSgpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIG5vdCAoInVzZXIiIGluIHNlc3Npb24gYW5kIHNlc3Npb25bInVzZXIiXSA9PSBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5XRUJfVVNFUk5BTUUpKToKICAgICAgICAjIFRPRE8gbG9jYWxpemF0aW9uCiAgICAgICAgZmxhc2goIlZvdXMgYXZleiDDqXTDqSBkw6ljb25uZWN0w6kuIikKICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvbG9naW4iKQoKICAgIGNvbW1lbnRzID0gZGFvLmZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICJhZG1pbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiLAogICAgICAgIGNvbW1lbnRzPWNvbW1lbnRzLAogICAgICAgIGJhc2V1cmw9Y29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiUE9TVCJdKQpkZWYgYWRtaW5fYWN0aW9uKCk6CiAgICByc3MgPSBSc3MoKQogICAgY29tbWVudCA9IGRhby5maW5kX2NvbW1lbnRfYnlfaWQocmVxdWVzdC5mb3JtLmdldCgiY29tbWVudCIpKQogICAgaWYgY29tbWVudCBpcyBOb25lOgogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgaW50cm91dmFibGUiKQogICAgZWxpZiByZXF1ZXN0LmZvcm0uZ2V0KCJhY3Rpb24iKSA9PSAiQVBQUk9WRSI6CiAgICAgICAgZGFvLnB1Ymxpc2hfY29tbWVudChjb21tZW50KQogICAgICAgIHJzcy5nZW5lcmF0ZSgpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBwdWJsacOpIikKICAgIGVsc2U6CiAgICAgICAgZGFvLmRlbGV0ZV9jb21tZW50KGNvbW1lbnQpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBzdXBwcmltw6kiKQogICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2FkbWluIikKAAAAAAAAAADxCQAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIgUAAAAAAAAiBQAAAAAAAAAAAAAAAPC/" - ], - [ - 224, - 1, - "toggle_breakpoint", - null, - "AQAAAEQDAAAAAAAAfgMAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATAMAAAAAAABMAwAAAAAAAAAAAAAAAPC/" - ], - [ - 232, - 1, - "right_delete", - null, - "AQAAAEgDAAAAAAAASAMAAAAAAAA1AAAAaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpICAjIGJyZWFrcG9pbnQgNzE4YjY2MDQgLy8", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfQMAAAAAAABIAwAAAAAAAAAAAAAAAEJA" - ], - [ - 234, - 1, - "left_delete", - null, - "AQAAAEMDAAAAAAAAQwMAAAAAAAABAAAACg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAARAMAAAAAAABEAwAAAAAAAAAAAAAAAAAA" - ], - [ - 237, - 1, - "right_delete", - null, - "AQAAAEMDAAAAAAAAQwMAAAAAAAAEAAAAICAgIA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwMAAAAAAABHAwAAAAAAAP///////+9/" - ], - [ - 256, - 1, - "toggle_breakpoint", - null, - "AQAAAEQDAAAAAAAAfgMAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASwMAAAAAAABLAwAAAAAAAAAAAAAAAPC/" - ], - [ - 264, - 1, - "toggle_breakpoint", - null, - "AQAAAEQDAAAAAAAARAMAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IGJlMjhiNmVmIC8vCg", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfQMAAAAAAAB9AwAAAAAAAAAAAAAAAPC/" - ], - [ - 267, - 2, - "toggle_breakpoint", - null, - "AgAAADcDAAAAAAAAbQMAAAAAAAAAAAAANwMAAAAAAAA3AwAAAAAAADYAAABpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkgICMgYnJlYWtwb2ludCAzZDI2NjIzOCAvLwo", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQwMAAAAAAABDAwAAAAAAAAAAAAAAAPC/" - ], - [ - 13, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAKYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKYAAAAAAAAApgAAAAAAAAAAAAAAAADwvw" - ], - [ - 14, - 1, - "right_delete", - null, - "AQAAAK0AAAAAAAAArQAAAAAAAAABAAAALg", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAK0AAAAAAAAArQAAAAAAAAAAAAAAAADwvw" - ], - [ - 15, - 1, - "insert", - { - "characters": " " - }, - "AQAAAK0AAAAAAAAArgAAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAK0AAAAAAAAArQAAAAAAAAAAAAAAAADwvw" - ], - [ - 17, - 1, - "insert", - { - "characters": "\n//" - }, - "AwAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAC2AAAAAAAAALcAAAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" - ], - [ - 19, - 1, - "insert", - { - "characters": "#" - }, - "AgAAALUAAAAAAAAAtgAAAAAAAAAAAAAAtgAAAAAAAAC2AAAAAAAAAAIAAAAvLw", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALcAAAAAAAAAtQAAAAAAAAAAAAAAAADwvw" - ], - [ - 28, - 1, - "insert", - { - "characters": "config." - }, - "BwAAADECAAAAAAAAMgIAAAAAAAAAAAAAMgIAAAAAAAAzAgAAAAAAAAAAAAAzAgAAAAAAADQCAAAAAAAAAAAAADQCAAAAAAAANQIAAAAAAAAAAAAANQIAAAAAAAA2AgAAAAAAAAAAAAA2AgAAAAAAADcCAAAAAAAAAAAAADcCAAAAAAAAOAIAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADECAAAAAAAAMQIAAAAAAAAAAAAAAADwvw" - ], - [ - 39, - 1, - "insert", - { - "characters": " " - }, - "AgAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" - ], - [ - 40, - 2, - "left_delete", - null, - "AgAAALUAAAAAAAAAtQAAAAAAAAABAAAAILQAAAAAAAAAtAAAAAAAAAABAAAAIA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYAAAAAAAAAtgAAAAAAAAAAAAAAAADwvw" - ], - [ - 41, - 1, - "insert", - { - "characters": "as" - }, - "AgAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" - ], - [ - 42, - 2, - "left_delete", - null, - "AgAAALUAAAAAAAAAtQAAAAAAAAABAAAAc7QAAAAAAAAAtAAAAAAAAAABAAAAYQ", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYAAAAAAAAAtgAAAAAAAAAAAAAAAADwvw" - ], - [ - 43, - 1, - "insert", - { - "characters": " as" - }, - "AwAAALQAAAAAAAAAtQAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAC2AAAAAAAAALcAAAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" + "AQAAAMIAAAAAAAAAwgAAAAAAAAAWAAAAYXBzY2hlZHVsZXIgPSAiXjMuNi4zIg", + "AQAAAAAAAAABAAAA2AAAAAAAAADCAAAAAAAAAAAAAAAAAAAA" ], [ 44, 1, - "insert", - { - "characters": " cfg" - }, - "BAAAALcAAAAAAAAAuAAAAAAAAAAAAAAAuAAAAAAAAAC5AAAAAAAAAAAAAAC5AAAAAAAAALoAAAAAAAAAAAAAALoAAAAAAAAAuwAAAAAAAAAAAAAA", - "BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALcAAAAAAAAAtwAAAAAAAAAAAAAAAADwvw" - ], - [ - 10, - 1, - "insert", - { - "characters": "Config" - }, - "BwAAAK4AAAAAAAAArwAAAAAAAAAAAAAArwAAAAAAAACvAAAAAAAAAA0AAABjb25maWcgYXMgY2ZnrwAAAAAAAACwAAAAAAAAAAAAAACwAAAAAAAAALEAAAAAAAAAAAAAALEAAAAAAAAAsgAAAAAAAAAAAAAAsgAAAAAAAACzAAAAAAAAAAAAAACzAAAAAAAAALQAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACuAAAAAAAAALsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 17, - 2, - "right_delete", - null, - "AgAAADECAAAAAAAAMQIAAAAAAAAGAAAAY29uZmlnMQIAAAAAAAAxAgAAAAAAAAEAAAAu", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAxAgAAAAAAADcCAAAAAAAAAAAAAAAA8L8" - ], - [ - 21, - 1, - "insert", - { - "characters": "," - }, - "AQAAALQAAAAAAAAAtQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC0AAAAAAAAALQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 22, - 1, - "insert", - { - "characters": " ConfigPar" - }, - "CgAAALUAAAAAAAAAtgAAAAAAAAAAAAAAtgAAAAAAAAC3AAAAAAAAAAAAAAC3AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAC6AAAAAAAAALsAAAAAAAAAAAAAALsAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAAC9AAAAAAAAAAAAAAC9AAAAAAAAAL4AAAAAAAAAAAAAAL4AAAAAAAAAvwAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC1AAAAAAAAALUAAAAAAAAAAAAAAAAA8L8" - ], - [ - 23, - 1, - "insert_completion", - { - "completion": "ConfigParameter", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "ConfigParameter" - }, - "AgAAALYAAAAAAAAAtgAAAAAAAAAJAAAAQ29uZmlnUGFytgAAAAAAAADFAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC/AAAAAAAAAL8AAAAAAAAAAAAAAAAA8L8" - ], - [ - 30, - 1, - "insert", - { - "characters": ".config" - }, - "BwAAAKYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACmAAAAAAAAAKYAAAAAAAAAAAAAAAAA8L8" - ], - [ - 35, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAAAYCgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgaGFzaGxpYgppbXBvcnQgbG9nZ2luZwoKZnJvbSBmbGFzayBpbXBvcnQgZmxhc2gsIHJlZGlyZWN0LCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIHNlc3Npb24KCmZyb20gc3RhY29zeXMuY29uZi5jb25maWcgaW1wb3J0IENvbmZpZywgQ29uZmlnUGFyYW1ldGVyCiMgaW1wb3J0IENvbmZpZywgQ29uZmlnUGFyYW1ldGVyCmZyb20gc3RhY29zeXMuY29yZS5yc3MgaW1wb3J0IFJzcwpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYW8KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgphcHAuYWRkX3VybF9ydWxlKCIvd2ViIiwgZW5kcG9pbnQ9ImluZGV4IikKYXBwLmFkZF91cmxfcnVsZSgiL3dlYi8iLCBlbmRwb2ludD0iaW5kZXgiKQoKCkBhcHAuZW5kcG9pbnQoImluZGV4IikKZGVmIGluZGV4KCk6CiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCmRlZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGhhc2hlZCA9IGhhc2hsaWIuc2hhMjU2KHBhc3N3b3JkLmVuY29kZSgpKS5oZXhkaWdlc3QoKS51cHBlcigpCiAgICByZXR1cm4gKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkgPT0gdXNlcm5hbWUKICAgICAgICBhbmQgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1BBU1NXT1JEKSA9PSBoYXNoZWQKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2xvZ2luIiwgbWV0aG9kcz1bIlBPU1QiLCAiR0VUIl0pCmRlZiBsb2dpbigpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKICAgICAgICB1c2VybmFtZSA9IHJlcXVlc3QuZm9ybS5nZXQoInVzZXJuYW1lIikKICAgICAgICBwYXNzd29yZCA9IHJlcXVlc3QuZm9ybS5nZXQoInBhc3N3b3JkIikKICAgICAgICBpZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgICAgICAgICBzZXNzaW9uWyJ1c2VyIl0gPSB1c2VybmFtZQogICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiSWRlbnRpZmlhbnQgb3UgbW90IGRlIHBhc3NlIGluY29ycmVjdCIpCiAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2xvZ2luIikKICAgICMgR0VUCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKCJsb2dpbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiKQoKCkBhcHAucm91dGUoIi93ZWIvbG9nb3V0IiwgbWV0aG9kcz1bIkdFVCJdKQpkZWYgbG9nb3V0KCk6CiAgICBzZXNzaW9uLnBvcCgidXNlciIpCiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiR0VUIl0pCmRlZiBhZG1pbl9ob21lcGFnZSgpOgogICAgY29uZmlnID0gQ29uZmlnKCkKICAgIGlmIG5vdCAoCiAgICAgICAgInVzZXIiIGluIHNlc3Npb24KICAgICAgICBhbmQgc2Vzc2lvblsidXNlciJdID09IGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkKICAgICk6CiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJWb3VzIGF2ZXogw6l0w6kgZMOpY29ubmVjdMOpLiIpCiAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2xvZ2luIikKCiAgICBjb21tZW50cyA9IGRhby5maW5kX25vdF9wdWJsaXNoZWRfY29tbWVudHMoKQogICAgcmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAiYWRtaW5fIiArIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLkxBTkcpICsgIi5odG1sIiwKICAgICAgICBjb21tZW50cz1jb21tZW50cywKICAgICAgICBiYXNldXJsPWNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNJVEVfVVJMKSwKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2FkbWluIiwgbWV0aG9kcz1bIlBPU1QiXSkKZGVmIGFkbWluX2FjdGlvbigpOgogICAgcnNzID0gUnNzKCkKICAgIGNvbW1lbnQgPSBkYW8uZmluZF9jb21tZW50X2J5X2lkKHJlcXVlc3QuZm9ybS5nZXQoImNvbW1lbnQiKSkKICAgIGlmIGNvbW1lbnQgaXMgTm9uZToKICAgICAgICAjIFRPRE8gbG9jYWxpemF0aW9uCiAgICAgICAgZmxhc2goIkNvbW1lbnRhaXJlIGludHJvdXZhYmxlIikKICAgIGVsaWYgcmVxdWVzdC5mb3JtLmdldCgiYWN0aW9uIikgPT0gIkFQUFJPVkUiOgogICAgICAgIGRhby5wdWJsaXNoX2NvbW1lbnQoY29tbWVudCkKICAgICAgICByc3MuZ2VuZXJhdGUoKQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgcHVibGnDqSIpCiAgICBlbHNlOgogICAgICAgIGRhby5kZWxldGVfY29tbWVudChjb21tZW50KQogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgc3VwcHJpbcOpIikKICAgIHJldHVybiByZWRpcmVjdCgiL3dlYi9hZG1pbiIpCgAAAAAAAAAAEwoAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACnAAAAAAAAAK0AAAAAAAAAAAAAAAAA8L8" - ], - [ - 39, - 1, "left_delete", null, - "AQAAALUAAAAAAAAAtQAAAAAAAAAIAAAAQ29uZmlnLCA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC1AAAAAAAAAL0AAAAAAAAAAAAAAAAA8L8" - ], - [ - 41, - 1, - "insert", - { - "characters": "\nfrom" - }, - "BQAAAJMAAAAAAAAAlAAAAAAAAAAAAAAAlAAAAAAAAACVAAAAAAAAAAAAAACVAAAAAAAAAJYAAAAAAAAAAAAAAJYAAAAAAAAAlwAAAAAAAAAAAAAAlwAAAAAAAACYAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACTAAAAAAAAAJMAAAAAAAAAAAAAAACQckA" - ], - [ - 42, - 1, - "insert", - { - "characters": " stacosys" - }, - "CQAAAJgAAAAAAAAAmQAAAAAAAAAAAAAAmQAAAAAAAACaAAAAAAAAAAAAAACaAAAAAAAAAJsAAAAAAAAAAAAAAJsAAAAAAAAAnAAAAAAAAAAAAAAAnAAAAAAAAACdAAAAAAAAAAAAAACdAAAAAAAAAJ4AAAAAAAAAAAAAAJ4AAAAAAAAAnwAAAAAAAAAAAAAAnwAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAAKEAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACYAAAAAAAAAJgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 43, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAKEAAAAAAAAAogAAAAAAAAAAAAAAogAAAAAAAACjAAAAAAAAAAAAAACjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAACmAAAAAAAAAAAAAACmAAAAAAAAAKcAAAAAAAAAAAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAChAAAAAAAAAKEAAAAAAAAAAAAAAAAA8L8" - ], - [ - 44, - 1, - "insert", - { - "characters": " core" - }, - "BQAAAKgAAAAAAAAAqQAAAAAAAAAAAAAAqQAAAAAAAACqAAAAAAAAAAAAAACqAAAAAAAAAKsAAAAAAAAAAAAAAKsAAAAAAAAArAAAAAAAAAAAAAAArAAAAAAAAACtAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 49, - 1, - "insert", - { - "characters": "re" - }, - "AwAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAIAAABuZr8AAAAAAAAAwAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC+AAAAAAAAAMAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 56, - 1, - "right_delete", - null, - "AQAAAFMCAAAAAAAAUwIAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAgAAAAAAAFMCAAAAAAAAAAAAAAAAQkA" - ], - [ - 58, - 1, - "left_delete", - null, - "AQAAAE4CAAAAAAAATgIAAAAAAAABAAAACg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABPAgAAAAAAAE8CAAAAAAAAAAAAAAAAAAA" - ], - [ - 61, - 1, - "insert", - { - "characters": "core." - }, - "BQAAAKsCAAAAAAAArAIAAAAAAAAAAAAArAIAAAAAAACtAgAAAAAAAAAAAACtAgAAAAAAAK4CAAAAAAAAAAAAAK4CAAAAAAAArwIAAAAAAAAAAAAArwIAAAAAAACwAgAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAgAAAAAAAKsCAAAAAAAAAAAAAAAAUkA" - ], - [ - 64, - 1, - "insert", - { - "characters": "core." - }, - "BQAAAPECAAAAAAAA8gIAAAAAAAAAAAAA8gIAAAAAAADzAgAAAAAAAAAAAADzAgAAAAAAAPQCAAAAAAAAAAAAAPQCAAAAAAAA9QIAAAAAAAAAAAAA9QIAAAAAAAD2AgAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADxAgAAAAAAAPECAAAAAAAAAAAAAAAA8L8" - ], - [ - 68, - 1, - "right_delete", - null, - "AQAAAHQDAAAAAAAAdAMAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFAwAAAAAAAHQDAAAAAAAAAAAAAAAAQkA" - ], - [ - 70, - 1, - "left_delete", - null, - "AQAAAG8DAAAAAAAAbwMAAAAAAAABAAAACg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABwAwAAAAAAAHADAAAAAAAAAAAAAAAAAAA" + "AQAAAMEAAAAAAAAAwQAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAwgAAAAAAAADCAAAAAAAAAAAAAAAAAPC/" ], [ 74, 1, "insert", { - "characters": "o" + "characters": "7" }, - "AQAAABsFAAAAAAAAHAUAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAbBQAAAAAAABsFAAAAAAAAAAAAAAAA8L8" + "AgAAAC4BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvAQAAAAAAAAEAAAA0", + "AQAAAAAAAAABAAAALgEAAAAAAAAvAQAAAAAAAAAAAAAAAPC/" ], [ - 75, - 1, - "left_delete", - null, - "AQAAABsFAAAAAAAAGwUAAAAAAAABAAAAbw", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAcBQAAAAAAABwFAAAAAAAAAAAAAAAA8L8" - ], - [ - 76, - 1, - "insert", - { - "characters": "core." - }, - "BQAAABsFAAAAAAAAHAUAAAAAAAAAAAAAHAUAAAAAAAAdBQAAAAAAAAAAAAAdBQAAAAAAAB4FAAAAAAAAAAAAAB4FAAAAAAAAHwUAAAAAAAAAAAAAHwUAAAAAAAAgBQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAbBQAAAAAAABsFAAAAAAAAAAAAAAAA8L8" - ], - [ - 82, + 78, 1, "right_delete", null, - "AQAAAAcGAAAAAAAABwYAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAYBgAAAAAAAAcGAAAAAAAAAAAAAAAAQkA" - ], - [ - 84, - 1, - "left_delete", - null, - "AQAAAAIGAAAAAAAAAgYAAAAAAAABAAAACg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAADBgAAAAAAAAMGAAAAAAAAAAAAAAAAAAA" - ], - [ - 89, - 1, - "insert", - { - "characters": "core." - }, - "BQAAAE0GAAAAAAAATgYAAAAAAAAAAAAATgYAAAAAAABPBgAAAAAAAAAAAABPBgAAAAAAAFAGAAAAAAAAAAAAAFAGAAAAAAAAUQYAAAAAAAAAAAAAUQYAAAAAAABSBgAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABNBgAAAAAAAE0GAAAAAAAAAAAAAAAA8L8" - ], - [ - 94, - 1, - "insert", - { - "characters": "core." - }, - "BQAAAFAHAAAAAAAAUQcAAAAAAAAAAAAAUQcAAAAAAABSBwAAAAAAAAAAAABSBwAAAAAAAFMHAAAAAAAAAAAAAFMHAAAAAAAAVAcAAAAAAAAAAAAAVAcAAAAAAABVBwAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABQBwAAAAAAAFAHAAAAAAAAAAAAAAAA8L8" - ], - [ - 98, - 1, - "insert", - { - "characters": "core." - }, - "BQAAAKwHAAAAAAAArQcAAAAAAAAAAAAArQcAAAAAAACuBwAAAAAAAAAAAACuBwAAAAAAAK8HAAAAAAAAAAAAAK8HAAAAAAAAsAcAAAAAAAAAAAAAsAcAAAAAAACxBwAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsBwAAAAAAAKwHAAAAAAAAAAAAAAAA8L8" - ], - [ - 109, - 1, - "right_delete", - null, - "AQAAAG8DAAAAAAAAbwMAAAAAAAAEAAAAICAgIA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABvAwAAAAAAAHMDAAAAAAAA////////738" - ], - [ - 113, - 1, - "left_delete", - null, - "AQAAAG4DAAAAAAAAbgMAAAAAAAABAAAAOg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABvAwAAAAAAAG8DAAAAAAAAAAAAAAAAW0A" - ], - [ - 114, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAG4DAAAAAAAAbwMAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABuAwAAAAAAAG4DAAAAAAAAAAAAAAAA8L8" - ], - [ - 124, - 1, - "paste", - null, - "AgAAAK4AAAAAAAAA5QAAAAAAAAAAAAAA5QAAAAAAAADlAAAAAAAAADAAAABmcm9tIHN0YWNvc3lzLmNvcmUuY29uZmlnIGltcG9ydCBDb25maWdQYXJhbWV0ZXI", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADeAAAAAAAAAK4AAAAAAAAAAAAAAAAAAAA" - ], - [ - 5, - 1, - "insert", - { - "characters": ".core" - }, - "BQAAAKEAAAAAAAAAogAAAAAAAAAAAAAAogAAAAAAAACjAAAAAAAAAAAAAACjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAACmAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAoQAAAAAAAAChAAAAAAAAAAAAAAAAAPC/" - ], - [ - 8, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAK4AAAAAAAAArwAAAAAAAAAAAAAArwAAAAAAAACvAAAAAAAAAAQAAABjb3JlrwAAAAAAAACwAAAAAAAAAAAAAACwAAAAAAAAALEAAAAAAAAAAAAAALEAAAAAAAAAsgAAAAAAAAAAAAAAsgAAAAAAAACzAAAAAAAAAAAAAACzAAAAAAAAALQAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsgAAAAAAAACuAAAAAAAAAAAAAAAAAPC/" - ], - [ - 22, - 1, - "right_delete", - null, - "AQAAALkCAAAAAAAAuQIAAAAAAAAFAAAAY29yZS4", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAuQIAAAAAAAC+AgAAAAAAAAAAAAAAAPC/" - ], - [ - 28, - 1, - "right_delete", - null, - "AQAAAPoCAAAAAAAA+gIAAAAAAAAFAAAAY29yZS4", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA+gIAAAAAAAD/AgAAAAAAAAAAAAAAAPC/" - ], - [ - 35, - 1, - "right_delete", - null, - "AQAAABsFAAAAAAAAGwUAAAAAAAAFAAAAY29yZS4", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAGwUAAAAAAAAgBQAAAAAAAAAAAAAAAPC/" - ], - [ - 40, - 1, - "right_delete", - null, - "AQAAAEgGAAAAAAAASAYAAAAAAAAFAAAAY29yZS4", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATQYAAAAAAABIBgAAAAAAAAAAAAAAAPC/" - ], - [ - 44, - 1, - "right_delete", - null, - "AQAAAEYHAAAAAAAARgcAAAAAAAAFAAAAY29yZS4", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASwcAAAAAAABGBwAAAAAAAAAAAAAAAPC/" - ], - [ - 48, - 1, - "right_delete", - null, - "AQAAAJ0HAAAAAAAAnQcAAAAAAAAFAAAAY29yZS4", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAogcAAAAAAACdBwAAAAAAAAAAAAAAAPC/" - ], - [ - 55, - 2, - "right_delete", - null, - "AgAAAO4AAAAAAAAA7gAAAAAAAAAgAAAAIyBpbXBvcnQgQ29uZmlnLCBDb25maWdQYXJhbWV0ZXLuAAAAAAAAAO4AAAAAAAAAAQAAAAo", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADgEAAAAAAADuAAAAAAAAAAAAAAAAAAAA" - ], - [ - 5, - 1, - "insert", - { - "characters": "service" - }, - "CAAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACjAAAAAAAAAAQAAABjb3JlowAAAAAAAACkAAAAAAAAAAAAAACkAAAAAAAAAKUAAAAAAAAAAAAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAACnAAAAAAAAAKgAAAAAAAAAAAAAAKgAAAAAAAAAqQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKIAAAAAAAAApgAAAAAAAAAAAAAAAADwvw" - ], - [ - 9, - 1, - "insert", - { - "characters": "service" - }, - "CAAAAMYAAAAAAAAAxwAAAAAAAAAAAAAAxwAAAAAAAADHAAAAAAAAAAQAAABjb3JlxwAAAAAAAADIAAAAAAAAAAAAAADIAAAAAAAAAMkAAAAAAAAAAAAAAMkAAAAAAAAAygAAAAAAAAAAAAAAygAAAAAAAADLAAAAAAAAAAAAAADLAAAAAAAAAMwAAAAAAAAAAAAAAMwAAAAAAAAAzQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMoAAAAAAAAAxgAAAAAAAAAAAAAAAADwvw" - ], - [ - 12, - 1, - "insert", - { - "characters": "," - }, - "AQAAALcAAAAAAAAAuAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALcAAAAAAAAAtwAAAAAAAAAAAAAAAADwvw" - ], - [ - 13, - 1, - "insert", - { - "characters": " rss" - }, - "BAAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAC6AAAAAAAAALsAAAAAAAAAAAAAALsAAAAAAAAAvAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAADwvw" - ], - [ - 16, - 1, - "right_delete", - null, - "AQAAAPkAAAAAAAAA+QAAAAAAAAAhAAAAZnJvbSBzdGFjb3N5cy5jb3JlLnJzcyBpbXBvcnQgUnNz", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABoBAAAAAAAA+QAAAAAAAAAAAAAAAAAAAA" - ], - [ - 18, - 2, - "right_delete", - null, - "AgAAAPgAAAAAAAAA+AAAAAAAAAABAAAACvgAAAAAAAAA+AAAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPgAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAA" - ], - [ - 23, - 1, - "right_delete", - null, - "AQAAANUHAAAAAAAA1QcAAAAAAAALAAAAcnNzID0gUnNzKCk", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOAHAAAAAAAA1QcAAAAAAAAAAAAAAABCQA" - ], - [ - 25, - 1, - "left_delete", - null, - "AQAAANAHAAAAAAAA0AcAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANEHAAAAAAAA0QcAAAAAAAAAAAAAAAAAAA" - ], - [ - 28, - 1, - "revert", - null, - "BAAAAAAAAAAAAAAAAAAAAAAAAAC6CQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgaGFzaGxpYgppbXBvcnQgbG9nZ2luZwoKZnJvbSBmbGFzayBpbXBvcnQgZmxhc2gsIHJlZGlyZWN0LCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIHNlc3Npb24KCmZyb20gc3RhY29zeXMuc2VydmljZSBpbXBvcnQgY29uZmlnLCByc3MKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ1BhcmFtZXRlcgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYW8KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgphcHAuYWRkX3VybF9ydWxlKCIvd2ViIiwgZW5kcG9pbnQ9ImluZGV4IikKYXBwLmFkZF91cmxfcnVsZSgiL3dlYi8iLCBlbmRwb2ludD0iaW5kZXgiKQoKCkBhcHAuZW5kcG9pbnQoImluZGV4IikKZGVmIGluZGV4KCk6CiAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvYWRtaW4iKQoKCmRlZiBpc19sb2dpbl9vayh1c2VybmFtZSwgcGFzc3dvcmQpOiAgICAKICAgIGhhc2hlZCA9IGhhc2hsaWIuc2hhMjU2KHBhc3N3b3JkLmVuY29kZSgpKS5oZXhkaWdlc3QoKS51cHBlcigpCiAgICByZXR1cm4gKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLldFQl9VU0VSTkFNRSkgPT0gdXNlcm5hbWUKICAgICAgICBhbmQgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1BBU1NXT1JEKSA9PSBoYXNoZWQKICAgICkKCgpAYXBwLnJvdXRlKCIvd2ViL2xvZ2luIiwgbWV0aG9kcz1bIlBPU1QiLCAiR0VUIl0pCmRlZiBsb2dpbigpOgogICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gIlBPU1QiOgogICAgICAgIHVzZXJuYW1lID0gcmVxdWVzdC5mb3JtLmdldCgidXNlcm5hbWUiKQogICAgICAgIHBhc3N3b3JkID0gcmVxdWVzdC5mb3JtLmdldCgicGFzc3dvcmQiKQogICAgICAgIGlmIGlzX2xvZ2luX29rKHVzZXJuYW1lLCBwYXNzd29yZCk6CiAgICAgICAgICAgIHNlc3Npb25bInVzZXIiXSA9IHVzZXJuYW1lCiAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCgiL3dlYi9hZG1pbiIpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJJZGVudGlmaWFudCBvdSBtb3QgZGUgcGFzc2UgaW5jb3JyZWN0IikKICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvbG9naW4iKQogICAgIyBHRVQKICAgIHJldHVybiByZW5kZXJfdGVtcGxhdGUoImxvZ2luXyIgKyBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5MQU5HKSArICIuaHRtbCIpCgoKQGFwcC5yb3V0ZSgiL3dlYi9sb2dvdXQiLCBtZXRob2RzPVsiR0VUIl0pCmRlZiBsb2dvdXQoKToKICAgIHNlc3Npb24ucG9wKCJ1c2VyIikKICAgIHJldHVybiByZWRpcmVjdCgiL3dlYi9hZG1pbiIpCgoKQGFwcC5yb3V0ZSgiL3dlYi9hZG1pbiIsIG1ldGhvZHM9WyJHRVQiXSkKZGVmIGFkbWluX2hvbWVwYWdlKCk6ICAgIAogICAgaWYgbm90ICgKICAgICAgICAidXNlciIgaW4gc2Vzc2lvbgogICAgICAgIGFuZCBzZXNzaW9uWyJ1c2VyIl0gPT0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuV0VCX1VTRVJOQU1FKQogICAgKToKICAgICAgICAjIFRPRE8gbG9jYWxpemF0aW9uCiAgICAgICAgZmxhc2goIlZvdXMgYXZleiDDqXTDqSBkw6ljb25uZWN0w6kuIikKICAgICAgICByZXR1cm4gcmVkaXJlY3QoIi93ZWIvbG9naW4iKQoKICAgIGNvbW1lbnRzID0gZGFvLmZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpCiAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICJhZG1pbl8iICsgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuTEFORykgKyAiLmh0bWwiLAogICAgICAgIGNvbW1lbnRzPWNvbW1lbnRzLAogICAgICAgIGJhc2V1cmw9Y29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQoKCkBhcHAucm91dGUoIi93ZWIvYWRtaW4iLCBtZXRob2RzPVsiUE9TVCJdKQpkZWYgYWRtaW5fYWN0aW9uKCk6ICAgIAogICAgY29tbWVudCA9IGRhby5maW5kX2NvbW1lbnRfYnlfaWQocmVxdWVzdC5mb3JtLmdldCgiY29tbWVudCIpKQogICAgaWYgY29tbWVudCBpcyBOb25lOgogICAgICAgICMgVE9ETyBsb2NhbGl6YXRpb24KICAgICAgICBmbGFzaCgiQ29tbWVudGFpcmUgaW50cm91dmFibGUiKQogICAgZWxpZiByZXF1ZXN0LmZvcm0uZ2V0KCJhY3Rpb24iKSA9PSAiQVBQUk9WRSI6CiAgICAgICAgZGFvLnB1Ymxpc2hfY29tbWVudChjb21tZW50KQogICAgICAgIHJzcy5nZW5lcmF0ZSgpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBwdWJsacOpIikKICAgIGVsc2U6CiAgICAgICAgZGFvLmRlbGV0ZV9jb21tZW50KGNvbW1lbnQpCiAgICAgICAgIyBUT0RPIGxvY2FsaXphdGlvbgogICAgICAgIGZsYXNoKCJDb21tZW50YWlyZSBzdXBwcmltw6kiKQogICAgcmV0dXJuIHJlZGlyZWN0KCIvd2ViL2FkbWluIikKAAAAAAAAAACoCQAAAAAAAAAAAAAAAAAAAAAAAKgJAAAAAAAAAAAAAAAAAAAAAAAAqAkAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANAHAAAAAAAA0AcAAAAAAAAAAAAAAADwvw" - ] - ] - }, - { - "file": "tests/test_config.py", - "settings": - { - "buffer_size": 1382, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 7, - 1, - "insert", - { - "characters": "service" - }, - "CAAAAEoAAAAAAAAASwAAAAAAAAAAAAAASwAAAAAAAABLAAAAAAAAAAQAAABjb25mSwAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAE0AAAAAAAAAAAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAASgAAAAAAAAAAAAAAAADwvw" - ], - [ - 11, - 1, - "insert", - { - "characters": "uration" - }, - "BwAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAAAAAAF4AAAAAAAAAXwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" - ], - [ - 15, - 2, - "right_delete", - null, - "AgAAAGcAAAAAAAAAZwAAAAAAAAAHAAAAQ29uZmlnLGcAAAAAAAAAZwAAAAAAAAABAAAAIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGcAAAAAAAAAbgAAAAAAAAAAAAAAAADwvw" - ], - [ - 17, - 1, - "insert", - { - "characters": "\nimport" - }, - "BwAAADsAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAA9AAAAAAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEEAAAAAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADsAAAAAAAAAOwAAAAAAAAAAAAAAADB4QA" - ], - [ - 18, - 1, - "insert", - { - "characters": " st" - }, - "AwAAAEIAAAAAAAAAQwAAAAAAAAAAAAAAQwAAAAAAAABEAAAAAAAAAAAAAABEAAAAAAAAAEUAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEIAAAAAAAAAQgAAAAAAAAAAAAAAAADwvw" - ], - [ - 19, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"stacosys\",\"kind\":9,\"sortText\":\"02.9999.stacosys\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "stacosys" - }, - "AgAAAEMAAAAAAAAAQwAAAAAAAAACAAAAc3RDAAAAAAAAAEsAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEUAAAAAAAAARQAAAAAAAAAAAAAAAADwvw" - ], - [ - 20, - 1, - "insert", - { - "characters": ".core" - }, - "BQAAAEsAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAABNAAAAAAAAAAAAAABNAAAAAAAAAE4AAAAAAAAAAAAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEsAAAAAAAAASwAAAAAAAAAAAAAAAADwvw" - ], - [ - 21, - 4, - "left_delete", - null, - "BAAAAE8AAAAAAAAATwAAAAAAAAABAAAAZU4AAAAAAAAATgAAAAAAAAABAAAAck0AAAAAAAAATQAAAAAAAAABAAAAb0wAAAAAAAAATAAAAAAAAAABAAAAYw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFAAAAAAAAAAUAAAAAAAAAAAAAAAAADwvw" - ], - [ - 22, - 1, - "insert", - { - "characters": "ser" - }, - "AwAAAEwAAAAAAAAATQAAAAAAAAAAAAAATQAAAAAAAABOAAAAAAAAAAAAAABOAAAAAAAAAE8AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEwAAAAAAAAATAAAAAAAAAAAAAAAAADwvw" - ], - [ - 23, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"service\",\"kind\":9,\"sortText\":\"02.9999.service\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "service" - }, - "AgAAAEwAAAAAAAAATAAAAAAAAAADAAAAc2VyTAAAAAAAAABTAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" - ], - [ - 24, - 1, - "insert", - { - "characters": "." - }, - "AQAAAFMAAAAAAAAAVAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFMAAAAAAAAAUwAAAAAAAAAAAAAAAADwvw" - ], - [ - 27, - 1, - "insert", - { - "characters": "from" - }, - "BQAAADwAAAAAAAAAPQAAAAAAAAAAAAAAPQAAAAAAAAA9AAAAAAAAAAYAAABpbXBvcnQ9AAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAABAAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADwAAAAAAAAAQgAAAAAAAAAAAAAAAADwvw" - ], - [ - 28, - 1, - "insert", - { - "characters": " " - }, - "AQAAAEAAAAAAAAAAQQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAADwvw" - ], - [ - 31, - 1, - "left_delete", - null, - "AQAAAEEAAAAAAAAAQQAAAAAAAAABAAAAIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEIAAAAAAAAAQgAAAAAAAAAAAAAAAADwvw" - ], - [ - 33, - 1, - "left_delete", - null, - "AQAAAFEAAAAAAAAAUQAAAAAAAAABAAAALg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAUgAAAAAAAAAAAAAAAADwvw" - ], - [ - 34, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABWAAAAAAAAAAAAAABWAAAAAAAAAFcAAAAAAAAAAAAAAFcAAAAAAAAAWAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFEAAAAAAAAAUQAAAAAAAAAAAAAAAADwvw" - ], - [ - 35, - 1, - "insert", - { - "characters": " " - }, - "AQAAAFgAAAAAAAAAWQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" - ], - [ - 39, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"config\",\"data\":{\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"config\",\"position\":{\"character\":29,\"line\":5},\"filePath\":\"/home/yannic/work/stacosys/tests/test_config.py\"},\"kind\":6,\"sortText\":\"09.9999.config\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "config" - }, - "AQAAAFkAAAAAAAAAXwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" - ], - [ - 58, - 1, - "right_delete", - null, - "AQAAADkBAAAAAAAAOQEAAAAAAAAUAAAAc2VsZi5jb25mID0gQ29uZmlnKCk", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0BAAAAAAAAOQEAAAAAAAAAAAAAAABSQA" - ], - [ - 60, - 1, - "left_delete", - null, - "AQAAADABAAAAAAAAMAEAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADEBAAAAAAAAMQEAAAAAAAAAAAAAAAAAAA" - ], - [ - 64, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAEEBAAAAAAAAQgEAAAAAAAAAAAAAQgEAAAAAAABCAQAAAAAAAAkAAABzZWxmLmNvbmZCAQAAAAAAAEMBAAAAAAAAAAAAAEMBAAAAAAAARAEAAAAAAAAAAAAARAEAAAAAAABFAQAAAAAAAAAAAABFAQAAAAAAAEYBAAAAAAAAAAAAAEYBAAAAAAAARwEAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEoBAAAAAAAAQQEAAAAAAAAAAAAAAADwvw" - ], - [ - 68, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAI0BAAAAAAAAjgEAAAAAAAAAAAAAjgEAAAAAAACOAQAAAAAAAAkAAABzZWxmLmNvbmaOAQAAAAAAAI8BAAAAAAAAAAAAAI8BAAAAAAAAkAEAAAAAAAAAAAAAkAEAAAAAAACRAQAAAAAAAAAAAACRAQAAAAAAAJIBAAAAAAAAAAAAAJIBAAAAAAAAkwEAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJYBAAAAAAAAjQEAAAAAAAAAAAAAAABSQA" - ], - [ - 79, - 1, - "paste", - null, - "AgAAAPsBAAAAAAAAAQIAAAAAAAAAAAAAAQIAAAAAAAABAgAAAAAAAAkAAABzZWxmLmNvbmY", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPsBAAAAAAAABAIAAAAAAAAAAAAAAADwvw" - ], - [ - 84, - 1, - "paste", - null, - "AgAAAGkCAAAAAAAAbwIAAAAAAAAAAAAAbwIAAAAAAABvAgAAAAAAAAkAAABzZWxmLmNvbmY", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHICAAAAAAAAaQIAAAAAAAAAAAAAAADwvw" - ], - [ - 89, - 1, - "paste", - null, - "AgAAANACAAAAAAAA1gIAAAAAAAAAAAAA1gIAAAAAAADWAgAAAAAAAAkAAABzZWxmLmNvbmY", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANACAAAAAAAA2QIAAAAAAAAAAAAAAADwvw" - ], - [ - 94, - 1, - "paste", - null, - "AgAAACEDAAAAAAAAJwMAAAAAAAAAAAAAJwMAAAAAAAAnAwAAAAAAAAkAAABzZWxmLmNvbmY", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACoDAAAAAAAAIQMAAAAAAAAAAAAAAADwvw" - ], - [ - 99, - 1, - "paste", - null, - "AgAAAIMDAAAAAAAAiQMAAAAAAAAAAAAAiQMAAAAAAACJAwAAAAAAAAkAAABzZWxmLmNvbmY", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMDAAAAAAAAjAMAAAAAAAAAAAAAAADwvw" - ], - [ - 145, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAM0DAAAAAAAAzgMAAAAAAAAAAAAAzgMAAAAAAADOAwAAAAAAAAkAAABzZWxmLmNvbmbOAwAAAAAAAM8DAAAAAAAAAAAAAM8DAAAAAAAA0AMAAAAAAAAAAAAA0AMAAAAAAADRAwAAAAAAAAAAAADRAwAAAAAAANIDAAAAAAAAAAAAANIDAAAAAAAA0wMAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANYDAAAAAAAAzQMAAAAAAAAAAAAAAADwvw" - ], - [ - 150, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAIIEAAAAAAAAgwQAAAAAAAAAAAAAgwQAAAAAAACDBAAAAAAAAAkAAABzZWxmLmNvbmaDBAAAAAAAAIQEAAAAAAAAAAAAAIQEAAAAAAAAhQQAAAAAAAAAAAAAhQQAAAAAAACGBAAAAAAAAAAAAACGBAAAAAAAAIcEAAAAAAAAAAAAAIcEAAAAAAAAiAQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIIEAAAAAAAAiwQAAAAAAAAAAAAAAADwvw" - ], - [ - 155, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAK8EAAAAAAAAsAQAAAAAAAAAAAAAsAQAAAAAAACwBAAAAAAAAAkAAABzZWxmLmNvbmawBAAAAAAAALEEAAAAAAAAAAAAALEEAAAAAAAAsgQAAAAAAAAAAAAAsgQAAAAAAACzBAAAAAAAAAAAAACzBAAAAAAAALQEAAAAAAAAAAAAALQEAAAAAAAAtQQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALgEAAAAAAAArwQAAAAAAAAAAAAAAABSQA" - ], - [ - 160, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAPcEAAAAAAAA+AQAAAAAAAAAAAAA+AQAAAAAAAD4BAAAAAAAAAkAAABzZWxmLmNvbmb4BAAAAAAAAPkEAAAAAAAAAAAAAPkEAAAAAAAA+gQAAAAAAAAAAAAA+gQAAAAAAAD7BAAAAAAAAAAAAAD7BAAAAAAAAPwEAAAAAAAAAAAAAPwEAAAAAAAA/QQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPcEAAAAAAAAAAUAAAAAAAAAAAAAAADwvw" - ], - [ - 164, - 1, - "insert", - { - "characters": "config" - }, - "BwAAADUFAAAAAAAANgUAAAAAAAAAAAAANgUAAAAAAAA2BQAAAAAAAAkAAABzZWxmLmNvbmY2BQAAAAAAADcFAAAAAAAAAAAAADcFAAAAAAAAOAUAAAAAAAAAAAAAOAUAAAAAAAA5BQAAAAAAAAAAAAA5BQAAAAAAADoFAAAAAAAAAAAAADoFAAAAAAAAOwUAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADUFAAAAAAAAPgUAAAAAAAAAAAAAAADwvw" - ] - ] - }, - { - "file": "Dockerfile", - "settings": - { - "buffer_size": 716, - "line_ending": "Unix" - } - }, - { - "file": "tests/test_api.py", - "settings": - { - "buffer_size": 1634, - "encoding": "UTF-8", - "line_ending": "Unix" - } - }, - { - "file": "stacosys/service/__init__.py", - "settings": - { - "buffer_size": 180, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 4, - 1, - "insert", - { - "characters": "from" - }, - "BAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAUQAAAAAAAABRAAAAAAAAAAAAAAAAAPC/" - ], - [ - 5, - 1, - "insert", - { - "characters": " .maile" - }, - "BwAAAFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAABXAAAAAAAAAFgAAAAAAAAAAAAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAFsAAAAAAAAAXAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" - ], - [ - 6, - 1, - "insert", - { - "characters": "r" - }, - "AQAAAFwAAAAAAAAAXQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXAAAAAAAAABcAAAAAAAAAAAAAAAAAPC/" - ], - [ - 7, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" - ], - [ - 8, - 1, - "insert", - { - "characters": " Mailer" - }, - "BwAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABpAAAAAAAAAAAAAABpAAAAAAAAAGoAAAAAAAAAAAAAAGoAAAAAAAAAawAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAPC/" - ], - [ - 9, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAGsAAAAAAAAAbAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 11, - 1, - "insert", - { - "characters": "mailer" - }, - "BgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAAAA" - ], - [ - 12, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" - ], - [ - 13, - 1, - "insert", - { - "characters": " " - }, - "AQAAAIcAAAAAAAAAiAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" - ], - [ - 17, - 2, - "left_delete", - null, - "AgAAAFwAAAAAAAAAXAAAAAAAAAABAAAAclsAAAAAAAAAWwAAAAAAAAABAAAAZQ", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" - ], - [ - 22, - 1, - "insert", - { - "characters": "Mailer" - }, - "BgAAAIYAAAAAAAAAhwAAAAAAAAAAAAAAhwAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIkAAAAAAAAAAAAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" - ], - [ - 23, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAIwAAAAAAAAAjgAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjAAAAAAAAACMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 33, - 1, - "insert", - { - "characters": "\nfrom" - }, - "BQAAAGkAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABuAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" - ], - [ - 34, - 1, - "insert", - { - "characters": " .rss" - }, - "BQAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHEAAAAAAAAAAAAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbgAAAAAAAABuAAAAAAAAAAAAAAAAAPC/" - ], - [ - 35, - 1, - "insert", - { - "characters": "feed" - }, - "BAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB1AAAAAAAAAAAAAAB1AAAAAAAAAHYAAAAAAAAAAAAAAHYAAAAAAAAAdwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 36, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAHcAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAB5AAAAAAAAAAAAAAB5AAAAAAAAAHoAAAAAAAAAAAAAAHoAAAAAAAAAewAAAAAAAAAAAAAAewAAAAAAAAB8AAAAAAAAAAAAAAB8AAAAAAAAAH0AAAAAAAAAAAAAAH0AAAAAAAAAfgAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdwAAAAAAAAB3AAAAAAAAAAAAAAAAAPC/" - ], - [ - 37, - 1, - "insert", - { - "characters": " " - }, - "AQAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfgAAAAAAAAB+AAAAAAAAAAAAAAAAAPC/" - ], - [ - 38, - 1, - "insert", - { - "characters": "Rss" - }, - "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 41, - 1, - "insert", - { - "characters": "\nrss" - }, - "BAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAAqAAAAAAAAACpAAAAAAAAAAAAAACpAAAAAAAAAKoAAAAAAAAAAAAAAKoAAAAAAAAAqwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApwAAAAAAAACnAAAAAAAAAAAAAAAAAGtA" - ], - [ - 42, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAKsAAAAAAAAArAAAAAAAAAAAAAAArAAAAAAAAACtAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAqwAAAAAAAACrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 43, - 1, - "insert", - { - "characters": " Rss" - }, - "BAAAAK0AAAAAAAAArgAAAAAAAAAAAAAArgAAAAAAAACvAAAAAAAAAAAAAACvAAAAAAAAALAAAAAAAAAAAAAAALAAAAAAAAAAsQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArQAAAAAAAACtAAAAAAAAAAAAAAAAAPC/" - ], - [ - 44, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAALEAAAAAAAAAswAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsQAAAAAAAACxAAAAAAAAAAAAAAAAAPC/" - ], - [ - 9, - 1, - "revert", - null, - "BAAAAAAAAAAAAAAAAAAAAAAAAACzAAAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIC5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWcKZnJvbSAubWFpbCBpbXBvcnQgTWFpbGVyCmZyb20gLnJzc2ZlZWQgaW1wb3J0IFJzcwoKY29uZmlnID0gQ29uZmlnKCkKbWFpbGVyID0gTWFpbGVyKCkKcnNzID0gUnNzKCkAAAAAAAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAC0AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAlQAAAAAAAAAAAAAAAADwvw" - ] - ] - }, - { - "file": "stacosys/interface/form.py", - "settings": - { - "buffer_size": 2659, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 7, - 1, - "right_delete", - null, - "AQAAAJ0AAAAAAAAAnQAAAAAAAAAHAAAAQ29uZmlnLA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdAAAAAAAAAKQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 9, - 1, - "insert", - { - "characters": "\nfrom" - }, - "BQAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAAAAAAAfwAAAAAAAACAAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB7AAAAAAAAAHsAAAAAAAAAAAAAAACQckA" - ], - [ - 10, - 1, - "insert", - { - "characters": " stacosys" - }, - "CQAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAAAAAAIYAAAAAAAAAhwAAAAAAAAAAAAAAhwAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIkAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 11, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAAjQAAAAAAAACOAAAAAAAAAAAAAACOAAAAAAAAAI8AAAAAAAAAAAAAAI8AAAAAAAAAkAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACJAAAAAAAAAIkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 12, - 1, - "insert", - { - "characters": " core" - }, - "BQAAAJAAAAAAAAAAkQAAAAAAAAAAAAAAkQAAAAAAAACSAAAAAAAAAAAAAACSAAAAAAAAAJMAAAAAAAAAAAAAAJMAAAAAAAAAlAAAAAAAAAAAAAAAlAAAAAAAAACVAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACQAAAAAAAAAJAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 19, - 1, - "insert", - { - "characters": "core" - }, - "BQAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAAClAAAAAAAAAAQAAABjb25mpQAAAAAAAACmAAAAAAAAAAAAAACmAAAAAAAAAKcAAAAAAAAAAAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACkAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 24, - 1, - "right_delete", - null, - "AQAAAJ8BAAAAAAAAnwEAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACwAQAAAAAAAJ8BAAAAAAAAAAAAAAAAQkA" - ], - [ - 26, - 1, - "left_delete", - null, - "AQAAAJoBAAAAAAAAmgEAAAAAAAABAAAACg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAQAAAAAAAJsBAAAAAAAAAAAAAAAAAAA" - ], - [ - 31, - 1, - "insert", - { - "characters": "core." - }, - "BQAAALgFAAAAAAAAuQUAAAAAAAAAAAAAuQUAAAAAAAC6BQAAAAAAAAAAAAC6BQAAAAAAALsFAAAAAAAAAAAAALsFAAAAAAAAvAUAAAAAAAAAAAAAvAUAAAAAAAC9BQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC4BQAAAAAAALgFAAAAAAAAAAAAAAAA8L8" - ], - [ - 36, - 1, - "right_delete", - null, - "AQAAAAsHAAAAAAAACwcAAAAAAAARAAAAY29uZmlnID0gQ29uZmlnKCk", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAcBwAAAAAAAAsHAAAAAAAAAAAAAAAAQkA" - ], - [ - 38, - 1, - "left_delete", - null, - "AQAAAAYHAAAAAAAABgcAAAAAAAABAAAACg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAHBwAAAAAAAAcHAAAAAAAAAAAAAAAAAAA" - ], - [ - 43, - 1, - "insert", - { - "characters": "core." - }, - "BQAAANMIAAAAAAAA1AgAAAAAAAAAAAAA1AgAAAAAAADVCAAAAAAAAAAAAADVCAAAAAAAANYIAAAAAAAAAAAAANYIAAAAAAAA1wgAAAAAAAAAAAAA1wgAAAAAAADYCAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTCAAAAAAAANMIAAAAAAAAAAAAAAAA8L8" - ], - [ - 49, - 1, - "insert", - { - "characters": "coer." - }, - "BQAAABoHAAAAAAAAGwcAAAAAAAAAAAAAGwcAAAAAAAAcBwAAAAAAAAAAAAAcBwAAAAAAAB0HAAAAAAAAAAAAAB0HAAAAAAAAHgcAAAAAAAAAAAAAHgcAAAAAAAAfBwAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAaBwAAAAAAABoHAAAAAAAAAAAAAAAA8L8" - ], - [ - 52, - 1, - "insert", - { - "characters": "re" - }, - "AwAAABwHAAAAAAAAHQcAAAAAAAAAAAAAHQcAAAAAAAAdBwAAAAAAAAIAAABlch0HAAAAAAAAHgcAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeBwAAAAAAABwHAAAAAAAAAAAAAAAA8L8" - ], - [ - 57, - 1, - "paste", - null, - "AgAAAJYAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADNAAAAAAAAADEAAABmcm9tIHN0YWNvc3lzLmNvcmUuY29uZmlnIGltcG9ydCAgQ29uZmlnUGFyYW1ldGVy", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADHAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAA" - ], - [ - 5, - 1, - "insert", - { - "characters": ".ser" - }, - "BAAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIkAAAAAAAAAiQAAAAAAAAAAAAAAAADwvw" - ], - [ - 6, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"label\":\"service\",\"kind\":9,\"sortText\":\"02.9999.service\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "service" - }, - "AgAAAIoAAAAAAAAAigAAAAAAAAADAAAAc2VyigAAAAAAAACRAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0AAAAAAAAAjQAAAAAAAAAAAAAAAADwvw" - ], - [ - 10, - 1, - "insert", - { - "characters": "config" - }, - "BwAAAJkAAAAAAAAAmgAAAAAAAAAAAAAAmgAAAAAAAACaAAAAAAAAAAQAAABjb3JlmgAAAAAAAACbAAAAAAAAAAAAAACbAAAAAAAAAJwAAAAAAAAAAAAAAJwAAAAAAAAAnQAAAAAAAAAAAAAAnQAAAAAAAACeAAAAAAAAAAAAAACeAAAAAAAAAJ8AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJ0AAAAAAAAAmQAAAAAAAAAAAAAAAADwvw" - ], - [ - 11, - 1, - "insert", - { - "characters": "," - }, - "AQAAAJ8AAAAAAAAAoAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJ8AAAAAAAAAnwAAAAAAAAAAAAAAAADwvw" - ], - [ - 12, - 1, - "insert", - { - "characters": " mailer" - }, - "BwAAAKAAAAAAAAAAoQAAAAAAAAAAAAAAoQAAAAAAAACiAAAAAAAAAAAAAACiAAAAAAAAAKMAAAAAAAAAAAAAAKMAAAAAAAAApAAAAAAAAAAAAAAApAAAAAAAAAClAAAAAAAAAAAAAAClAAAAAAAAAKYAAAAAAAAAAAAAAKYAAAAAAAAApwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKAAAAAAAAAAoAAAAAAAAAAAAAAAAADwvw" - ], - [ - 16, - 1, - "right_delete", - null, - "AQAAAOAAAAAAAAAA4AAAAAAAAAAnAAAAZnJvbSBzdGFjb3N5cy5jb3JlLm1haWxlciBpbXBvcnQgTWFpbGVy", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAcBAAAAAAAA4AAAAAAAAAAAAAAAAAAAAA" - ], - [ - 17, - 1, - "left_delete", - null, - "AQAAAN8AAAAAAAAA3wAAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAADwvw" - ], - [ - 20, - 1, - "insert", - { - "characters": "service" - }, - "CAAAALYAAAAAAAAAtwAAAAAAAAAAAAAAtwAAAAAAAAC3AAAAAAAAAAQAAABjb3JltwAAAAAAAAC4AAAAAAAAAAAAAAC4AAAAAAAAALkAAAAAAAAAAAAAALkAAAAAAAAAugAAAAAAAAAAAAAAugAAAAAAAAC7AAAAAAAAAAAAAAC7AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYAAAAAAAAAugAAAAAAAAAAAAAAAADwvw" - ], - [ - 26, - 1, - "right_delete", - null, - "AQAAAKsFAAAAAAAAqwUAAAAAAAAFAAAAY29yZS4", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALAFAAAAAAAAqwUAAAAAAAAAAAAAAADwvw" - ], - [ - 33, - 1, - "right_delete", - null, - "AQAAAAgHAAAAAAAACAcAAAAAAAAFAAAAY29yZS4", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA0HAAAAAAAACAcAAAAAAAAAAAAAAADwvw" - ], - [ - 39, - 1, - "right_delete", - null, - "AQAAAJ8IAAAAAAAAnwgAAAAAAAARAAAAbWFpbGVyID0gTWFpbGVyKCk", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALAIAAAAAAAAnwgAAAAAAAAAAAAAAABCQA" - ], - [ - 41, - 1, - "left_delete", - null, - "AQAAAJoIAAAAAAAAmggAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJsIAAAAAAAAmwgAAAAAAAAAAAAAAAAAAA" - ], - [ - 45, - 1, - "right_delete", - null, - "AQAAAK8IAAAAAAAArwgAAAAAAAAFAAAAY29yZS4", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQIAAAAAAAArwgAAAAAAAAAAAAAAADwvw" - ], - [ - 48, - 1, - "revert", - null, - "BAAAAAAAAAAAAAAAAAAAAAAAAABvCgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCmltcG9ydCBsb2dnaW5nCgppbXBvcnQgYmFja2dyb3VuZApmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwgcmVkaXJlY3QsIHJlcXVlc3QKCmZyb20gc3RhY29zeXMuc2VydmljZSBpbXBvcnQgY29uZmlnLCBtYWlsZXIKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ1BhcmFtZXRlcgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYW8KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgoKQGFwcC5yb3V0ZSgiL25ld2NvbW1lbnQiLCBtZXRob2RzPVsiUE9TVCJdKQpkZWYgbmV3X2Zvcm1fY29tbWVudCgpOiAgICAKICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0KICAgIGxvZ2dlci5pbmZvKCJmb3JtIGRhdGEgJXMiLCBzdHIoZGF0YSkpCgogICAgIyBob25leXBvdCBmb3Igc3BhbW1lcnMKICAgIGNhcHRjaGEgPSBkYXRhLmdldCgicmVtYXJxdWUiLCAiIikKICAgIGlmIGNhcHRjaGE6CiAgICAgICAgbG9nZ2VyLndhcm5pbmcoImRpc2NhcmQgc3BhbTogZGF0YSAlcyIsIGRhdGEpCiAgICAgICAgYWJvcnQoNDAwKQoKICAgIHVybCA9IGRhdGEuZ2V0KCJ1cmwiLCAiIikKICAgIGF1dGhvcl9uYW1lID0gZGF0YS5nZXQoImF1dGhvciIsICIiKS5zdHJpcCgpCiAgICBhdXRob3JfZ3JhdmF0YXIgPSBkYXRhLmdldCgiZW1haWwiLCAiIikuc3RyaXAoKQogICAgYXV0aG9yX3NpdGUgPSBkYXRhLmdldCgic2l0ZSIsICIiKS5sb3dlcigpLnN0cmlwKCkKICAgIGlmIGF1dGhvcl9zaXRlIGFuZCBhdXRob3Jfc2l0ZVs6NF0gIT0gImh0dHAiOgogICAgICAgIGF1dGhvcl9zaXRlID0gImh0dHA6Ly8iICsgYXV0aG9yX3NpdGUKICAgIG1lc3NhZ2UgPSBkYXRhLmdldCgibWVzc2FnZSIsICIiKQoKICAgICMgYW50aS1zcGFtIGFnYWluCiAgICBpZiBub3QgdXJsIG9yIG5vdCBhdXRob3JfbmFtZSBvciBub3QgbWVzc2FnZToKICAgICAgICBsb2dnZXIud2FybmluZygiZW1wdHkgZmllbGQ6IGRhdGEgJXMiLCBkYXRhKQogICAgICAgIGFib3J0KDQwMCkKICAgIGlmIG5vdCBjaGVja19mb3JtX2RhdGEoZGF0YS50b19kaWN0KCkpOgogICAgICAgIGxvZ2dlci53YXJuaW5nKCJhZGRpdGlvbmFsIGZpZWxkOiBkYXRhICVzIiwgZGF0YSkKICAgICAgICBhYm9ydCg0MDApCgogICAgIyBhZGQgYSByb3cgdG8gQ29tbWVudCB0YWJsZQogICAgY29tbWVudCA9IGRhby5jcmVhdGVfY29tbWVudCgKICAgICAgICB1cmwsIGF1dGhvcl9uYW1lLCBhdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyLCBtZXNzYWdlCiAgICApCgogICAgIyBzZW5kIG5vdGlmaWNhdGlvbiBlLW1haWwgYXN5bmNocm9ub3VzbHkKICAgIHN1Ym1pdF9uZXdfY29tbWVudChjb21tZW50KQoKICAgIHJldHVybiByZWRpcmVjdChjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5TSVRFX1JFRElSRUNUKSwgY29kZT0zMDIpCgoKZGVmIGNoZWNrX2Zvcm1fZGF0YShwb3N0ZWRfY29tbWVudCk6CiAgICBmaWVsZHMgPSBbInVybCIsICJtZXNzYWdlIiwgInNpdGUiLCAicmVtYXJxdWUiLCAiYXV0aG9yIiwgInRva2VuIiwgImVtYWlsIl0KICAgIGZpbHRlcmVkID0gZGljdChmaWx0ZXIobGFtYmRhIHg6IHhbMF0gbm90IGluIGZpZWxkcywgcG9zdGVkX2NvbW1lbnQuaXRlbXMoKSkpCiAgICByZXR1cm4gbm90IGZpbHRlcmVkCgoKQGJhY2tncm91bmQudGFzawpkZWYgc3VibWl0X25ld19jb21tZW50KGNvbW1lbnQpOiAgICAKICAgIHNpdGVfdXJsID0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpCiAgICBjb21tZW50X2xpc3QgPSAoCiAgICAgICAgZiJXZWIgYWRtaW4gaW50ZXJmYWNlOiB7c2l0ZV91cmx9L3dlYi9hZG1pbiIsCiAgICAgICAgIiIsCiAgICAgICAgZiJhdXRob3I6IHtjb21tZW50LmF1dGhvcl9uYW1lfSIsCiAgICAgICAgZiJzaXRlOiB7Y29tbWVudC5hdXRob3Jfc2l0ZX0iLAogICAgICAgIGYiZGF0ZToge2NvbW1lbnQuY3JlYXRlZH0iLAogICAgICAgIGYidXJsOiB7Y29tbWVudC51cmx9IiwKICAgICAgICAiIiwKICAgICAgICBjb21tZW50LmNvbnRlbnQsCiAgICAgICAgIiIsCiAgICApCiAgICBlbWFpbF9ib2R5ID0gIlxuIi5qb2luKGNvbW1lbnRfbGlzdCkKCiAgICAjIHNlbmQgZW1haWwgdG8gbm90aWZ5IGFkbWluICAgIAogICAgc2l0ZV9uYW1lID0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9OQU1FKQogICAgc3ViamVjdCA9IGYiU1RBQ09TWVMge3NpdGVfbmFtZX0iCiAgICBpZiBtYWlsZXIuc2VuZChzdWJqZWN0LCBlbWFpbF9ib2R5KToKICAgICAgICBsb2dnZXIuZGVidWcoIm5ldyBjb21tZW50IHByb2Nlc3NlZCIpCgogICAgICAgICMgc2F2ZSBub3RpZmljYXRpb24gZGF0ZXRpbWUKICAgICAgICBkYW8ubm90aWZ5X2NvbW1lbnQoY29tbWVudCkKICAgIGVsc2U6CiAgICAgICAgbG9nZ2VyLndhcm5pbmcoInJlc2NoZWR1bGVkLiBzZW5kIG1haWwgZmFpbHVyZSAlcyIsIHN1YmplY3QpCgoKQGJhY2tncm91bmQuY2FsbGJhY2sKZGVmIHN1Ym1pdF9uZXdfY29tbWVudF9jYWxsYmFjayhmdXR1cmUpOgogICAgIyBUT0RPIHVzZSBmdXR1cmUgdG8gbG9nIHN1Ym1pdCBzdGF0dXMKICAgIGxvZ2dlci5kZWJ1ZyhmdXR1cmUpCgAAAAAAAAAAYwoAAAAAAAAAAAAAAAAAAAAAAABjCgAAAAAAAAAAAAAAAAAAAAAAAGMKAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADQJAAAAAAAANAkAAAAAAAAAAAAAAABiQA" - ] - ] - }, - { - "file": "stacosys/run.py", - "settings": - { - "buffer_size": 2789, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 7, - 1, - "insert", - { - "characters": "core" - }, - "BQAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABvAAAAAAAAAAQAAABjb25mbwAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHEAAAAAAAAAAAAAAHEAAAAAAAAAcgAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABuAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 11, - 1, - "cut", - null, - "AQAAAIEAAAAAAAAAgQAAAAAAAAAHAAAAQ29uZmlnLA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAAAAAAAAAIgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 12, - 1, - "right_delete", - null, - "AQAAAIEAAAAAAAAAgQAAAAAAAAABAAAAIA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAAAAAAAAAIEAAAAAAAAAAAAAAAAA8L8" - ], - [ - 14, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAF8AAAAAAAAAYAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABfAAAAAAAAAF8AAAAAAAAAAAAAAACQckA" - ], - [ - 19, - 1, - "paste", - null, - "AQAAAGAAAAAAAAAAcgAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 20, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 21, - 1, - "insert", - { - "characters": " config" - }, - "BwAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5AAAAAAAAAHkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 36, - 1, - "insert", - { - "characters": "import" - }, - "BwAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABhAAAAAAAAAAQAAABmcm9tYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 41, - 1, - "right_delete", - null, - "AQAAAHQAAAAAAAAAdAAAAAAAAAAOAAAAIGltcG9ydCBjb25maWc", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 53, - 1, - "right_delete", - null, - "AQAAAJ0EAAAAAAAAnQQAAAAAAAAHAAAAY29uZiA9IA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACkBAAAAAAAAJ0EAAAAAAAAAAAAAAAAQkA" - ], - [ - 54, - 1, - "insert", - { - "characters": "core.c" - }, - "BgAAAJ0EAAAAAAAAngQAAAAAAAAAAAAAngQAAAAAAACfBAAAAAAAAAAAAACfBAAAAAAAAKAEAAAAAAAAAAAAAKAEAAAAAAAAoQQAAAAAAAAAAAAAoQQAAAAAAACiBAAAAAAAAAAAAACiBAAAAAAAAKMEAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdBAAAAAAAAJ0EAAAAAAAAAAAAAAAA8L8" - ], - [ - 55, - 1, - "right_delete", - null, - "AQAAAKMEAAAAAAAAowQAAAAAAAABAAAAQw", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACjBAAAAAAAAKMEAAAAAAAAAAAAAAAA8L8" - ], - [ - 79, - 1, - "insert", - { - "characters": "from" - }, - "BAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAA" - ], - [ - 80, - 1, - "insert", - { - "characters": " " - }, - "AQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 82, - 2, - "right_delete", - null, - "AgAAAGUAAAAAAAAAZQAAAAAAAAAGAAAAaW1wb3J0ZQAAAAAAAABlAAAAAAAAAAEAAAAg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlAAAAAAAAAGsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 84, - 1, - "insert", - { - "characters": " imo" - }, - "BAAAAG0AAAAAAAAAbgAAAAAAAAAAAAAAbgAAAAAAAABvAAAAAAAAAAAAAABvAAAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAAAAAcQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABtAAAAAAAAAG0AAAAAAAAAAAAAAAAA8L8" - ], - [ - 85, - 1, - "left_delete", - null, - "AQAAAHAAAAAAAAAAcAAAAAAAAAABAAAAbw", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABxAAAAAAAAAHEAAAAAAAAAAAAAAAAA8L8" - ], - [ - 86, - 1, - "insert", - { - "characters": "port" - }, - "BAAAAHAAAAAAAAAAcQAAAAAAAAAAAAAAcQAAAAAAAAByAAAAAAAAAAAAAAByAAAAAAAAAHMAAAAAAAAAAAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABwAAAAAAAAAHAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 87, - 1, - "right_delete", - null, - "AQAAAHQAAAAAAAAAdAAAAAAAAAABAAAALg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 88, - 1, - "insert", - { - "characters": " " - }, - "AQAAAHQAAAAAAAAAdQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 97, - 1, - "insert", - { - "characters": "core" - }, - "BAAAAOYEAAAAAAAA5wQAAAAAAAAAAAAA5wQAAAAAAADoBAAAAAAAAAAAAADoBAAAAAAAAOkEAAAAAAAAAAAAAOkEAAAAAAAA6gQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADmBAAAAAAAAOYEAAAAAAAAAAAAAAAA8L8" - ], - [ - 100, - 1, - "insert", - { - "characters": "." - }, - "AQAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBAAAAAAAAOoEAAAAAAAAAAAAAAAA8L8" - ], - [ - 102, - 1, - "insert", - { - "characters": "ig" - }, - "AgAAAO8EAAAAAAAA8AQAAAAAAAAAAAAA8AQAAAAAAADxBAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADvBAAAAAAAAO8EAAAAAAAAAAAAAAAA8L8" - ], - [ - 107, - 1, - "insert", - { - "characters": "core." - }, - "BQAAAHwFAAAAAAAAfQUAAAAAAAAAAAAAfQUAAAAAAAB+BQAAAAAAAAAAAAB+BQAAAAAAAH8FAAAAAAAAAAAAAH8FAAAAAAAAgAUAAAAAAAAAAAAAgAUAAAAAAACBBQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB8BQAAAAAAAHwFAAAAAAAAAAAAAAAA8L8" - ], - [ - 110, - 1, - "insert", - { - "characters": "ig" - }, - "AgAAAIUFAAAAAAAAhgUAAAAAAAAAAAAAhgUAAAAAAACHBQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFBQAAAAAAAIUFAAAAAAAAAAAAAAAA8L8" - ], - [ - 116, - 1, - "insert", - { - "characters": "coer." - }, - "BQAAAOEFAAAAAAAA4gUAAAAAAAAAAAAA4gUAAAAAAADjBQAAAAAAAAAAAADjBQAAAAAAAOQFAAAAAAAAAAAAAOQFAAAAAAAA5QUAAAAAAAAAAAAA5QUAAAAAAADmBQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADhBQAAAAAAAOEFAAAAAAAAAAAAAAAA8L8" - ], - [ - 117, - 3, - "left_delete", - null, - "AwAAAOUFAAAAAAAA5QUAAAAAAAABAAAALuQFAAAAAAAA5AUAAAAAAAABAAAAcuMFAAAAAAAA4wUAAAAAAAABAAAAZQ", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADmBQAAAAAAAOYFAAAAAAAAAAAAAAAA8L8" - ], - [ - 118, - 1, - "insert", - { - "characters": "re." - }, - "AwAAAOMFAAAAAAAA5AUAAAAAAAAAAAAA5AUAAAAAAADlBQAAAAAAAAAAAADlBQAAAAAAAOYFAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADjBQAAAAAAAOMFAAAAAAAAAAAAAAAA8L8" - ], - [ - 120, - 1, - "insert", - { - "characters": "ig" - }, - "AgAAAOoFAAAAAAAA6wUAAAAAAAAAAAAA6wUAAAAAAADsBQAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqBQAAAAAAAOoFAAAAAAAAAAAAAAAA8L8" - ], - [ - 126, - 1, - "insert", - { - "characters": "core." - }, - "BQAAAEwHAAAAAAAATQcAAAAAAAAAAAAATQcAAAAAAABOBwAAAAAAAAAAAABOBwAAAAAAAE8HAAAAAAAAAAAAAE8HAAAAAAAAUAcAAAAAAAAAAAAAUAcAAAAAAABRBwAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABMBwAAAAAAAEwHAAAAAAAAAAAAAAAA8L8" - ], - [ - 127, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"symbolLabel\":\"Config\",\"workspacePath\":\"/home/yannic/work/stacosys\",\"position\":{\"character\":13,\"line\":62},\"filePath\":\"/home/yannic/work/stacosys/stacosys/run.py\"},\"label\":\"Config\",\"sortText\":\"05.0000.Config\",\"kind\":7},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "Config" - }, - "AQAAAFEHAAAAAAAAVwcAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABRBwAAAAAAAFEHAAAAAAAAAAAAAAAA8L8" - ], - [ - 129, - 1, - "right_delete", - null, - "AQAAAFcHAAAAAAAAVwcAAAAAAAAEAAAAY29uZg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABXBwAAAAAAAFsHAAAAAAAAAAAAAAAA8L8" - ], - [ - 134, - 1, - "insert", - { - "characters": "c" - }, - "AQAAAFEHAAAAAAAAUgcAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABRBwAAAAAAAFEHAAAAAAAAAAAAAAAA8L8" - ], - [ - 135, - 1, - "right_delete", - null, - "AQAAAFIHAAAAAAAAUgcAAAAAAAABAAAAQw", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABSBwAAAAAAAFIHAAAAAAAAAAAAAAAA8L8" - ], - [ - 146, - 1, - "paste", - null, - "AgAAAHsHAAAAAAAAhgcAAAAAAAAAAAAAhgcAAAAAAACGBwAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB7BwAAAAAAAH8HAAAAAAAAAAAAAAAA8L8" - ], - [ - 150, - 1, - "paste", - null, - "AgAAAK4HAAAAAAAAuQcAAAAAAAAAAAAAuQcAAAAAAAC5BwAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACuBwAAAAAAALIHAAAAAAAAAAAAAAAA8L8" - ], - [ - 154, - 1, - "paste", - null, - "AgAAAOIHAAAAAAAA7QcAAAAAAAAAAAAA7QcAAAAAAADtBwAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADiBwAAAAAAAOYHAAAAAAAAAAAAAAAA8L8" - ], - [ - 158, - 1, - "paste", - null, - "AgAAABYIAAAAAAAAIQgAAAAAAAAAAAAAIQgAAAAAAAAhCAAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAWCAAAAAAAABoIAAAAAAAAAAAAAAAA8L8" - ], - [ - 170, - 1, - "paste", - null, - "AgAAAKYIAAAAAAAAsQgAAAAAAAAAAAAAsQgAAAAAAACxCAAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACmCAAAAAAAAKoIAAAAAAAAAAAAAAAA8L8" - ], - [ - 175, - 1, - "paste", - null, - "AgAAANoIAAAAAAAA5QgAAAAAAAAAAAAA5QgAAAAAAADlCAAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADaCAAAAAAAAN4IAAAAAAAAAAAAAAAA8L8" - ], - [ - 180, - 1, - "paste", - null, - "AgAAABIJAAAAAAAAHQkAAAAAAAAAAAAAHQkAAAAAAAAdCQAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAASCQAAAAAAABYJAAAAAAAAAAAAAAAA8L8" - ], - [ - 185, - 1, - "paste", - null, - "AgAAAEcJAAAAAAAAUgkAAAAAAAAAAAAAUgkAAAAAAABSCQAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABHCQAAAAAAAEsJAAAAAAAAAAAAAAAA8L8" - ], - [ - 190, - 1, - "paste", - null, - "AgAAAH8JAAAAAAAAigkAAAAAAAAAAAAAigkAAAAAAACKCQAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/CQAAAAAAAIMJAAAAAAAAAAAAAAAA8L8" - ], - [ - 195, - 1, - "paste", - null, - "AgAAACUKAAAAAAAAMAoAAAAAAAAAAAAAMAoAAAAAAAAwCgAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAlCgAAAAAAACkKAAAAAAAAAAAAAAAA8L8" - ], - [ - 200, - 1, - "paste", - null, - "AgAAAF4KAAAAAAAAaQoAAAAAAAAAAAAAaQoAAAAAAABpCgAAAAAAAAQAAABjb25m", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABeCgAAAAAAAGIKAAAAAAAAAAAAAAAA8L8" - ], - [ - 216, - 1, - "insert", - { - "characters": "." - }, - "AQAAAG0AAAAAAAAAbgAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABtAAAAAAAAAG0AAAAAAAAAAAAAAAAA8L8" - ], - [ - 219, - 1, - "right_delete", - null, - "AQAAAG4AAAAAAAAAbgAAAAAAAAAIAAAAIGltcG9ydCA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABuAAAAAAAAAHYAAAAAAAAAAAAAAAAA8L8" - ], - [ - 226, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 227, - 1, - "insert", - { - "characters": " confi" - }, - "BgAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5AAAAAAAAAHkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 228, - 1, - "insert", - { - "characters": "g" - }, - "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AAAAAAAAAH8AAAAAAAAAAAAAAAAA8L8" - ], - [ - 241, - 1, - "insert", - { - "characters": "import" - }, - "BwAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABhAAAAAAAAAAQAAABmcm9tYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 251, - 1, - "insert", - { - "characters": "." - }, - "AgAAAHQAAAAAAAAAdQAAAAAAAAAAAAAAdQAAAAAAAAB1AAAAAAAAAAgAAAAgaW1wb3J0IA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHwAAAAAAAAAAAAAAAAA8L8" - ], - [ - 258, - 1, - "right_delete", - null, - "AQAAAKQEAAAAAAAApAQAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACpBAAAAAAAAKQEAAAAAAAAAAAAAAAA8L8" - ], - [ - 265, - 1, - "right_delete", - null, - "AQAAAOMEAAAAAAAA4wQAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADjBAAAAAAAAOgEAAAAAAAAAAAAAAAA8L8" - ], - [ - 270, - 1, - "right_delete", - null, - "AQAAAHQFAAAAAAAAdAUAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5BQAAAAAAAHQFAAAAAAAAAAAAAAAA8L8" - ], - [ - 297, - 1, - "insert", - { - "characters": "from" - }, - "BAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAA" - ], - [ - 298, - 1, - "insert", - { - "characters": " " - }, - "AQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 300, - 2, - "right_delete", - null, - "AgAAAGUAAAAAAAAAZQAAAAAAAAAGAAAAaW1wb3J0ZQAAAAAAAABlAAAAAAAAAAEAAAAg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlAAAAAAAAAGsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 302, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 303, - 1, - "insert", - { - "characters": " " - }, - "AQAAAHkAAAAAAAAAegAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5AAAAAAAAAHkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 304, - 1, - "right_delete", - null, - "AQAAAHoAAAAAAAAAegAAAAAAAAABAAAALg", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB6AAAAAAAAAHoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 311, - 1, - "insert", - { - "characters": "u" - }, - "AQAAAJoAAAAAAAAAmwAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 312, - 1, - "left_delete", - null, - "AQAAAJoAAAAAAAAAmgAAAAAAAAABAAAAdQ", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAAAAAAAAAJsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 313, - 1, - "insert", - { - "characters": "uration" - }, - "BwAAAJoAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACcAAAAAAAAAAAAAACcAAAAAAAAAJ0AAAAAAAAAAAAAAJ0AAAAAAAAAngAAAAAAAAAAAAAAngAAAAAAAACfAAAAAAAAAAAAAACfAAAAAAAAAKAAAAAAAAAAAAAAAKAAAAAAAAAAoQAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 353, - 1, - "right_delete", - null, - "AQAAAOAFAAAAAAAA4AUAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADgBQAAAAAAAOUFAAAAAAAAAAAAAAAA8L8" - ], - [ - 359, - 1, - "right_delete", - null, - "AQAAAEYHAAAAAAAARgcAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLBwAAAAAAAEYHAAAAAAAAAAAAAAAA8L8" - ], - [ - 363, - 1, - "right_delete", - null, - "AQAAAHAHAAAAAAAAcAcAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABwBwAAAAAAAHUHAAAAAAAAAAAAAAAA8L8" - ], - [ - 367, - 1, - "right_delete", - null, - "AQAAAJ4HAAAAAAAAngcAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeBwAAAAAAAKMHAAAAAAAAAAAAAAAA8L8" - ], - [ - 371, - 1, - "right_delete", - null, - "AQAAAM0HAAAAAAAAzQcAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADNBwAAAAAAANIHAAAAAAAAAAAAAAAA8L8" - ], - [ - 375, - 1, - "right_delete", - null, - "AQAAAPwHAAAAAAAA/AcAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD8BwAAAAAAAAEIAAAAAAAAAAAAAAAA8L8" - ], - [ - 379, - 1, - "right_delete", - null, - "AQAAAIcIAAAAAAAAhwgAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACMCAAAAAAAAIcIAAAAAAAAAAAAAAAA8L8" - ], - [ - 383, - 1, - "right_delete", - null, - "AQAAALYIAAAAAAAAtggAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC2CAAAAAAAALsIAAAAAAAAAAAAAAAA8L8" - ], - [ - 387, - 1, - "right_delete", - null, - "AQAAAOkIAAAAAAAA6QgAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpCAAAAAAAAO4IAAAAAAAAAAAAAAAA8L8" - ], - [ - 391, - 1, - "right_delete", - null, - "AQAAABkJAAAAAAAAGQkAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAZCQAAAAAAAB4JAAAAAAAAAAAAAAAA8L8" - ], - [ - 395, - 1, - "right_delete", - null, - "AQAAAEwJAAAAAAAATAkAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABMCQAAAAAAAFEJAAAAAAAAAAAAAAAA8L8" - ], - [ - 402, - 1, - "right_delete", - null, - "AQAAAO0JAAAAAAAA7QkAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADyCQAAAAAAAO0JAAAAAAAAAAAAAAAA8L8" - ], - [ - 406, - 1, - "right_delete", - null, - "AQAAACEKAAAAAAAAIQoAAAAAAAAFAAAAY29yZS4", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAhCgAAAAAAACYKAAAAAAAAAAAAAAAA8L8" - ], - [ - 5, - 1, - "insert", - { - "characters": "service" - }, - "CAAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABvAAAAAAAAAAQAAABjb3JlbwAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHEAAAAAAAAAAAAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAABzAAAAAAAAAHQAAAAAAAAAAAAAAHQAAAAAAAAAdQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHIAAAAAAAAAbgAAAAAAAAAAAAAAAADwvw" - ], - [ - 16, - 1, - "insert", - { - "characters": "service" - }, - "CAAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACTAAAAAAAAAAQAAABjb3JlkwAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJUAAAAAAAAAAAAAAJUAAAAAAAAAlgAAAAAAAAAAAAAAlgAAAAAAAACXAAAAAAAAAAAAAACXAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAmQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJIAAAAAAAAAlgAAAAAAAAAAAAAAAADwvw" - ], - [ - 21, - 1, - "insert", - { - "characters": "service" - }, - "CAAAAM0AAAAAAAAAzgAAAAAAAAAAAAAAzgAAAAAAAADOAAAAAAAAAAQAAABjb3JlzgAAAAAAAADPAAAAAAAAAAAAAADPAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA0QAAAAAAAAAAAAAA0QAAAAAAAADSAAAAAAAAAAAAAADSAAAAAAAAANMAAAAAAAAAAAAAANMAAAAAAAAA1AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAM0AAAAAAAAA0QAAAAAAAAAAAAAAAADwvw" - ], - [ - 25, - 2, - "left_delete", - null, - "AgAAANoAAAAAAAAA2gAAAAAAAAABAAAActkAAAAAAAAA2QAAAAAAAAABAAAAZQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANsAAAAAAAAA2wAAAAAAAAAAAAAAAADwvw" - ], - [ - 30, - 1, - "insert", - { - "characters": "," - }, - "AQAAAIMAAAAAAAAAhAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAgwAAAAAAAAAAAAAAAADwvw" - ], - [ - 31, - 1, - "insert", - { - "characters": " a" - }, - "AgAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIQAAAAAAAAAhAAAAAAAAAAAAAAAAADwvw" - ], - [ - 32, - 1, - "left_delete", - null, - "AQAAAIUAAAAAAAAAhQAAAAAAAAABAAAAYQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIYAAAAAAAAAhgAAAAAAAAAAAAAAAADwvw" - ], - [ - 33, - 1, - "insert", - { - "characters": "mailer," - }, - "BwAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAiQAAAAAAAAAAAAAAiQAAAAAAAACKAAAAAAAAAAAAAACKAAAAAAAAAIsAAAAAAAAAAAAAAIsAAAAAAAAAjAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" - ], - [ - 34, - 1, - "insert", - { - "characters": " rss" - }, - "BAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAAjQAAAAAAAACOAAAAAAAAAAAAAACOAAAAAAAAAI8AAAAAAAAAAAAAAI8AAAAAAAAAkAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwAAAAAAAAAjAAAAAAAAAAAAAAAAADwvw" - ], - [ - 41, - 1, - "right_delete", - null, - "AQAAAMwAAAAAAAAAzAAAAAAAAABLAAAAZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLm1haWwgaW1wb3J0IE1haWxlcgpmcm9tIHN0YWNvc3lzLmNvcmUucnNzIGltcG9ydCBSc3MK", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMwAAAAAAAAAFwEAAAAAAAAAAAAAAAAAAA" - ], - [ - 48, - 1, - "right_delete", - null, - "AQAAAOgGAAAAAAAA6AYAAAAAAAALAAAAcnNzID0gUnNzKCk", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPMGAAAAAAAA6AYAAAAAAAAAAAAAAABCQA" - ], - [ - 50, - 1, - "left_delete", - null, - "AQAAAOMGAAAAAAAA4wYAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOQGAAAAAAAA5AYAAAAAAAAAAAAAAAAAAA" - ], - [ - 54, - 1, - "right_delete", - null, - "AQAAABQIAAAAAAAAFAgAAAAAAAARAAAAbWFpbGVyID0gTWFpbGVyKCk", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACUIAAAAAAAAFAgAAAAAAAAAAAAAAABCQA" - ], - [ - 56, - 1, - "left_delete", - null, - "AQAAAA8IAAAAAAAADwgAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABAIAAAAAAAAEAgAAAAAAAAAAAAAAAAAAA" - ], - [ - 59, - 1, - "revert", - null, - "BAAAAAAAAAAAAAAAAAAAAAAAAADtCgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmltcG9ydCBhcmdwYXJzZQppbXBvcnQgbG9nZ2luZwppbXBvcnQgb3MKaW1wb3J0IHN5cwoKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlIGltcG9ydCBjb25maWcsIG1haWxlciwgcnNzCmZyb20gc3RhY29zeXMuc2VydmljZS5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWdQYXJhbWV0ZXIKZnJvbSBzdGFjb3N5cy5kYiBpbXBvcnQgZGF0YWJhc2UKZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwaSwgYXBwLCBmb3JtCmZyb20gc3RhY29zeXMuaW50ZXJmYWNlLndlYiBpbXBvcnQgYWRtaW4KCgojIGNvbmZpZ3VyZSBsb2dnaW5nCmRlZiBjb25maWd1cmVfbG9nZ2luZyhsZXZlbCk6CiAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgIHJvb3RfbG9nZ2VyLnNldExldmVsKGxldmVsKQogICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCiAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQogICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoIlslKGFzY3RpbWUpc10gJShuYW1lKXMgJShsZXZlbG5hbWUpcyAlKG1lc3NhZ2UpcyIpCiAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCiAgICByb290X2xvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCgoKZGVmIHN0YWNvc3lzX3NlcnZlcihjb25maWdfcGF0aG5hbWUpOgogICAgIyBjb25maWd1cmUgbG9nZ2luZwogICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAgICBjb25maWd1cmVfbG9nZ2luZyhsb2dnaW5nLklORk8pCiAgICBsb2dnaW5nLmdldExvZ2dlcigid2Vya3pldWciKS5sZXZlbCA9IGxvZ2dpbmcuV0FSTklORwogICAgbG9nZ2luZy5nZXRMb2dnZXIoImFwc2NoZWR1bGVyLmV4ZWN1dG9ycyIpLmxldmVsID0gbG9nZ2luZy5XQVJOSU5HCgogICAgIyBjaGVjayBjb25maWcgZmlsZSBleGlzdHMKICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjb25maWdfcGF0aG5hbWUpOgogICAgICAgIGxvZ2dlci5lcnJvcigiQ29uZmlndXJhdGlvbiBmaWxlICclcycgbm90IGZvdW5kLiIsIGNvbmZpZ19wYXRobmFtZSkKICAgICAgICBzeXMuZXhpdCgxKQoKICAgICMgbG9hZCBhbmQgY2hlY2sgY29uZmlnCiAgICBjb25maWcubG9hZChjb25maWdfcGF0aG5hbWUpCiAgICBpc19jb25maWdfb2ssIGVycmV1cl9jb25maWcgPSBjb25maWcuY2hlY2soKQogICAgaWYgbm90IGlzX2NvbmZpZ19vazoKICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbmZpZ3VyYXRpb24gaW5jb3JyZWN0ZSAnJXMnIiwgZXJyZXVyX2NvbmZpZykKICAgICAgICBzeXMuZXhpdCgxKQogICAgbG9nZ2VyLmluZm8oY29uZmlnKQoKICAgICMgY2hlY2sgZGF0YWJhc2UgZmlsZSBleGlzdHMgKHByZXZlbnRzIGZyb20gY3JlYXRpbmcgYSBmcmVzaCBkYikKICAgIGRiX3BhdGhuYW1lID0gY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuREJfU1FMSVRFX0ZJTEUpCiAgICBpZiBub3QgZGJfcGF0aG5hbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKGRiX3BhdGhuYW1lKToKICAgICAgICBsb2dnZXIuZXJyb3IoIkRhdGFiYXNlIGZpbGUgJyVzJyBub3QgZm91bmQuIiwgZGJfcGF0aG5hbWUpCiAgICAgICAgc3lzLmV4aXQoMSkKCiAgICAjIGluaXRpYWxpemUgZGF0YWJhc2UKICAgIGRhdGFiYXNlLnNldHVwKGRiX3BhdGhuYW1lKQoKICAgIGxvZ2dlci5pbmZvKCJTdGFydCBTdGFjb3N5cyBhcHBsaWNhdGlvbiIpCgogICAgIyBnZW5lcmF0ZSBSU1MgICAgCiAgICByc3MuY29uZmlndXJlKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLkxBTkcpLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlJTU19GSUxFKSwKICAgICAgICBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5SU1NfUFJPVE8pLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNJVEVfTkFNRSksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQogICAgcnNzLmdlbmVyYXRlKCkKCiAgICAjIGNvbmZpZ3VyZSBtYWlsZXIgICAgCiAgICBtYWlsZXIuY29uZmlndXJlKAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfSE9TVCksCiAgICAgICAgY29uZmlnLmdldF9pbnQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfUE9SVCksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU01UUF9MT0dJTiksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU01UUF9QQVNTV09SRCksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9BRE1JTl9FTUFJTCksCiAgICApCgogICAgbG9nZ2VyLmluZm8oInN0YXJ0IGludGVyZmFjZXMgJXMgJXMgJXMiLCBhcGksIGZvcm0sIGFkbWluKQoKICAgICMgc3RhcnQgRmxhc2sKICAgIGFwcC5ydW4oCiAgICAgICAgaG9zdD1jb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5IVFRQX0hPU1QpLAogICAgICAgIHBvcnQ9Y29uZmlnLmdldF9pbnQoQ29uZmlnUGFyYW1ldGVyLkhUVFBfUE9SVCksCiAgICAgICAgZGVidWc9RmFsc2UsCiAgICAgICAgdXNlX3JlbG9hZGVyPUZhbHNlLAogICAgKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJjb25maWciLCBoZWxwPSJjb25maWcgcGF0aCBuYW1lIikKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAgICBzdGFjb3N5c19zZXJ2ZXIoYXJncy5jb25maWcpCgAAAAAAAAAA5QoAAAAAAAAAAAAAAAAAAAAAAADlCgAAAAAAAAAAAAAAAAAAAAAAAOUKAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA8IAAAAAAAADwgAAAAAAAAAAAAAAADwvw" - ] - ] - }, - { - "file": "Makefile", - "settings": - { - "buffer_size": 253, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 3, - 1, - "insert", - { - "characters": "poetry" - }, - "BgAAACgAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAAqAAAAAAAAAAAAAAAqAAAAAAAAACsAAAAAAAAAAAAAACsAAAAAAAAALAAAAAAAAAAAAAAALAAAAAAAAAAtAAAAAAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAKAAAAAAAAAAoAAAAAAAAAAAAAAAAAPC/" - ], - [ - 4, - 1, - "insert", - { - "characters": " run" - }, - "BAAAAC4AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAAPC/" - ], - [ - 5, - 1, - "insert", - { - "characters": " " - }, - "AQAAADIAAAAAAAAAMwAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMgAAAAAAAAAyAAAAAAAAAAAAAAAAAPC/" - ], - [ - 8, - 1, - "insert", - { - "characters": "potr" - }, - "BAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAGYAAAAAAAAAZwAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAEJA" - ], - [ - 9, - 2, - "left_delete", - null, - "AgAAAGYAAAAAAAAAZgAAAAAAAAABAAAAcmUAAAAAAAAAZQAAAAAAAAABAAAAdA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZwAAAAAAAABnAAAAAAAAAAAAAAAAAPC/" - ], - [ - 10, - 1, - "insert", - { - "characters": "etry" - }, - "BAAAAGUAAAAAAAAAZgAAAAAAAAAAAAAAZgAAAAAAAABnAAAAAAAAAAAAAABnAAAAAAAAAGgAAAAAAAAAAAAAAGgAAAAAAAAAaQAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZQAAAAAAAABlAAAAAAAAAAAAAAAAAPC/" - ], - [ - 11, - 1, - "insert", - { - "characters": " run" - }, - "BAAAAGkAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" - ], - [ - 12, - 1, - "insert", - { - "characters": " " - }, - "AQAAAG0AAAAAAAAAbgAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbQAAAAAAAABtAAAAAAAAAAAAAAAAAPC/" - ], - [ - 15, - 1, - "insert", - { - "characters": "poetry" - }, - "BgAAAIYAAAAAAAAAhwAAAAAAAAAAAAAAhwAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIkAAAAAAAAAAAAAAIkAAAAAAAAAigAAAAAAAAAAAAAAigAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" - ], - [ - 16, - 1, - "insert", - { - "characters": " run" - }, - "BAAAAIwAAAAAAAAAjQAAAAAAAAAAAAAAjQAAAAAAAACOAAAAAAAAAAAAAACOAAAAAAAAAI8AAAAAAAAAAAAAAI8AAAAAAAAAkAAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjAAAAAAAAACMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 17, - 1, - "insert", - { - "characters": " " - }, - "AQAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAPC/" - ], - [ - 23, - 1, - "paste", - null, - "AQAAAKUAAAAAAAAAsAAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApQAAAAAAAAClAAAAAAAAAAAAAAAAAPC/" - ], - [ - 26, - 1, - "paste", - null, - "AQAAAOAAAAAAAAAA6wAAAAAAAAAAAAAA", - "BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" - ], - [ - 1, - 1, - "revert", - null, - "BgAAAAAAAAAAAAAAAAAAAAAAAAD9AAAAYWxsOiBibGFjayB0ZXN0IHR5cGVoaW50IGxpbnQgCgpibGFjazoKCXBvZXRyeSBydW4gaXNvcnQgLS1tdWx0aS1saW5lIDMgLS1wcm9maWxlIGJsYWNrIHN0YWNvc3lzLwoJcG9ldHJ5IHJ1biBibGFjayBzdGFjb3N5cy8KCnRlc3Q6Cglwb2V0cnkgcnVuIHB5dGVzdAoKdHlwZWhpbnQ6IAoJcG9ldHJ5IHJ1biBteXB5IC0taWdub3JlLW1pc3NpbmctaW1wb3J0cyBzdGFjb3N5cy8KCmxpbnQ6Cglwb2V0cnkgcnVuIHB5bGludCBzdGFjb3N5cy8KCgAAAAAAAAAA/QAAAAAAAAAAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAA", - "BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD7AAAAAAAAAPsAAAAAAAAAAAAAAAAA8L8" + "AQAAAC8BAAAAAAAALwEAAAAAAAACAAAALjU", + "AQAAAAAAAAABAAAALwEAAAAAAAAxAQAAAAAAAAAAAAAAAPC/" ] ] } @@ -3134,6 +140,22 @@ "last_filter": "", "selected_items": [ + [ + "comment", + "Toggle Comment" + ], + [ + "install", + "Package Control: Install Package" + ], + [ + "lsp", + "LSP: Toggle Diagnostics Panel" + ], + [ + "rename", + "LSP: Rename" + ], [ "brea", "Python Breakpoints: Clear All" @@ -3166,14 +188,6 @@ "insta", "Package Control: Install Package" ], - [ - "install", - "Package Control: Install Package" - ], - [ - "lsp", - "LSP: Toggle Diagnostics Panel" - ], [ "diag", "LSP: Toggle Diagnostics Panel" @@ -3194,10 +208,6 @@ "upg", "Package Control: Upgrade Package" ], - [ - "comment", - "Toggle Comment" - ], [ "form", "LSP: Format Document" @@ -3269,28 +279,39 @@ ], "file_history": [ + "/home/yannic/work/stacosys/stacosys/interface/form.py", + "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/background.py", + "/home/yannic/work/stacosys/config-dev.ini", + "/home/yannic/work/stacosys/stacosys/service/mail.py", + "/home/yannic/work/stacosys/tests/test_mail.py", + "/home/yannic/work/stacosys/Makefile", + "/home/yannic/work/stacosys/tests/test_db.py", + "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/builtins.pyi", + "/home/yannic/work/stacosys/stacosys/run.py", + "/home/yannic/work/stacosys/tests/test_config.py", + "/home/yannic/work/stacosys/.venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi", + "/usr/lib64/python3.11/smtplib.py", + "/home/yannic/work/stacosys/stacosys/interface/web/admin.py", + "/home/yannic/work/stacosys/stacosys/service/configuration.py", + "/home/yannic/work/stacosys/config.ini", + "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", + "/home/yannic/work/stacosys/comments.xml", + "/home/yannic/work/stacosys/tests/test_api.py", + "/home/yannic/work/stacosys/stacosys/service/__init__.py", + "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/PyRSS2Gen.py", "/home/yannic/work/blog/README.md", "/home/yannic/work/blog/Dockerfile", "/usr/lib64/python3.11/logging/__init__.py", "/home/yannic/work/stacosys/stacosys/core/__init__.py", - "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", - "/home/yannic/work/stacosys/stacosys/service/mail.py", "/home/yannic/work/stacosys/stacosys/core/configuration.py", - "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/builtins.pyi", "/home/yannic/work/stacosys/.pylintrc", - "/home/yannic/work/stacosys/stacosys/interface/form.py", - "/home/yannic/work/stacosys/tests/test_config.py", "/home/yannic/work/stacosys/tests/test_form.py", - "/home/yannic/work/stacosys/tests/test_api.py", "/home/yannic/work/stacosys/stacosys/core/mailer.py", "/home/yannic/work/stacosys/stacosys/conf/config.py", "/home/yannic/work/stacosys/stacosys/core/rss.py", "/home/yannic/work/stacosys/stacosys/db/dao.py", - "/home/yannic/work/stacosys/stacosys/run.py", "/home/yannic/work/stacosys/stacosys/db/database.py", - "/home/yannic/work/stacosys/Makefile", "/home/yannic/work/stacosys/run.sh", - "/home/yannic/work/stacosys/stacosys/interface/web/admin.py", "/home/yannic/work/stacosys/stacosys/interface/__init__.py", "/home/yannic/work/stacosys/stacosys/interface/api.py", "/home/yannic/work/stacosys/stacosys.sublime-project", @@ -3303,7 +324,7 @@ ], "find": { - "height": 28.0 + "height": 40.0 }, "find_in_files": { @@ -3318,6 +339,8 @@ "case_sensitive": false, "find_history": [ + "apscheduler", + "_lang", "config", "SITE_TOKE", "app.conf", @@ -3346,140 +369,25 @@ [ { "buffer": 0, - "file": "stacosys/interface/web/admin.py", - "semi_transient": false, - "settings": - { - "buffer_size": 2472, - "regions": - { - "bp-718b6604": - { - "flags": 16, - "icon": "Packages/Theme - Default/common/circle.png", - "regions": - [ - [ - 826, - 826 - ] - ], - "scope": "invalid" - } - }, - "selection": - [ - [ - 1207, - 1207 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 8, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/interface/web/admin.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 1, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 1, - "file": "tests/test_config.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1382, - "regions": - { - }, - "selection": - [ - [ - 1222, - 1222 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 4, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_config.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 2, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 2, - "file": "Dockerfile", + "file": "pyproject.toml", "selected": true, - "semi_transient": true, + "semi_transient": false, "settings": { - "buffer_size": 716, + "buffer_size": 620, "regions": { }, "selection": [ [ - 0, - 0 + 481, + 481 ] ], "settings": { - "lsp_uri": "file:///home/yannic/work/stacosys/Dockerfile", + "lsp_uri": "file:///home/yannic/work/stacosys/pyproject.toml", "syntax": "Packages/Text/Plain text.tmLanguage" }, "translation.x": 0.0, @@ -3489,240 +397,6 @@ "stack_index": 0, "stack_multiselect": false, "type": "text" - }, - { - "buffer": 3, - "file": "tests/test_api.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1634, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 4, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_api.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 114.0, - "zoom_level": 1.0 - }, - "stack_index": 3, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 4, - "file": "stacosys/service/__init__.py", - "semi_transient": false, - "settings": - { - "buffer_size": 180, - "regions": - { - }, - "selection": - [ - [ - 149, - 149 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 5, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/__init__.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 4, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 5, - "file": "stacosys/interface/form.py", - "semi_transient": false, - "settings": - { - "buffer_size": 2659, - "regions": - { - }, - "selection": - [ - [ - 2356, - 2356 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 6, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/interface/form.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 1311.0, - "zoom_level": 1.0 - }, - "stack_index": 5, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 6, - "file": "stacosys/run.py", - "semi_transient": false, - "settings": - { - "buffer_size": 2789, - "regions": - { - }, - "selection": - [ - [ - 2063, - 2063 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 6, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/run.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 6, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 7, - "file": "Makefile", - "semi_transient": false, - "settings": - { - "buffer_size": 253, - "regions": - { - }, - "selection": - [ - [ - 251, - 251 - ] - ], - "settings": - { - "lsp_uri": "file:///home/yannic/work/stacosys/Makefile", - "syntax": "Packages/Makefile/Makefile.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": false - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 7, - "stack_multiselect": false, - "type": "text" } ] } @@ -3799,6 +473,18 @@ "last_filter": "", "selected_items": [ + [ + "socket.p", + ".venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi" + ], + [ + "mail", + "stacosys/service/mail.py" + ], + [ + "conf", + "stacosys/service/configuration.py" + ] ], "width": 0.0 }, @@ -3828,7 +514,7 @@ "show_open_files": false, "show_tabs": true, "side_bar_visible": true, - "side_bar_width": 302.0, + "side_bar_width": 299.0, "status_bar_visible": true, "template_settings": { From bafc0af92cd0f8fb10503fbcc93b1bbff0c7ced4 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 30 Nov 2022 11:46:57 +0100 Subject: [PATCH 084/182] Share new comment function --- stacosys/interface/__init__.py | 34 ++++++++++++++++++++++++++++++++++ stacosys/interface/api.py | 6 ++++-- stacosys/interface/form.py | 32 ++------------------------------ 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/stacosys/interface/__init__.py b/stacosys/interface/__init__.py index 540e40e..d72483d 100644 --- a/stacosys/interface/__init__.py +++ b/stacosys/interface/__init__.py @@ -1,9 +1,43 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import logging + +import background from flask import Flask +from stacosys.db import dao +from stacosys.service import config, mailer +from stacosys.service.configuration import ConfigParameter + app = Flask(__name__) # Set the secret key to some random bytes. Keep this really secret! app.secret_key = b'_5#y2L"F4Q8z\n\xec]/' + +logger = logging.getLogger(__name__) + + +@background.task +def submit_new_comment(comment): + site_url = config.get(ConfigParameter.SITE_URL) + comment_list = ( + f"Web admin interface: {site_url}/web/admin", + "", + f"author: {comment.author_name}", + f"site: {comment.author_site}", + f"date: {comment.created}", + f"url: {comment.url}", + "", + comment.content, + "", + ) + email_body = "\n".join(comment_list) + + # send email to notify admin + site_name = config.get(ConfigParameter.SITE_NAME) + subject = f"STACOSYS {site_name}" + if mailer.send(subject, email_body): + logger.debug("new comment processed") + # save notification datetime + dao.notify_comment(comment) diff --git a/stacosys/interface/api.py b/stacosys/interface/api.py index 06aa07f..13dbcff 100644 --- a/stacosys/interface/api.py +++ b/stacosys/interface/api.py @@ -6,7 +6,7 @@ import logging from flask import jsonify, request from stacosys.db import dao -from stacosys.interface import app +from stacosys.interface import app, submit_new_comment logger = logging.getLogger(__name__) @@ -38,6 +38,8 @@ def query_comments(): @app.route("/api/comments/count", methods=["GET"]) def get_comments_count(): - # TODO process pending comments + # send notification for pending e-mails asynchronously + for comment in dao.find_not_notified_comments(): + submit_new_comment(comment) url = request.args.get("url", "") return jsonify({"count": dao.count_published_comments(url)}) diff --git a/stacosys/interface/form.py b/stacosys/interface/form.py index 20722f9..8513438 100644 --- a/stacosys/interface/form.py +++ b/stacosys/interface/form.py @@ -2,12 +2,11 @@ # -*- coding: utf-8 -*- import logging -import background from flask import abort, redirect, request from stacosys.db import dao -from stacosys.interface import app -from stacosys.service import config, mailer +from stacosys.interface import app, submit_new_comment +from stacosys.service import config from stacosys.service.configuration import ConfigParameter logger = logging.getLogger(__name__) @@ -55,30 +54,3 @@ def check_form_data(posted_comment): fields = ["url", "message", "site", "remarque", "author", "token", "email"] filtered = dict(filter(lambda x: x[0] not in fields, posted_comment.items())) return not filtered - - -@background.task -def submit_new_comment(comment): - site_url = config.get(ConfigParameter.SITE_URL) - comment_list = ( - f"Web admin interface: {site_url}/web/admin", - "", - f"author: {comment.author_name}", - f"site: {comment.author_site}", - f"date: {comment.created}", - f"url: {comment.url}", - "", - comment.content, - "", - ) - email_body = "\n".join(comment_list) - - # send email to notify admin - site_name = config.get(ConfigParameter.SITE_NAME) - subject = f"STACOSYS {site_name}" - if mailer.send(subject, email_body): - logger.debug("new comment processed") - # save notification datetime - dao.notify_comment(comment) - else: - logger.warning("rescheduled. send mail failure %s", subject) From 1522f2826d763e1fd756559a4fe105901eba4ae9 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Thu, 1 Dec 2022 20:35:48 +0100 Subject: [PATCH 085/182] Replace DB layer Peewee by PyDal --- config.ini | 2 +- poetry.lock | 24 +- pyproject.toml | 2 +- stacosys.sublime-workspace | 8928 ++++++++++++++++++++++++++++- stacosys/db/__init__.py | 30 + stacosys/db/dao.py | 59 +- stacosys/db/database.py | 26 - stacosys/model/comment.py | 26 +- stacosys/run.py | 8 +- stacosys/service/configuration.py | 2 +- stacosys/service/rssfeed.py | 9 +- tests/test_api.py | 2 +- tests/test_config.py | 10 +- tests/test_db.py | 2 +- tests/test_form.py | 2 +- 15 files changed, 8962 insertions(+), 170 deletions(-) delete mode 100644 stacosys/db/database.py diff --git a/config.ini b/config.ini index 5cd951a..f6ff236 100755 --- a/config.ini +++ b/config.ini @@ -2,7 +2,7 @@ ; Default configuration [main] lang = fr -db_sqlite_file = db.sqlite +db = sqlite://db.sqlite [site] name = "My blog" diff --git a/poetry.lock b/poetry.lock index c5a9026..2bb08e3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -315,14 +315,6 @@ category = "dev" optional = false python-versions = ">=3.7" -[[package]] -name = "peewee" -version = "3.15.4" -description = "a little orm" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "platformdirs" version = "2.5.4" @@ -355,6 +347,14 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "pydal" +version = "20221110.1" +description = "a pure Python Database Abstraction Layer (for python version 2.7 and 3.x)" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pyflakes" version = "3.0.1" @@ -524,7 +524,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [metadata] lock-version = "1.1" python-versions = "~3.11" -content-hash = "c7fd5e51d22b64ab20394250b12819609483e7e825996bb8c62e6bb2bb537951" +content-hash = "eae5d8539c8fd2e80b005124c5439a61310128f7427bdc20affa92dec85085ee" [metadata.files] astroid = [ @@ -788,9 +788,6 @@ pathspec = [ {file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"}, {file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"}, ] -peewee = [ - {file = "peewee-3.15.4.tar.gz", hash = "sha256:2581520c8dfbacd9d580c2719ae259f0637a9e46eda47dfc0ce01864c6366205"}, -] platformdirs = [ {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, @@ -803,6 +800,9 @@ pycodestyle = [ {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"}, {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"}, ] +pydal = [ + {file = "pydal-20221110.1.tar.gz", hash = "sha256:7c3e891c70f8d8918e36276f210a1959bb7badf3b276f47191986ffcf5b6a390"}, +] pyflakes = [ {file = "pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"}, {file = "pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"}, diff --git a/pyproject.toml b/pyproject.toml index f048766..3eff290 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,10 +12,10 @@ pyrss2gen = "^1.1" markdown = "^3.1.1" requests = "^2.25.1" coverage = "^6.5" -peewee = "^3.14.8" background = "^0.2.1" Flask = "^2.1.1" types-markdown = "^3.4.2.1" +pydal = "^20221110.1" [tool.poetry.group.dev.dependencies] pylint = "^2.15" diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace index a2e5ee9..00ac913 100644 --- a/stacosys.sublime-workspace +++ b/stacosys.sublime-workspace @@ -3,6 +3,26 @@ { "selected_items": [ + [ + "au", + "author_gravatar=" + ], + [ + "auth", + "author_site=" + ], + [ + "db", + "db_uri" + ], + [ + "db_", + "db_uri" + ], + [ + "r", + "rss" + ], [ "c", "check" @@ -15,10 +35,6 @@ "EXP", "EXPECTED_HTTP_PORT" ], - [ - "auth", - "auth_login" - ], [ "l", "login" @@ -52,79 +68,8239 @@ "buffers": [ { - "file": "pyproject.toml", - "redo_stack": - [ - [ - 84, - 1, - "insert", - { - "characters": ".1" - }, - "AgAAADABAAAAAAAAMAEAAAAAAAABAAAAMS8BAAAAAAAALwEAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAMQEAAAAAAAAxAQAAAAAAAAAAAAAAAPC/" - ] - ], + "file": "stacosys/db/__init__.py", "settings": { - "buffer_size": 620, + "buffer_size": 672, "encoding": "UTF-8", "line_ending": "Unix" }, "undo_stack": [ [ - 16, + 1, + 1, + "paste", + null, + "AQAAAAAAAAAAAAAALQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 3, 1, "insert", { - "characters": "6" + "characters": "\n\nd" }, - "AgAAACIBAAAAAAAAIwEAAAAAAAAAAAAAIwEAAAAAAAAjAQAAAAAAAAEAAAA1", - "AQAAAAAAAAABAAAAIgEAAAAAAAAjAQAAAAAAAAAAAAAAAPC/" + "AwAAAC0AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAADAAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAA8L8" ], [ - 25, + 4, 1, - "right_delete", - null, - "AQAAAMIBAAAAAAAAwgEAAAAAAAACAAAALjU", - "AQAAAAAAAAABAAAAwgEAAAAAAADEAQAAAAAAAAAAAAAAAPC/" + "insert", + { + "characters": "b" + }, + "AQAAADAAAAAAAAAAMQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAA8L8" ], [ - 43, + 5, 1, - "right_delete", - null, - "AQAAAMIAAAAAAAAAwgAAAAAAAAAWAAAAYXBzY2hlZHVsZXIgPSAiXjMuNi4zIg", - "AQAAAAAAAAABAAAA2AAAAAAAAADCAAAAAAAAAAAAAAAAAAAA" + "insert", + { + "characters": " =" + }, + "AgAAADEAAAAAAAAAMgAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAxAAAAAAAAADEAAAAAAAAAAAAAAAAA8L8" ], [ - 44, + 6, + 1, + "insert", + { + "characters": " None" + }, + "BQAAADMAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADYAAAAAAAAAAAAAADYAAAAAAAAANwAAAAAAAAAAAAAANwAAAAAAAAA4AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 11, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAC4AAAAAAAAALwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAuAAAAAAAAAC4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 12, + 1, + "paste", + null, + "AQAAAC8AAAAAAAAASwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAvAAAAAAAAAC8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 13, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAEsAAAAAAAAATAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLAAAAAAAAAEsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 15, + 1, + "insert", + { + "characters": "\n\n" + }, + "AgAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABWAAAAAAAAAFYAAAAAAAAAAAAAAAAAAAA" + ], + [ + 16, + 1, + "paste", + null, + "AQAAAFgAAAAAAAAA6wAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABYAAAAAAAAAFgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 21, + 1, + "insert", + { + "characters": "i" + }, + "AgAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABoAAAAAAAAAAEAAABs", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABoAAAAAAAAAGcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 29, + 1, + "insert", + { + "characters": "db" + }, + "AwAAAG8AAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAA8AAABkYi5pbml0KGRiX3VybClwAAAAAAAAAHEAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABvAAAAAAAAAH4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 30, + 1, + "insert", + { + "characters": " " + }, + "AgAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABxAAAAAAAAAHEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 31, 1, "left_delete", null, - "AQAAAMEAAAAAAAAAwQAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAwgAAAAAAAADCAAAAAAAAAAAAAAAAAPC/" + "AQAAAHIAAAAAAAAAcgAAAAAAAAABAAAAIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABzAAAAAAAAAHMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 32, + 1, + "insert", + { + "characters": "=" + }, + "AQAAAHIAAAAAAAAAcwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 33, + 1, + "insert", + { + "characters": " " + }, + "AQAAAHMAAAAAAAAAdAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABzAAAAAAAAAHMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 35, + 1, + "", + null, + "AQAAAHQAAAAAAAAAjgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 39, + 1, + "insert", + { + "characters": "db_" + }, + "BAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAAAB5AAAAAAAAABUAAAAnc3FsaXRlOi8vc3RvcmFnZS5kYid5AAAAAAAAAHoAAAAAAAAAAAAAAHoAAAAAAAAAewAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACNAAAAAAAAAHgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 42, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"sortText\":\"09.9999.db_uri\",\"kind\":6,\"data\":{\"position\":{\"line\":8,\"character\":16},\"symbolLabel\":\"db_uri\",\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_uri\"},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "db_uri" + }, + "AgAAAHgAAAAAAAAAeAAAAAAAAAADAAAAZGJfeAAAAAAAAAB+AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB7AAAAAAAAAHsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 46, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACEAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AAAAAAAAAH8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 48, + 1, + "trim_trailing_white_space", + null, + "AQAAAIAAAAAAAAAAgAAAAAAAAAAEAAAAICAgIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACEAAAAAAAAAIQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 55, + 1, + "reindent", + null, + "AQAAAIAAAAAAAAAAhAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 56, + 1, + "insert", + { + "characters": "db." + }, + "AwAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAACGAAAAAAAAAIcAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACEAAAAAAAAAIQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 57, + 1, + "insert", + { + "characters": "defi" + }, + "BAAAAIcAAAAAAAAAiAAAAAAAAAAAAAAAiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACHAAAAAAAAAIcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 58, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"sortText\":\"09.9999.define_table\",\"kind\":2,\"data\":{\"position\":{\"line\":9,\"character\":11},\"symbolLabel\":\"define_table\",\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"define_table\"},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "define_table" + }, + "AgAAAIcAAAAAAAAAhwAAAAAAAAAEAAAAZGVmaYcAAAAAAAAAkwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACLAAAAAAAAAIsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 59, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAJMAAAAAAAAAlQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACTAAAAAAAAAJMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 60, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAJQAAAAAAAAAlgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACUAAAAAAAAAJQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 61, + 1, + "insert", + { + "characters": "comment" + }, + "BwAAAJUAAAAAAAAAlgAAAAAAAAAAAAAAlgAAAAAAAACXAAAAAAAAAAAAAACXAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAmQAAAAAAAAAAAAAAmQAAAAAAAACaAAAAAAAAAAAAAACaAAAAAAAAAJsAAAAAAAAAAAAAAJsAAAAAAAAAnAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACVAAAAAAAAAJUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 67, + 1, + "left_delete", + null, + "AQAAAJ8AAAAAAAAAnwAAAAAAAABsAAAAICAgIGRiLmNvbm5lY3QoKQoKICAgIGZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKICAgIGRiLmNyZWF0ZV90YWJsZXMoW0NvbW1lbnRdLCBzYWZlPVRydWUp", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAQAAAAAAAJ8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 70, + 1, + "insert", + { + "characters": ";" + }, + "AQAAAJ0AAAAAAAAAngAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdAAAAAAAAAJ0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 71, + 1, + "left_delete", + null, + "AQAAAJ0AAAAAAAAAnQAAAAAAAAABAAAAOw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeAAAAAAAAAJ4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 72, + 1, + "insert", + { + "characters": "," + }, + "AQAAAJ0AAAAAAAAAngAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdAAAAAAAAAJ0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 73, + 1, + "insert", + { + "characters": " " + }, + "AQAAAJ4AAAAAAAAAnwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeAAAAAAAAAJ4AAAAAAAAAAAAAAAAA8L8" ], [ 74, 1, "insert", { - "characters": "7" + "characters": "Field" }, - "AgAAAC4BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvAQAAAAAAAAEAAAA0", - "AQAAAAAAAAABAAAALgEAAAAAAAAvAQAAAAAAAAAAAAAAAPC/" + "BQAAAJ8AAAAAAAAAoAAAAAAAAAAAAAAAoAAAAAAAAAChAAAAAAAAAAAAAAChAAAAAAAAAKIAAAAAAAAAAAAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACkAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACfAAAAAAAAAJ8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 75, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAKQAAAAAAAAApgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACkAAAAAAAAAKQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 76, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAKUAAAAAAAAApwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 77, + 1, + "paste", + null, + "AQAAAKYAAAAAAAAAqQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACmAAAAAAAAAKYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 81, + 1, + "insert", + { + "characters": "," + }, + "AQAAAKsAAAAAAAAArAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAAAAAAAAAKsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 82, + 1, + "insert", + { + "characters": " F" + }, + "AgAAAKwAAAAAAAAArQAAAAAAAAAAAAAArQAAAAAAAACuAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsAAAAAAAAAKwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 83, + 1, + "insert", + { + "characters": "ield" + }, + "BAAAAK4AAAAAAAAArwAAAAAAAAAAAAAArwAAAAAAAACwAAAAAAAAAAAAAACwAAAAAAAAALEAAAAAAAAAAAAAALEAAAAAAAAAsgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACuAAAAAAAAAK4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 84, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAALIAAAAAAAAAtAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACyAAAAAAAAALIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 85, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAALMAAAAAAAAAtQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACzAAAAAAAAALMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 86, + 1, + "paste", + null, + "AQAAALQAAAAAAAAAuwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC0AAAAAAAAALQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 88, + 1, + "insert", + { + "characters": "," + }, + "AQAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC8AAAAAAAAALwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 89, + 1, + "insert", + { + "characters": " type=" + }, + "BgAAAL0AAAAAAAAAvgAAAAAAAAAAAAAAvgAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwQAAAAAAAAAAAAAAwQAAAAAAAADCAAAAAAAAAAAAAADCAAAAAAAAAMMAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC9AAAAAAAAAL0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 90, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAMMAAAAAAAAAxQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADDAAAAAAAAAMMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 91, + 1, + "insert", + { + "characters": "date" + }, + "BAAAAMQAAAAAAAAAxQAAAAAAAAAAAAAAxQAAAAAAAADGAAAAAAAAAAAAAADGAAAAAAAAAMcAAAAAAAAAAAAAAMcAAAAAAAAAyAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADEAAAAAAAAAMQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 95, + 1, + "insert", + { + "characters": ";" + }, + "AQAAAMoAAAAAAAAAywAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADKAAAAAAAAAMoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 96, + 1, + "insert", + { + "characters": " " + }, + "AQAAAMsAAAAAAAAAzAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLAAAAAAAAAMsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 97, + 2, + "left_delete", + null, + "AgAAAMsAAAAAAAAAywAAAAAAAAABAAAAIMoAAAAAAAAAygAAAAAAAAABAAAAOw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADMAAAAAAAAAMwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 98, + 1, + "insert", + { + "characters": "," + }, + "AQAAAMoAAAAAAAAAywAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADKAAAAAAAAAMoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 99, + 1, + "insert", + { + "characters": " " + }, + "AQAAAMsAAAAAAAAAzAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLAAAAAAAAAMsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 104, + 1, + "paste", + null, + "AQAAAMwAAAAAAAAA6QAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADMAAAAAAAAAMwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 110, + 1, + "paste", + null, + "AgAAANMAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADbAAAAAAAAAAcAAABjcmVhdGVk", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTAAAAAAAAANoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 114, + 1, + "insert", + { + "characters": "," + }, + "AQAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpAAAAAAAAAOkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 115, + 1, + "insert", + { + "characters": " de" + }, + "AwAAAOoAAAAAAAAA6wAAAAAAAAAAAAAA6wAAAAAAAADsAAAAAAAAAAAAAADsAAAAAAAAAO0AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqAAAAAAAAAOoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 116, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"sortText\":\"04.9999.default\",\"filterText\":\"default\",\"kind\":6,\"data\":{\"position\":{\"line\":9,\"character\":109},\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"default=\"},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "default=" + }, + "AgAAAOsAAAAAAAAA6wAAAAAAAAACAAAAZGXrAAAAAAAAAPMAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADtAAAAAAAAAO0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 117, + 1, + "insert", + { + "characters": "None" + }, + "BAAAAPMAAAAAAAAA9AAAAAAAAAAAAAAA9AAAAAAAAAD1AAAAAAAAAAAAAAD1AAAAAAAAAPYAAAAAAAAAAAAAAPYAAAAAAAAA9wAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADzAAAAAAAAAPMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 127, + 1, + "", + null, + "AgAAAPMAAAAAAAAA+gAAAAAAAAAAAAAA+gAAAAAAAAD6AAAAAAAAAAQAAABOb25l", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADzAAAAAAAAAPcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 133, + 2, + "left_delete", + null, + "AgAAAOoAAAAAAAAA6gAAAAAAAAARAAAAIGRlZmF1bHQ9REVGQVVMVCnpAAAAAAAAAOkAAAAAAAAAAQAAACw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqAAAAAAAAAPsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 135, + 1, + "insert", + { + "characters": "," + }, + "AQAAAOoAAAAAAAAA6wAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqAAAAAAAAAOoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 136, + 1, + "insert", + { + "characters": " " + }, + "AQAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrAAAAAAAAAOsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 141, + 1, + "paste", + null, + "AQAAAOsAAAAAAAAACQEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrAAAAAAAAAOsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 148, + 1, + "paste", + null, + "AgAAAPIAAAAAAAAA+wAAAAAAAAAAAAAA+wAAAAAAAAD7AAAAAAAAAAgAAABub3RpZmllZA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADyAAAAAAAAAPoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 153, + 1, + "insert", + { + "characters": "," + }, + "AQAAAAoBAAAAAAAACwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAKAQAAAAAAAAoBAAAAAAAAAAAAAAAA8L8" + ], + [ + 154, + 1, + "insert", + { + "characters": " " + }, + "AQAAAAsBAAAAAAAADAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAQAAAAAAAAsBAAAAAAAAAAAAAAAA8L8" + ], + [ + 155, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAAwBAAAAAAAADgEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAMAQAAAAAAAAwBAAAAAAAAAAAAAAAA8L8" + ], + [ + 156, + 1, + "run_macro_file", + { + "file": "res://Packages/Default/Delete Left Right.sublime-macro" + }, + "AgAAAAwBAAAAAAAADAEAAAAAAAABAAAAIgwBAAAAAAAADAEAAAAAAAABAAAAIg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAANAQAAAAAAAA0BAAAAAAAAAAAAAAAA8L8" + ], + [ + 157, + 1, + "insert", + { + "characters": "Field" + }, + "BQAAAAwBAAAAAAAADQEAAAAAAAAAAAAADQEAAAAAAAAOAQAAAAAAAAAAAAAOAQAAAAAAAA8BAAAAAAAAAAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAMAQAAAAAAAAwBAAAAAAAAAAAAAAAA8L8" + ], + [ + 158, + 1, + "insert", + { + "characters": "-" + }, + "AQAAABEBAAAAAAAAEgEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAARAQAAAAAAABEBAAAAAAAAAAAAAAAA8L8" + ], + [ + 159, + 1, + "left_delete", + null, + "AQAAABEBAAAAAAAAEQEAAAAAAAABAAAALQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAASAQAAAAAAABIBAAAAAAAAAAAAAAAA8L8" + ], + [ + 160, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAABEBAAAAAAAAEwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAARAQAAAAAAABEBAAAAAAAAAAAAAAAA8L8" + ], + [ + 161, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAABIBAAAAAAAAFAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAASAQAAAAAAABIBAAAAAAAAAAAAAAAA8L8" + ], + [ + 166, + 1, + "paste", + null, + "AQAAABMBAAAAAAAAHgEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAATAQAAAAAAABMBAAAAAAAAAAAAAAAA8L8" + ], + [ + 171, + 1, + "insert", + { + "characters": "," + }, + "AQAAACABAAAAAAAAIQEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgAQAAAAAAACABAAAAAAAAAAAAAAAA8L8" + ], + [ + 172, + 1, + "insert", + { + "characters": " " + }, + "AQAAACEBAAAAAAAAIgEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAhAQAAAAAAACEBAAAAAAAAAAAAAAAA8L8" + ], + [ + 173, + 1, + "paste", + null, + "AQAAACIBAAAAAAAANgEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAiAQAAAAAAACIBAAAAAAAAAAAAAAAA8L8" + ], + [ + 176, + 1, + "insert", + { + "characters": "site" + }, + "BQAAADABAAAAAAAAMQEAAAAAAAAAAAAAMQEAAAAAAAAxAQAAAAAAAAQAAABuYW1lMQEAAAAAAAAyAQAAAAAAAAAAAAAyAQAAAAAAADMBAAAAAAAAAAAAADMBAAAAAAAANAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA0AQAAAAAAADABAAAAAAAAAAAAAAAA8L8" + ], + [ + 178, + 1, + "insert", + { + "characters": ";" + }, + "AQAAADYBAAAAAAAANwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA2AQAAAAAAADYBAAAAAAAAAAAAAAAA8L8" + ], + [ + 179, + 1, + "left_delete", + null, + "AQAAADYBAAAAAAAANgEAAAAAAAABAAAAOw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3AQAAAAAAADcBAAAAAAAAAAAAAAAA8L8" + ], + [ + 180, + 1, + "insert", + { + "characters": "," + }, + "AQAAADYBAAAAAAAANwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA2AQAAAAAAADYBAAAAAAAAAAAAAAAA8L8" + ], + [ + 181, + 1, + "insert", + { + "characters": " " + }, + "AQAAADcBAAAAAAAAOAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3AQAAAAAAADcBAAAAAAAAAAAAAAAA8L8" + ], + [ + 182, + 1, + "paste", + null, + "AQAAADgBAAAAAAAARwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA4AQAAAAAAADgBAAAAAAAAAAAAAAAA8L8" + ], + [ + 190, + 1, + "paste", + null, + "AQAAADgBAAAAAAAATAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA4AQAAAAAAADgBAAAAAAAAAAAAAAAA8L8" + ], + [ + 192, + 1, + "cut", + null, + "AQAAAEwBAAAAAAAATAEAAAAAAAAPAAAAYXV0aG9yX2dyYXZhdGFy", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABMAQAAAAAAAFsBAAAAAAAAAAAAAAAA8L8" + ], + [ + 197, + 1, + "paste", + null, + "AgAAAD8BAAAAAAAATgEAAAAAAAAAAAAATgEAAAAAAABOAQAAAAAAAAsAAABhdXRob3Jfc2l0ZQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA/AQAAAAAAAEoBAAAAAAAAAAAAAAAA8L8" + ], + [ + 201, + 1, + "insert", + { + "characters": "," + }, + "AQAAADUBAAAAAAAANgEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA1AQAAAAAAADUBAAAAAAAAAAAAAAAA8L8" + ], + [ + 202, + 1, + "insert", + { + "characters": " ef" + }, + "AwAAADYBAAAAAAAANwEAAAAAAAAAAAAANwEAAAAAAAA4AQAAAAAAAAAAAAA4AQAAAAAAADkBAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA2AQAAAAAAADYBAAAAAAAAAAAAAAAA8L8" + ], + [ + 203, + 2, + "left_delete", + null, + "AgAAADgBAAAAAAAAOAEAAAAAAAABAAAAZjcBAAAAAAAANwEAAAAAAAABAAAAZQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA5AQAAAAAAADkBAAAAAAAAAAAAAAAA8L8" + ], + [ + 204, + 1, + "insert", + { + "characters": "default=" + }, + "CAAAADcBAAAAAAAAOAEAAAAAAAAAAAAAOAEAAAAAAAA5AQAAAAAAAAAAAAA5AQAAAAAAADoBAAAAAAAAAAAAADoBAAAAAAAAOwEAAAAAAAAAAAAAOwEAAAAAAAA8AQAAAAAAAAAAAAA8AQAAAAAAAD0BAAAAAAAAAAAAAD0BAAAAAAAAPgEAAAAAAAAAAAAAPgEAAAAAAAA/AQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3AQAAAAAAADcBAAAAAAAAAAAAAAAA8L8" + ], + [ + 205, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAD8BAAAAAAAAQQEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA/AQAAAAAAAD8BAAAAAAAAAAAAAAAA8L8" + ], + [ + 208, + 1, + "trim_trailing_white_space", + null, + "AQAAAFwBAAAAAAAAXAEAAAAAAAABAAAAIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABBAQAAAAAAAEEBAAAAAAAAAAAAAAAA8L8" + ], + [ + 219, + 1, + "insert", + { + "characters": "\ndef" + }, + "BAAAAFcAAAAAAAAAWAAAAAAAAAAAAAAAWAAAAAAAAABZAAAAAAAAAAAAAABZAAAAAAAAAFoAAAAAAAAAAAAAAFoAAAAAAAAAWwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABXAAAAAAAAAFcAAAAAAAAAAAAAAACAZkA" + ], + [ + 220, + 1, + "insert", + { + "characters": " _" + }, + "AgAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABbAAAAAAAAAFsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 221, + 1, + "insert", + { + "characters": "null" + }, + "BAAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdAAAAAAAAAF0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 222, + 4, + "left_delete", + null, + "BAAAAGAAAAAAAAAAYAAAAAAAAAABAAAAbF8AAAAAAAAAXwAAAAAAAAABAAAAbF4AAAAAAAAAXgAAAAAAAAABAAAAdV0AAAAAAAAAXQAAAAAAAAABAAAAbg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABhAAAAAAAAAGEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 223, + 1, + "insert", + { + "characters": "empty_s" + }, + "BwAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdAAAAAAAAAF0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 224, + 1, + "insert", + { + "characters": "tring" + }, + "BQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABpAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 225, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAGkAAAAAAAAAawAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABpAAAAAAAAAGkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 227, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAGsAAAAAAAAAbAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABrAAAAAAAAAGsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 228, + 1, + "insert", + { + "characters": "\nreturn" + }, + "CAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABxAAAAAAAAAAAAAABxAAAAAAAAAHIAAAAAAAAAAAAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABsAAAAAAAAAGwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 229, + 1, + "insert", + { + "characters": " " + }, + "AQAAAHcAAAAAAAAAeAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB3AAAAAAAAAHcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 230, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAHgAAAAAAAAAegAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB4AAAAAAAAAHgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 232, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAHoAAAAAAAAAewAAAAAAAAAAAAAAewAAAAAAAAB/AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB6AAAAAAAAAHoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 234, + 1, + "trim_trailing_white_space", + null, + "AQAAAHsAAAAAAAAAewAAAAAAAAAEAAAAICAgIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AAAAAAAAAH8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 242, + 1, + "insert", + { + "characters": "\n" + }, + "BAAAAPAAAAAAAAAA8QAAAAAAAAAAAAAA8QAAAAAAAAD1AAAAAAAAAAAAAADxAAAAAAAAAPEAAAAAAAAABAAAACAgICDxAAAAAAAAAPkAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADwAAAAAAAAAPAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 245, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAADkBAAAAAAAAOgEAAAAAAAAAAAAAOgEAAAAAAABCAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA5AQAAAAAAADkBAAAAAAAAAAAAAAAA8L8" + ], + [ + 250, + 1, + "paste", + null, + "AgAAAHUBAAAAAAAAggEAAAAAAAAAAAAAggEAAAAAAACCAQAAAAAAAAIAAAAiIg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB1AQAAAAAAAHcBAAAAAAAAAAAAAAAA8L8" + ], + [ + 252, + 1, + "trim_trailing_white_space", + null, + "AgAAADgBAAAAAAAAOAEAAAAAAAABAAAAIO8AAAAAAAAA7wAAAAAAAAABAAAAIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAQAAAAAAAIIBAAAAAAAAAAAAAAAA8L8" + ], + [ + 269, + 1, + "insert", + { + "characters": "," + }, + "AQAAAJoBAAAAAAAAmwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAQAAAAAAAJoBAAAAAAAAAAAAAAAA8L8" + ], + [ + 270, + 1, + "insert", + { + "characters": " " + }, + "AQAAAJsBAAAAAAAAnAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAQAAAAAAAJsBAAAAAAAAAAAAAAAA8L8" + ], + [ + 271, + 1, + "paste", + null, + "AQAAAJwBAAAAAAAAsQEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAQAAAAAAAJwBAAAAAAAAAAAAAAAA8L8" + ], + [ + 273, + 1, + "insert", + { + "characters": "," + }, + "AQAAALIBAAAAAAAAswEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACyAQAAAAAAALIBAAAAAAAAAAAAAAAA8L8" + ], + [ + 274, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAALMBAAAAAAAAtAEAAAAAAAAAAAAAtAEAAAAAAAC8AQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACzAQAAAAAAALMBAAAAAAAAAAAAAAAA8L8" + ], + [ + 275, + 1, + "insert", + { + "characters": "Field" + }, + "BQAAALwBAAAAAAAAvQEAAAAAAAAAAAAAvQEAAAAAAAC+AQAAAAAAAAAAAAC+AQAAAAAAAL8BAAAAAAAAAAAAAL8BAAAAAAAAwAEAAAAAAAAAAAAAwAEAAAAAAADBAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC8AQAAAAAAALwBAAAAAAAAAAAAAAAA8L8" + ], + [ + 276, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAMEBAAAAAAAAwwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADBAQAAAAAAAMEBAAAAAAAAAAAAAAAA8L8" + ], + [ + 277, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAMIBAAAAAAAAxAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADCAQAAAAAAAMIBAAAAAAAAAAAAAAAA8L8" + ], + [ + 278, + 1, + "insert", + { + "characters": "content" + }, + "BwAAAMMBAAAAAAAAxAEAAAAAAAAAAAAAxAEAAAAAAADFAQAAAAAAAAAAAADFAQAAAAAAAMYBAAAAAAAAAAAAAMYBAAAAAAAAxwEAAAAAAAAAAAAAxwEAAAAAAADIAQAAAAAAAAAAAADIAQAAAAAAAMkBAAAAAAAAAAAAAMkBAAAAAAAAygEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADDAQAAAAAAAMMBAAAAAAAAAAAAAAAA8L8" + ], + [ + 280, + 1, + "insert", + { + "characters": "," + }, + "AQAAAMsBAAAAAAAAzAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLAQAAAAAAAMsBAAAAAAAAAAAAAAAA8L8" + ], + [ + 281, + 1, + "insert", + { + "characters": " type\"\"" + }, + "BwAAAMwBAAAAAAAAzQEAAAAAAAAAAAAAzQEAAAAAAADOAQAAAAAAAAAAAADOAQAAAAAAAM8BAAAAAAAAAAAAAM8BAAAAAAAA0AEAAAAAAAAAAAAA0AEAAAAAAADRAQAAAAAAAAAAAADRAQAAAAAAANIBAAAAAAAAAAAAANIBAAAAAAAA0wEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADMAQAAAAAAAMwBAAAAAAAAAAAAAAAA8L8" + ], + [ + 283, + 1, + "insert", + { + "characters": "=" + }, + "AQAAANEBAAAAAAAA0gEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADRAQAAAAAAANEBAAAAAAAAAAAAAAAA8L8" + ], + [ + 287, + 1, + "insert", + { + "characters": ")" + }, + "AQAAANUBAAAAAAAA1gEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADVAQAAAAAAANUBAAAAAAAAAAAAAAAA8L8" + ], + [ + 290, + 1, + "insert", + { + "characters": "text" + }, + "BAAAANMBAAAAAAAA1AEAAAAAAAAAAAAA1AEAAAAAAADVAQAAAAAAAAAAAADVAQAAAAAAANYBAAAAAAAAAAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTAQAAAAAAANMBAAAAAAAAAAAAAAAA8L8" + ], + [ + 305, + 1, + "insert", + { + "characters": "confiu" + }, + "BwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACBAAAAAAAAAAUAAABzZXR1cIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAACDAAAAAAAAAIQAAAAAAAAAAAAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 306, + 1, + "left_delete", + null, + "AQAAAIUAAAAAAAAAhQAAAAAAAAABAAAAdQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACGAAAAAAAAAIYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 307, + 1, + "insert", + { + "characters": "gure" + }, + "BAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAiQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFAAAAAAAAAIUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 5, + 1, + "left_delete", + null, + "AQAAAG0BAAAAAAAAbQEAAAAAAAAXAAAALCBkZWZhdWx0PV9lbXB0eV9zdHJpbmc", + "AQAAAAAAAAABAAAAbQEAAAAAAACEAQAAAAAAAAAAAAAAAPC/" + ], + [ + 8, + 1, + "left_delete", + null, + "AQAAAIcBAAAAAAAAhwEAAAAAAAAXAAAALCBkZWZhdWx0PV9lbXB0eV9zdHJpbmc", + "AQAAAAAAAAABAAAAhwEAAAAAAACeAQAAAAAAAAAAAAAAAPC/" + ], + [ + 13, + 3, + "left_delete", + null, + "AwAAAFgAAAAAAAAAWAAAAAAAAAAiAAAAZGVmIF9lbXB0eV9zdHJpbmcoKToKICAgIHJldHVybiAiIlcAAAAAAAAAVwAAAAAAAAABAAAAClYAAAAAAAAAVgAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAegAAAAAAAABYAAAAAAAAAAAAAAAAAPC/" + ], + [ + 20, + 1, + "insert", + { + "characters": "time" + }, + "BAAAAMwAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADOAAAAAAAAAAAAAADOAAAAAAAAAM8AAAAAAAAAAAAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" + ], + [ + 23, + 1, + "insert", + { + "characters": "time" + }, + "BAAAABgBAAAAAAAAGQEAAAAAAAAAAAAAGQEAAAAAAAAaAQAAAAAAAAAAAAAaAQAAAAAAABsBAAAAAAAAAAAAABsBAAAAAAAAHAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGAEAAAAAAAAYAQAAAAAAAAAAAAAAIINA" + ], + [ + 26, + 1, + "insert", + { + "characters": "time" + }, + "BAAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAAAAAAD6AAAAAAAAAPsAAAAAAAAAAAAAAPsAAAAAAAAA/AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAAPC/" + ], + [ + 29, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAACZAQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpkYiA9IE5vbmUKCmRlZiBjb25maWd1cmUoZGJfdXJpKToKICAgIGRiID0gREFMKGRiX3VyaSkKICAgIGRiLmRlZmluZV90YWJsZSgiY29tbWVudCIsIEZpZWxkKCJ1cmwiKSwgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJub3RpZmllZCIsIHR5cGU9ImRhdGV0aW1lIiksRmllbGQoInB1Ymxpc2hlZCIsIHR5cGU9ImRhdGV0aW1lIiksCiAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLCBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgRmllbGQoImNvbnRlbnQiLCB0eXBlPSJ0ZXh0IikpCgAAAAAAAAAA0gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/AAAAAAAAAD8AAAAAAAAAAAAAAAAAPC/" + ], + [ + 36, + 1, + "insert", + { + "characters": "dal" + }, + "BAAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABTAAAAAAAAAAQAAABOb25lUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + ], + [ + 37, + 3, + "left_delete", + null, + "AwAAAFQAAAAAAAAAVAAAAAAAAAABAAAAbFMAAAAAAAAAUwAAAAAAAAABAAAAYVIAAAAAAAAAUgAAAAAAAAABAAAAZA", + "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 38, + 1, + "insert", + { + "characters": "dal" + }, + "AwAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUgAAAAAAAABSAAAAAAAAAAAAAAAAAPC/" + ], + [ + 39, + 3, + "left_delete", + null, + "AwAAAFQAAAAAAAAAVAAAAAAAAAABAAAAbFMAAAAAAAAAUwAAAAAAAAABAAAAYVIAAAAAAAAAUgAAAAAAAAABAAAAZA", + "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 40, + 1, + "insert", + { + "characters": "DAL)" + }, + "BAAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAFUAAAAAAAAAVgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUgAAAAAAAABSAAAAAAAAAAAAAAAAAPC/" + ], + [ + 41, + 1, + "left_delete", + null, + "AQAAAFUAAAAAAAAAVQAAAAAAAAABAAAAKQ", + "AQAAAAAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + ], + [ + 42, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAFUAAAAAAAAAVwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 56, + 1, + "insert", + { + "characters": "\ndb." + }, + "BQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACKAAAAAAAAAAAAAACKAAAAAAAAAIsAAAAAAAAAAAAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAjAAAAAAAAACNAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 57, + 1, + "insert", + { + "characters": "c" + }, + "AQAAAI0AAAAAAAAAjgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 58, + 1, + "insert", + { + "characters": "on" + }, + "AgAAAI4AAAAAAAAAjwAAAAAAAAAAAAAAjwAAAAAAAACQAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjgAAAAAAAACOAAAAAAAAAAAAAAAAAPC/" + ], + [ + 59, + 2, + "left_delete", + null, + "AgAAAI8AAAAAAAAAjwAAAAAAAAABAAAAbo4AAAAAAAAAjgAAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAPC/" + ], + [ + 62, + 1, + "left_delete", + null, + "AQAAAE4AAAAAAAAATgAAAAAAAAABAAAAYg", + "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + ], + [ + 63, + 1, + "insert", + { + "characters": "atabase" + }, + "BwAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATgAAAAAAAABOAAAAAAAAAAAAAAAAAPC/" + ], + [ + 71, + 1, + "paste", + null, + "AgAAAHsAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACDAAAAAAAAAAIAAABkYg", + "AQAAAAAAAAABAAAAewAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" + ], + [ + 75, + 1, + "paste", + null, + "AgAAAJ8AAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACnAAAAAAAAAAIAAABkYg", + "AQAAAAAAAAABAAAAoQAAAAAAAACfAAAAAAAAAAAAAAAAAPC/" + ], + [ + 79, + 1, + "insert", + { + "characters": "None" + }, + "BQAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABZAAAAAAAAAAUAAABEQUwoKVkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWAAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" + ], + [ + 83, + 1, + "insert", + { + "characters": "db_dal" + }, + "BwAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABOAAAAAAAAAAgAAABkYXRhYmFzZU4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 94, + 1, + "paste", + null, + "AgAAAHgAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAB+AAAAAAAAAAgAAABkYXRhYmFzZQ", + "AQAAAAAAAAABAAAAeAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + ], + [ + 98, + 1, + "right_delete", + null, + "AQAAAJEAAAAAAAAAkQAAAAAAAAAEAAAAZGIuYw", + "AQAAAAAAAAABAAAAlQAAAAAAAACRAAAAAAAAAAAAAAAAAEJA" + ], + [ + 100, + 1, + "left_delete", + null, + "AQAAAIwAAAAAAAAAjAAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAAAA" + ], + [ + 104, + 1, + "paste", + null, + "AgAAAJUAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACbAAAAAAAAAAgAAABkYXRhYmFzZQ", + "AQAAAAAAAAABAAAAlQAAAAAAAACdAAAAAAAAAAAAAAAAAPC/" + ], + [ + 106, + 1, + "trim_trailing_white_space", + null, + "AQAAAIwAAAAAAAAAjAAAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAmwAAAAAAAACbAAAAAAAAAAAAAAAAAPC/" + ], + [ + 114, + 1, + "insert", + { + "characters": "\ndb_dal." + }, + "CQAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" + ], + [ + 122, + 1, + "insert", + { + "characters": "DAL" + }, + "BAAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABXAAAAAAAAAAQAAABOb25lVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVgAAAAAAAABaAAAAAAAAAAAAAAAAAPC/" + ], + [ + 123, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAFkAAAAAAAAAWwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWQAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" + ], + [ + 130, + 1, + "left_delete", + null, + "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + ], + [ + 131, + 1, + "insert", + { + "characters": "." + }, + "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 135, + 1, + "right_delete", + null, + "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAgAAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 136, + 1, + "insert", + { + "characters": "." + }, + "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 142, + 1, + "insert", + { + "characters": "#" + }, + "AQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 152, + 1, + "left_delete", + null, + "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + ], + [ + 153, + 1, + "insert", + { + "characters": "." + }, + "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 154, + 1, + "insert", + { + "characters": "set" + }, + "AwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + ], + [ + 155, + 3, + "left_delete", + null, + "AwAAAIIAAAAAAAAAggAAAAAAAAABAAAAdIEAAAAAAAAAgQAAAAAAAAABAAAAZYAAAAAAAAAAgAAAAAAAAAABAAAAcw", + "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" + ], + [ + 156, + 1, + "insert", + { + "characters": "ur" + }, + "AgAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + ], + [ + 157, + 3, + "left_delete", + null, + "AwAAAIEAAAAAAAAAgQAAAAAAAAABAAAAcoAAAAAAAAAAgAAAAAAAAAABAAAAdX8AAAAAAAAAfwAAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAggAAAAAAAACCAAAAAAAAAAAAAAAAAPC/" + ], + [ + 158, + 1, + "insert", + { + "characters": ".co" + }, + "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 159, + 1, + "insert", + { + "characters": "n" + }, + "AQAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAggAAAAAAAACCAAAAAAAAAAAAAAAAAPC/" + ], + [ + 171, + 1, + "insert", + { + "characters": "None" + }, + "BAAAAFoAAAAAAAAAWwAAAAAAAAAAAAAAWwAAAAAAAABcAAAAAAAAAAAAAABcAAAAAAAAAF0AAAAAAAAAAAAAAF0AAAAAAAAAXgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWgAAAAAAAABaAAAAAAAAAAAAAAAAAPC/" + ], + [ + 181, + 1, + "left_delete", + null, + "AQAAAFoAAAAAAAAAWgAAAAAAAAAEAAAATm9uZQ", + "AQAAAAAAAAABAAAAWgAAAAAAAABeAAAAAAAAAAAAAAAAAPC/" + ], + [ + 189, + 1, + "insert", + { + "characters": "global" + }, + "BwAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB6AAAAAAAAAAoAAABkYl9kYWwuY29uegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgwAAAAAAAAB5AAAAAAAAAAAAAAAAAPC/" + ], + [ + 190, + 1, + "insert", + { + "characters": " db_dal" + }, + "BwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 193, + 1, + "right_delete", + null, + "AQAAAIsAAAAAAAAAiwAAAAAAAAABAAAAIw", + "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAEJA" + ], + [ + 203, + 3, + "right_delete", + null, + "AwAAAE0AAAAAAAAATQAAAAAAAAAPAAAAZGJfZGFsID0gREFMKCkKTQAAAAAAAABNAAAAAAAAAAEAAAAKTQAAAAAAAABNAAAAAAAAAAEAAAAK", + "AQAAAAAAAAABAAAAXAAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 206, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAADgAQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpkZWYgY29uZmlndXJlKGRiX3VyaSk6CiAgICBnbG9iYWwgZGJfZGFsCiAgICBkYl9kYWwgPSBEQUwoZGJfdXJpKQogICAgZGJfZGFsLmRlZmluZV90YWJsZSgKICAgICAgICAiY29tbWVudCIsCiAgICAgICAgRmllbGQoInVybCIpLAogICAgICAgIEZpZWxkKCJjcmVhdGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJwdWJsaXNoZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3JfbmFtZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3JfZ3JhdmF0YXIiKSwKICAgICAgICBGaWVsZCgiY29udGVudCIsIHR5cGU9InRleHQiKSwKICAgICkKAAAAAAAAAADhAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 214, + 1, + "insert", + { + "characters": "db" + }, + "AgAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 215, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAE8AAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAABRAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + ], + [ + 216, + 3, + "left_delete", + null, + "AwAAAFAAAAAAAAAAUAAAAAAAAAABAAAAPU8AAAAAAAAATwAAAAAAAAABAAAAIE4AAAAAAAAATgAAAAAAAAABAAAAYg", + "AQAAAAAAAAABAAAAUQAAAAAAAABRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 217, + 1, + "insert", + { + "characters": "a" + }, + "AQAAAE4AAAAAAAAATwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATgAAAAAAAABOAAAAAAAAAAAAAAAAAPC/" + ], + [ + 218, + 1, + "left_delete", + null, + "AQAAAE4AAAAAAAAATgAAAAAAAAABAAAAYQ", + "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + ], + [ + 219, + 1, + "insert", + { + "characters": "atabase" + }, + "BwAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATgAAAAAAAABOAAAAAAAAAAAAAAAAAPC/" + ], + [ + 220, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 221, + 1, + "insert", + { + "characters": " " + }, + "AQAAAFcAAAAAAAAAWAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVwAAAAAAAABXAAAAAAAAAAAAAAAAAPC/" + ], + [ + 223, + 1, + "insert", + { + "characters": "Databas" + }, + "BwAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAAAAAAF4AAAAAAAAAXwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWAAAAAAAAABYAAAAAAAAAAAAAAAAAPC/" + ], + [ + 224, + 1, + "insert", + { + "characters": "e" + }, + "AQAAAF8AAAAAAAAAYAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXwAAAAAAAABfAAAAAAAAAAAAAAAAAPC/" + ], + [ + 225, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAGAAAAAAAAAAYgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAPC/" + ], + [ + 227, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAGIAAAAAAAAAYwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYgAAAAAAAABiAAAAAAAAAAAAAAAAAPC/" + ], + [ + 230, + 1, + "insert", + { + "characters": "\nclass" + }, + "BgAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAGYAAAAAAAAAZwAAAAAAAAAAAAAAZwAAAAAAAABoAAAAAAAAAAAAAABoAAAAAAAAAGkAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAAAA" + ], + [ + 231, + 1, + "insert", + { + "characters": " Database" + }, + "CQAAAGkAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAG8AAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAABxAAAAAAAAAAAAAABxAAAAAAAAAHIAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" + ], + [ + 232, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAHIAAAAAAAAAdAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcgAAAAAAAAByAAAAAAAAAAAAAAAAAPC/" + ], + [ + 234, + 2, + "left_delete", + null, + "AgAAAHMAAAAAAAAAcwAAAAAAAAABAAAAKXIAAAAAAAAAcgAAAAAAAAABAAAAKA", + "AQAAAAAAAAABAAAAdAAAAAAAAAB0AAAAAAAAAAAAAAAAAPC/" + ], + [ + 235, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAHIAAAAAAAAAcwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcgAAAAAAAAByAAAAAAAAAAAAAAAAAPC/" + ], + [ + 236, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" + ], + [ + 243, + 1, + "indent", + null, + "DgAAAHkAAAAAAAAAfQAAAAAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAAAAAACqAAAAAAAAAK4AAAAAAAAAAAAAAMcAAAAAAAAAywAAAAAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAAAAAAD7AAAAAAAAAP8AAAAAAAAAAAAAABUBAAAAAAAAGQEAAAAAAAAAAAAARAEAAAAAAABIAQAAAAAAAAAAAAB0AQAAAAAAAHgBAAAAAAAAAAAAAKUBAAAAAAAAqQEAAAAAAAAAAAAAxwEAAAAAAADLAQAAAAAAAAAAAADpAQAAAAAAAO0BAAAAAAAAAAAAAA8CAAAAAAAAEwIAAAAAAAAAAAAAOgIAAAAAAAA+AgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAeQAAAAAAAAAMAgAAAAAAAAAAAAAAAAAA" + ], + [ + 250, + 1, + "insert", + { + "characters": "self," + }, + "BgAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAdAAAAAAAAAB0AAAAAAAAAAQAAAAgICAgiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAPC/" + ], + [ + 254, + 1, + "insert", + { + "characters": "\n\ndef" + }, + "CAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAfQAAAAAAAAAAAAAAdAAAAAAAAAB0AAAAAAAAAAQAAAAgICAgeQAAAAAAAAB6AAAAAAAAAAAAAAB6AAAAAAAAAHsAAAAAAAAAAAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" + ], + [ + 255, + 1, + "insert", + { + "characters": " __init" + }, + "BwAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAAPC/" + ], + [ + 256, + 1, + "insert", + { + "characters": "__" + }, + "AgAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" + ], + [ + 257, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAIUAAAAAAAAAhwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 259, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAIcAAAAAAAAAiAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" + ], + [ + 260, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAAIgAAAAAAAAAiQAAAAAAAAAAAAAAiQAAAAAAAACNAAAAAAAAAAAAAACNAAAAAAAAAJEAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" + ], + [ + 261, + 1, + "insert", + { + "characters": "slef" + }, + "BAAAAJEAAAAAAAAAkgAAAAAAAAAAAAAAkgAAAAAAAACTAAAAAAAAAAAAAACTAAAAAAAAAJQAAAAAAAAAAAAAAJQAAAAAAAAAlQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 262, + 3, + "left_delete", + null, + "AwAAAJQAAAAAAAAAlAAAAAAAAAABAAAAZpMAAAAAAAAAkwAAAAAAAAABAAAAZZIAAAAAAAAAkgAAAAAAAAABAAAAbA", + "AQAAAAAAAAABAAAAlQAAAAAAAACVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 263, + 1, + "insert", + { + "characters": "elf" + }, + "AwAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJUAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkgAAAAAAAACSAAAAAAAAAAAAAAAAAPC/" + ], + [ + 267, + 1, + "right_delete", + null, + "AQAAAHUAAAAAAAAAdQAAAAAAAAAhAAAAICAgIGRlZiBfX2luaXRfXygpOgogICAgICAgIHNlbGYK", + "AQAAAAAAAAABAAAAdQAAAAAAAACWAAAAAAAAAAAAAAAAAAAA" + ], + [ + 270, + 1, + "reindent", + null, + "AQAAAHUAAAAAAAAAeQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdQAAAAAAAAB1AAAAAAAAAAAAAAAAAAAA" + ], + [ + 271, + 1, + "insert", + { + "characters": "db" + }, + "AgAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAeQAAAAAAAAB5AAAAAAAAAAAAAAAAAPC/" + ], + [ + 272, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" + ], + [ + 273, + 2, + "left_delete", + null, + "AgAAAHwAAAAAAAAAfAAAAAAAAAABAAAAPXsAAAAAAAAAewAAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAfQAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" + ], + [ + 274, + 1, + "insert", + { + "characters": "_dal" + }, + "BAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" + ], + [ + 275, + 1, + "left_delete", + null, + "AQAAAH4AAAAAAAAAfgAAAAAAAAABAAAAbA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 276, + 1, + "insert", + { + "characters": "l" + }, + "AQAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfgAAAAAAAAB+AAAAAAAAAAAAAAAAAPC/" + ], + [ + 277, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"09.9999.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":9,\"character\":10},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "db_dal" + }, + "AgAAAHkAAAAAAAAAeQAAAAAAAAAGAAAAZGJfZGFseQAAAAAAAAB/AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 278, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACEAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 281, + 1, + "insert", + { + "characters": " =" + }, + "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAAACBAAAAAAAAAAQAAAAgICAggAAAAAAAAACBAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 282, + 1, + "insert", + { + "characters": " None" + }, + "BQAAAIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAACDAAAAAAAAAIQAAAAAAAAAAAAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgQAAAAAAAACBAAAAAAAAAAAAAAAAAPC/" + ], + [ + 291, + 1, + "right_delete", + null, + "AQAAALAAAAAAAAAAsAAAAAAAAAANAAAAZ2xvYmFsIGRiX2RhbA", + "AQAAAAAAAAABAAAAsAAAAAAAAAC9AAAAAAAAAP///////+9/" + ], + [ + 293, + 1, + "left_delete", + null, + "AQAAAKcAAAAAAAAApwAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAqAAAAAAAAACoAAAAAAAAAAAAAAAAAAAA" + ], + [ + 296, + 1, + "insert", + { + "characters": "sl" + }, + "AgAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAuAAAAAAAAAC4AAAAAAAAAAAAAAAAAFJA" + ], + [ + 297, + 1, + "left_delete", + null, + "AQAAALkAAAAAAAAAuQAAAAAAAAABAAAAbA", + "AQAAAAAAAAABAAAAugAAAAAAAAC6AAAAAAAAAAAAAAAAAPC/" + ], + [ + 298, + 1, + "insert", + { + "characters": "elf." + }, + "BAAAALkAAAAAAAAAugAAAAAAAAAAAAAAugAAAAAAAAC7AAAAAAAAAAAAAAC7AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAuQAAAAAAAAC5AAAAAAAAAAAAAAAAAPC/" + ], + [ + 301, + 1, + "insert", + { + "characters": "self." + }, + "BQAAANoAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADcAAAAAAAAAAAAAADcAAAAAAAAAN0AAAAAAAAAAAAAAN0AAAAAAAAA3gAAAAAAAAAAAAAA3gAAAAAAAADfAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2gAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" + ], + [ + 303, + 1, + "trim_trailing_white_space", + null, + "AQAAAKcAAAAAAAAApwAAAAAAAAAIAAAAICAgICAgICA", + "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" + ], + [ + 309, + 1, + "cut", + null, + "AQAAAE0AAAAAAAAATQAAAAAAAAAVAAAAZGF0YWJhc2UgPSBEYXRhYmFzZSgp", + "AQAAAAAAAAABAAAAYgAAAAAAAABNAAAAAAAAAAAAAAAAAAAA" + ], + [ + 310, + 2, + "right_delete", + null, + "AgAAAE0AAAAAAAAATQAAAAAAAAABAAAACk0AAAAAAAAATQAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 316, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAADUCAAAAAAAANgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAAAAA" + ], + [ + 317, + 1, + "paste", + null, + "AQAAADYCAAAAAAAASwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANgIAAAAAAAA2AgAAAAAAAAAAAAAAAPC/" + ], + [ + 321, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAABLAgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpjbGFzcyBEYXRhYmFzZToKCiAgICBkYl9kYWwgPSBOb25lCgogICAgZGVmIGNvbmZpZ3VyZShzZWxmLGRiX3VyaSk6CiAgICAgICAgc2VsZi5kYl9kYWwgPSBEQUwoZGJfdXJpKQogICAgICAgIHNlbGYuZGJfZGFsLmRlZmluZV90YWJsZSgKICAgICAgICAgICAgImNvbW1lbnQiLAogICAgICAgICAgICBGaWVsZCgidXJsIiksCiAgICAgICAgICAgIEZpZWxkKCJjcmVhdGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoIm5vdGlmaWVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoInB1Ymxpc2hlZCIsIHR5cGU9ImRhdGV0aW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3JfbmFtZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX3NpdGUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9ncmF2YXRhciIpLAogICAgICAgICAgICBGaWVsZCgiY29udGVudCIsIHR5cGU9InRleHQiKSwKICAgICAgICApCgpkYXRhYmFzZSA9IERhdGFiYXNlKCkAAAAAAAAAAE8CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAoGdA" + ], + [ + 336, + 1, + "insert", + { + "characters": "Dal" + }, + "BAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAgAAABEYXRhYmFzZVUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVAAAAAAAAABcAAAAAAAAAAAAAAAAAPC/" + ], + [ + 340, + 1, + "insert", + { + "characters": "Db" + }, + "AwAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAMAAABEYWxVAAAAAAAAAFYAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVwAAAAAAAABUAAAAAAAAAAAAAAAAAPC/" + ], + [ + 341, + 2, + "left_delete", + null, + "AgAAAFUAAAAAAAAAVQAAAAAAAAABAAAAYlQAAAAAAAAAVAAAAAAAAAABAAAARA", + "AQAAAAAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + ], + [ + 342, + 1, + "insert", + { + "characters": "Db" + }, + "AgAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABWAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVAAAAAAAAABUAAAAAAAAAAAAAAAAAPC/" + ], + [ + 343, + 1, + "insert", + { + "characters": "Dal" + }, + "AwAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + ], + [ + 355, + 1, + "paste", + null, + "AgAAAEECAAAAAAAARgIAAAAAAAAAAAAARgIAAAAAAABGAgAAAAAAAAgAAABEYXRhYmFzZQ", + "AQAAAAAAAAABAAAAQQIAAAAAAABJAgAAAAAAAAAAAAAAAPC/" + ], + [ + 369, + 1, + "insert", + { + "characters": "Databse" + }, + "CAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAUAAABEYkRhbFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAABXAAAAAAAAAFgAAAAAAAAAAAAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVAAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" + ], + [ + 370, + 2, + "left_delete", + null, + "AgAAAFoAAAAAAAAAWgAAAAAAAAABAAAAZVkAAAAAAAAAWQAAAAAAAAABAAAAcw", + "AQAAAAAAAAABAAAAWwAAAAAAAABbAAAAAAAAAAAAAAAAAPC/" + ], + [ + 371, + 1, + "insert", + { + "characters": "ase" + }, + "AwAAAFkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWQAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" + ], + [ + 381, + 1, + "paste", + null, + "AgAAAEQCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABMAgAAAAAAAAUAAABEYkRhbA", + "AQAAAAAAAAABAAAARAIAAAAAAABJAgAAAAAAAAAAAAAAAPC/" + ], + [ + 386, + 1, + "insert", + { + "characters": "db" + }, + "AwAAADkCAAAAAAAAOgIAAAAAAAAAAAAAOgIAAAAAAAA6AgAAAAAAAAgAAABkYXRhYmFzZToCAAAAAAAAOwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQQIAAAAAAAA5AgAAAAAAAAAAAAAAAPC/" + ], + [ + 401, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAADcCAAAAAAAAOAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" + ], + [ + 402, + 1, + "reindent", + null, + "AQAAADgCAAAAAAAAQAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOAIAAAAAAAA4AgAAAAAAAAAAAAAAAPC/" + ], + [ + 403, + 1, + "left_delete", + null, + "AQAAADwCAAAAAAAAPAIAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 404, + 1, + "insert", + { + "characters": "def" + }, + "AwAAADwCAAAAAAAAPQIAAAAAAAAAAAAAPQIAAAAAAAA+AgAAAAAAAAAAAAA+AgAAAAAAAD8CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAPAIAAAAAAAA8AgAAAAAAAAAAAAAAAPC/" + ], + [ + 405, + 1, + "insert", + { + "characters": " " + }, + "AQAAAD8CAAAAAAAAQAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAPwIAAAAAAAA/AgAAAAAAAAAAAAAAAPC/" + ], + [ + 406, + 1, + "insert", + { + "characters": "dal" + }, + "AwAAAEACAAAAAAAAQQIAAAAAAAAAAAAAQQIAAAAAAABCAgAAAAAAAAAAAABCAgAAAAAAAEMCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 407, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAEMCAAAAAAAARQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQwIAAAAAAABDAgAAAAAAAAAAAAAAAPC/" + ], + [ + 410, + 1, + "insert", + { + "characters": "self" + }, + "BAAAAEQCAAAAAAAARQIAAAAAAAAAAAAARQIAAAAAAABGAgAAAAAAAAAAAABGAgAAAAAAAEcCAAAAAAAAAAAAAEcCAAAAAAAASAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAARAIAAAAAAABEAgAAAAAAAAAAAAAAAPC/" + ], + [ + 412, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAEkCAAAAAAAASgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASQIAAAAAAABJAgAAAAAAAAAAAAAAAPC/" + ], + [ + 413, + 1, + "insert", + { + "characters": "\nreturn" + }, + "CQAAAEoCAAAAAAAASwIAAAAAAAAAAAAASwIAAAAAAABPAgAAAAAAAAAAAABPAgAAAAAAAFMCAAAAAAAAAAAAAFMCAAAAAAAAVAIAAAAAAAAAAAAAVAIAAAAAAABVAgAAAAAAAAAAAABVAgAAAAAAAFYCAAAAAAAAAAAAAFYCAAAAAAAAVwIAAAAAAAAAAAAAVwIAAAAAAABYAgAAAAAAAAAAAABYAgAAAAAAAFkCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASgIAAAAAAABKAgAAAAAAAAAAAAAAAPC/" + ], + [ + 414, + 1, + "insert", + { + "characters": " self." + }, + "BgAAAFkCAAAAAAAAWgIAAAAAAAAAAAAAWgIAAAAAAABbAgAAAAAAAAAAAABbAgAAAAAAAFwCAAAAAAAAAAAAAFwCAAAAAAAAXQIAAAAAAAAAAAAAXQIAAAAAAABeAgAAAAAAAAAAAABeAgAAAAAAAF8CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWQIAAAAAAABZAgAAAAAAAAAAAAAAAPC/" + ], + [ + 415, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"05.0000.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":25,\"character\":20},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "db_dal" + }, + "AQAAAF8CAAAAAAAAZQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXwIAAAAAAABfAgAAAAAAAAAAAAAAAPC/" + ], + [ + 420, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAAB3AgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgoKY2xhc3MgRGF0YWJhc2U6CgogICAgZGJfZGFsID0gTm9uZQoKICAgIGRlZiBjb25maWd1cmUoc2VsZiwgZGJfdXJpKToKICAgICAgICBzZWxmLmRiX2RhbCA9IERBTChkYl91cmkpCiAgICAgICAgc2VsZi5kYl9kYWwuZGVmaW5lX3RhYmxlKAogICAgICAgICAgICAiY29tbWVudCIsCiAgICAgICAgICAgIEZpZWxkKCJ1cmwiKSwKICAgICAgICAgICAgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgicHVibGlzaGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgICAgIEZpZWxkKCJjb250ZW50IiwgdHlwZT0idGV4dCIpLAogICAgICAgICkKCiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbAoKZGIgPSBEYXRhYmFzZSgpCgAAAAAAAAAAeAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAZgIAAAAAAABmAgAAAAAAAAAAAAAAQG1A" + ], + [ + 437, + 1, + "insert", + { + "characters": "database" + }, + "CQAAAGgCAAAAAAAAaQIAAAAAAAAAAAAAaQIAAAAAAABpAgAAAAAAAAIAAABkYmkCAAAAAAAAagIAAAAAAAAAAAAAagIAAAAAAABrAgAAAAAAAAAAAABrAgAAAAAAAGwCAAAAAAAAAAAAAGwCAAAAAAAAbQIAAAAAAAAAAAAAbQIAAAAAAABuAgAAAAAAAAAAAABuAgAAAAAAAG8CAAAAAAAAAAAAAG8CAAAAAAAAcAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaAIAAAAAAABqAgAAAAAAAAAAAAAAAPC/" + ], + [ + 439, + 1, + "insert", + { + "characters": "db" + }, + "AgAAAH4CAAAAAAAAfwIAAAAAAAAAAAAAfwIAAAAAAACAAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfgIAAAAAAAB+AgAAAAAAAAAAAAAAAFJA" + ], + [ + 440, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACCAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 441, + 1, + "insert", + { + "characters": " data" + }, + "BQAAAIICAAAAAAAAgwIAAAAAAAAAAAAAgwIAAAAAAACEAgAAAAAAAAAAAACEAgAAAAAAAIUCAAAAAAAAAAAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACHAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAggIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + ], + [ + 442, + 1, + "insert", + { + "characters": "base" + }, + "BAAAAIcCAAAAAAAAiAIAAAAAAAAAAAAAiAIAAAAAAACJAgAAAAAAAAAAAACJAgAAAAAAAIoCAAAAAAAAAAAAAIoCAAAAAAAAiwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhwIAAAAAAACHAgAAAAAAAAAAAAAAAPC/" + ], + [ + 443, + 1, + "insert", + { + "characters": "." + }, + "AQAAAIsCAAAAAAAAjAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" + ], + [ + 444, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"05.0000.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":29,\"character\":14},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "db_dal" + }, + "AQAAAIwCAAAAAAAAkgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjAIAAAAAAACMAgAAAAAAAAAAAAAAAPC/" + ], + [ + 460, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAACSAgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgoKY2xhc3MgRGF0YWJhc2U6CgogICAgZGJfZGFsID0gTm9uZQoKICAgIGRlZiBjb25maWd1cmUoc2VsZiwgZGJfdXJpKToKICAgICAgICBzZWxmLmRiX2RhbCA9IERBTChkYl91cmkpCiAgICAgICAgc2VsZi5kYl9kYWwuZGVmaW5lX3RhYmxlKAogICAgICAgICAgICAiY29tbWVudCIsCiAgICAgICAgICAgIEZpZWxkKCJ1cmwiKSwKICAgICAgICAgICAgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgicHVibGlzaGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgICAgIEZpZWxkKCJjb250ZW50IiwgdHlwZT0idGV4dCIpLAogICAgICAgICkKCiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbAoKCmRhdGFiYXNlID0gRGF0YWJhc2UoKQpkYiA9IGRhdGFiYXNlLmRiX2RhbAAAAAAAAAAAkwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkgIAAAAAAACSAgAAAAAAAAAAAAAAAPC/" + ], + [ + 469, + 1, + "insert", + { + "characters": "DAL" + }, + "BAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABtAAAAAAAAAAQAAABOb25lbQAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbAAAAAAAAABwAAAAAAAAAAAAAAAAAPC/" + ], + [ + 470, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAG8AAAAAAAAAcQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbwAAAAAAAABvAAAAAAAAAAAAAAAAAPC/" + ], + [ + 482, + 2, + "left_delete", + null, + "AgAAADgCAAAAAAAAOAIAAAAAAAAuAAAACiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbDcCAAAAAAAANwIAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAZgIAAAAAAAA4AgAAAAAAAAAAAAAAAPC/" + ], + [ + 503, + 1, + "insert", + { + "characters": "\n\n" + }, + "BQAAADcCAAAAAAAAOAIAAAAAAAAAAAAAOAIAAAAAAABAAgAAAAAAAAAAAABAAgAAAAAAAEECAAAAAAAAAAAAAEECAAAAAAAASQIAAAAAAAAAAAAAOAIAAAAAAAA4AgAAAAAAAAgAAAAgICAgICAgIA", + "AQAAAAAAAAABAAAANwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" + ], + [ + 504, + 1, + "left_delete", + null, + "AQAAAD0CAAAAAAAAPQIAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAQQIAAAAAAABBAgAAAAAAAAAAAAAAAPC/" + ], + [ + 505, + 1, + "insert", + { + "characters": "def" + }, + "AwAAAD0CAAAAAAAAPgIAAAAAAAAAAAAAPgIAAAAAAAA/AgAAAAAAAAAAAAA/AgAAAAAAAEACAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAPQIAAAAAAAA9AgAAAAAAAAAAAAAAAPC/" + ], + [ + 506, + 1, + "insert", + { + "characters": " " + }, + "AQAAAEACAAAAAAAAQQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 507, + 1, + "insert", + { + "characters": "get" + }, + "AwAAAEECAAAAAAAAQgIAAAAAAAAAAAAAQgIAAAAAAABDAgAAAAAAAAAAAABDAgAAAAAAAEQCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQQIAAAAAAABBAgAAAAAAAAAAAAAAAPC/" + ], + [ + 508, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAEQCAAAAAAAARgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAARAIAAAAAAABEAgAAAAAAAAAAAAAAAPC/" + ], + [ + 509, + 1, + "insert", + { + "characters": "self" + }, + "BAAAAEUCAAAAAAAARgIAAAAAAAAAAAAARgIAAAAAAABHAgAAAAAAAAAAAABHAgAAAAAAAEgCAAAAAAAAAAAAAEgCAAAAAAAASQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAARQIAAAAAAABFAgAAAAAAAAAAAAAAAPC/" + ], + [ + 511, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAEoCAAAAAAAASwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASgIAAAAAAABKAgAAAAAAAAAAAAAAAPC/" + ], + [ + 512, + 1, + "insert", + { + "characters": "\nreturn" + }, + "CQAAAEsCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABQAgAAAAAAAAAAAABQAgAAAAAAAFQCAAAAAAAAAAAAAFQCAAAAAAAAVQIAAAAAAAAAAAAAVQIAAAAAAABWAgAAAAAAAAAAAABWAgAAAAAAAFcCAAAAAAAAAAAAAFcCAAAAAAAAWAIAAAAAAAAAAAAAWAIAAAAAAABZAgAAAAAAAAAAAABZAgAAAAAAAFoCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASwIAAAAAAABLAgAAAAAAAAAAAAAAAPC/" + ], + [ + 513, + 1, + "insert", + { + "characters": " sek" + }, + "BAAAAFoCAAAAAAAAWwIAAAAAAAAAAAAAWwIAAAAAAABcAgAAAAAAAAAAAABcAgAAAAAAAF0CAAAAAAAAAAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWgIAAAAAAABaAgAAAAAAAAAAAAAAAPC/" + ], + [ + 514, + 1, + "insert", + { + "characters": "f" + }, + "AQAAAF4CAAAAAAAAXwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXgIAAAAAAABeAgAAAAAAAAAAAAAAAPC/" + ], + [ + 515, + 2, + "left_delete", + null, + "AgAAAF4CAAAAAAAAXgIAAAAAAAABAAAAZl0CAAAAAAAAXQIAAAAAAAABAAAAaw", + "AQAAAAAAAAABAAAAXwIAAAAAAABfAgAAAAAAAAAAAAAAAPC/" + ], + [ + 516, + 1, + "insert", + { + "characters": "lf.d" + }, + "BAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAAXgIAAAAAAABfAgAAAAAAAAAAAABfAgAAAAAAAGACAAAAAAAAAAAAAGACAAAAAAAAYQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXQIAAAAAAABdAgAAAAAAAAAAAAAAAPC/" + ], + [ + 517, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"05.0001.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":25,\"character\":21},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "db_dal" + }, + "AgAAAGACAAAAAAAAYAIAAAAAAAABAAAAZGACAAAAAAAAZgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYQIAAAAAAABhAgAAAAAAAAAAAAAAAPC/" + ], + [ + 524, + 1, + "insert", + { + "characters": "get" + }, + "BAAAAI0CAAAAAAAAjgIAAAAAAAAAAAAAjgIAAAAAAACOAgAAAAAAAAYAAABkYl9kYWyOAgAAAAAAAI8CAAAAAAAAAAAAAI8CAAAAAAAAkAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQIAAAAAAACTAgAAAAAAAAAAAAAAAPC/" + ], + [ + 525, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkAIAAAAAAACQAgAAAAAAAAAAAAAAAPC/" + ], + [ + 530, + 1, + "right_delete", + null, + "AQAAAJACAAAAAAAAkAIAAAAAAAACAAAAKCk", + "AQAAAAAAAAABAAAAkAIAAAAAAACSAgAAAAAAAP///////+9/" + ], + [ + 537, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkAIAAAAAAACQAgAAAAAAAAAAAAAAIGNA" + ], + [ + 549, + 1, + "left_delete", + null, + "AQAAAIACAAAAAAAAgAIAAAAAAAABAAAAYg", + "AQAAAAAAAAABAAAAgQIAAAAAAACBAgAAAAAAAAAAAAAAAPC/" + ], + [ + 550, + 1, + "insert", + { + "characters": "al" + }, + "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACCAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 552, + 2, + "right_delete", + null, + "AgAAAJECAAAAAAAAkQIAAAAAAAABAAAAKJECAAAAAAAAkQIAAAAAAAABAAAAKQ", + "AQAAAAAAAAABAAAAkQIAAAAAAACRAgAAAAAAAAAAAAAAAPC/" + ], + [ + 559, + 1, + "insert", + { + "characters": "db" + }, + "AwAAAH8CAAAAAAAAgAIAAAAAAAAAAAAAgAIAAAAAAACAAgAAAAAAAAMAAABkYWyAAgAAAAAAAIECAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfwIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + ], + [ + 577, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAH4CAAAAAAAAfwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfgIAAAAAAAB+AgAAAAAAAAAAAAAAAPC/" + ], + [ + 581, + 1, + "insert", + { + "characters": "al" + }, + "AwAAAIECAAAAAAAAggIAAAAAAAAAAAAAggIAAAAAAACCAgAAAAAAAAEAAABiggIAAAAAAACDAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgQIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + ], + [ + 583, + 1, + "left_delete", + null, + "AQAAAH4CAAAAAAAAfgIAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAfwIAAAAAAAB/AgAAAAAAAAAAAAAAADtA" + ], + [ + 590, + 2, + "left_delete", + null, + "AgAAAIECAAAAAAAAgQIAAAAAAAABAAAAbIACAAAAAAAAgAIAAAAAAAABAAAAYQ", + "AQAAAAAAAAABAAAAggIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + ], + [ + 591, + 1, + "insert", + { + "characters": "b" + }, + "AQAAAIACAAAAAAAAgQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 600, + 1, + "", + null, + "AQAAALQAAAAAAAAAwQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAAPC/" + ], + [ + 602, + 1, + "insert", + { + "characters": "," + }, + "AQAAALQAAAAAAAAAtQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAAPC/" + ], + [ + 603, + 1, + "insert", + { + "characters": " " + }, + "AQAAALUAAAAAAAAAtgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtQAAAAAAAAC1AAAAAAAAAAAAAAAAAPC/" + ], + [ + 612, + 1, + "insert", + { + "characters": "True" + }, + "BQAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAUAAABGYWxzZb8AAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADBAAAAAAAAAAAAAADBAAAAAAAAAMIAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvgAAAAAAAADDAAAAAAAAAAAAAAAAAPC/" + ], + [ + 623, + 1, + "insert", + { + "characters": "False" + }, + "BgAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAQAAABUcnVlvwAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMEAAAAAAAAAAAAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADDAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvgAAAAAAAADCAAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "stacosys/run.py", + "settings": + { + "buffer_size": 2472, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 7, + 1, + "toggle_breakpoint", + null, + "AQAAAIUFAAAAAAAAhQUAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IGI3MDRhOWFjIC8vCg", + "AQAAAAAAAAABAAAAjAUAAAAAAACMBQAAAAAAAAAAAAAAAPC/" + ], + [ + 15, + 1, + "toggle_breakpoint", + null, + "AQAAAIUFAAAAAAAAvwUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkgUAAAAAAACSBQAAAAAAAAAAAAAAAPC/" + ], + [ + 25, + 1, + "toggle_breakpoint", + null, + "AQAAAIUFAAAAAAAAhQUAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IDQwOGIxMTUzIC8vCg", + "AQAAAAAAAAABAAAAnwUAAAAAAACfBQAAAAAAAAAAAAAAAPC/" + ], + [ + 28, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAADQCQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmltcG9ydCBhcmdwYXJzZQppbXBvcnQgbG9nZ2luZwppbXBvcnQgb3MKaW1wb3J0IHN5cwoKZnJvbSBzdGFjb3N5cy5kYiBpbXBvcnQgZGF0YWJhc2UsIGRhbwpmcm9tIHN0YWNvc3lzLmludGVyZmFjZSBpbXBvcnQgYXBpLCBhcHAsIGZvcm0KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2Uud2ViIGltcG9ydCBhZG1pbgpmcm9tIHN0YWNvc3lzLnNlcnZpY2UgaW1wb3J0IGNvbmZpZywgbWFpbGVyLCByc3MKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ1BhcmFtZXRlcgoKCiMgY29uZmlndXJlIGxvZ2dpbmcKZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKGxldmVsKToKICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgcm9vdF9sb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCiAgICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKICAgIGhhbmRsZXIuc2V0TGV2ZWwobGV2ZWwpCiAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiWyUoYXNjdGltZSlzXSAlKG5hbWUpcyAlKGxldmVsbmFtZSlzICUobWVzc2FnZSlzIikKICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKICAgIHJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKCgpkZWYgc3RhY29zeXNfc2VydmVyKGNvbmZpZ19wYXRobmFtZSk6CiAgICAjIGNvbmZpZ3VyZSBsb2dnaW5nCiAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGxvZ2dpbmcuSU5GTykKICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZXJremV1ZyIpLmxldmVsID0gbG9nZ2luZy5XQVJOSU5HCgogICAgIyBjaGVjayBjb25maWcgZmlsZSBleGlzdHMKICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjb25maWdfcGF0aG5hbWUpOgogICAgICAgIGxvZ2dlci5lcnJvcigiQ29uZmlndXJhdGlvbiBmaWxlICclcycgbm90IGZvdW5kLiIsIGNvbmZpZ19wYXRobmFtZSkKICAgICAgICBzeXMuZXhpdCgxKQoKICAgICMgbG9hZCBhbmQgY2hlY2sgY29uZmlnCiAgICBjb25maWcubG9hZChjb25maWdfcGF0aG5hbWUpCiAgICBpc19jb25maWdfb2ssIGVycmV1cl9jb25maWcgPSBjb25maWcuY2hlY2soKQogICAgaWYgbm90IGlzX2NvbmZpZ19vazoKICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbmZpZ3VyYXRpb24gaW5jb3JyZWN0ZSAnJXMnIiwgZXJyZXVyX2NvbmZpZykKICAgICAgICBzeXMuZXhpdCgxKQogICAgbG9nZ2VyLmluZm8oY29uZmlnKQoKICAgICMgaW5pdGlhbGl6ZSBkYXRhYmFzZQogICAgZGF0YWJhc2UuY29uZmlndXJlKGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLkRCKSkKCiAgICByID0gZGFvLmZpbmRfY29tbWVudF9ieV9pZCgxKQoKICAgIGxvZ2dlci5pbmZvKCJTdGFydCBTdGFjb3N5cyBhcHBsaWNhdGlvbiIpCgogICAgIyBnZW5lcmF0ZSBSU1MKICAgIHJzcy5jb25maWd1cmUoCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuUlNTX0ZJTEUpLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNJVEVfTkFNRSksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9QUk9UTyksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQogICAgcnNzLmdlbmVyYXRlKCkKCiAgICAjIGNvbmZpZ3VyZSBtYWlsZXIKICAgIG1haWxlci5jb25maWd1cmVfc210cCgKICAgICAgICBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5TTVRQX0hPU1QpLAogICAgICAgIGNvbmZpZy5nZXRfaW50KENvbmZpZ1BhcmFtZXRlci5TTVRQX1BPUlQpLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfTE9HSU4pLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfUEFTU1dPUkQpLAogICAgKQogICAgbWFpbGVyLmNvbmZpZ3VyZV9kZXN0aW5hdGlvbihjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5TSVRFX0FETUlOX0VNQUlMKSkKICAgIG1haWxlci5jaGVjaygpCgogICAgbG9nZ2VyLmluZm8oInN0YXJ0IGludGVyZmFjZXMgJXMgJXMgJXMiLCBhcGksIGZvcm0sIGFkbWluKQoKICAgICMgc3RhcnQgRmxhc2sKICAgIGFwcC5ydW4oCiAgICAgICAgaG9zdD1jb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5IVFRQX0hPU1QpLAogICAgICAgIHBvcnQ9Y29uZmlnLmdldF9pbnQoQ29uZmlnUGFyYW1ldGVyLkhUVFBfUE9SVCksCiAgICAgICAgZGVidWc9RmFsc2UsCiAgICAgICAgdXNlX3JlbG9hZGVyPUZhbHNlLAogICAgKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJjb25maWciLCBoZWxwPSJjb25maWcgcGF0aCBuYW1lIikKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAgICBzdGFjb3N5c19zZXJ2ZXIoYXJncy5jb25maWcpCgAAAAAAAAAA0AkAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQUAAAAAAACFBQAAAAAAAAAAAAAAAPC/" + ], + [ + 33, + 1, + "right_delete", + null, + "AQAAAGEFAAAAAAAAYQUAAAAAAAAjAAAACiAgICByID0gZGFvLmZpbmRfY29tbWVudF9ieV9pZCgxKQo", + "AQAAAAAAAAABAAAAYQUAAAAAAACEBQAAAAAAAAAAAAAAkHJA" + ], + [ + 43, + 1, + "right_delete", + null, + "AQAAAHgAAAAAAAAAeAAAAAAAAAAFAAAAZGFvLCA", + "AQAAAAAAAAABAAAAeAAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "config-dev.ini", + "settings": + { + "buffer_size": 657, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 5, + 1, + "insert", + { + "characters": "\nsq" + }, + "AwAAAEUAAAAAAAAARgAAAAAAAAAAAAAARgAAAAAAAABHAAAAAAAAAAAAAABHAAAAAAAAAEgAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABFAAAAAAAAAEUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 6, + 2, + "left_delete", + null, + "AgAAAEcAAAAAAAAARwAAAAAAAAABAAAAcUYAAAAAAAAARgAAAAAAAAABAAAAcw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAAAAAAAAAEgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 7, + 1, + "insert", + { + "characters": "dbçsq" + }, + "BQAAAEYAAAAAAAAARwAAAAAAAAAAAAAARwAAAAAAAABIAAAAAAAAAAAAAABIAAAAAAAAAEkAAAAAAAAAAAAAAEkAAAAAAAAASgAAAAAAAAAAAAAASgAAAAAAAABLAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABGAAAAAAAAAEYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 8, + 3, + "left_delete", + null, + "AwAAAEoAAAAAAAAASgAAAAAAAAABAAAAcUkAAAAAAAAASQAAAAAAAAABAAAAc0gAAAAAAAAASAAAAAAAAAACAAAAw6c", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLAAAAAAAAAEsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 9, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAEgAAAAAAAAASQAAAAAAAAAAAAAASQAAAAAAAABKAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAAAAAAAAAEgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 10, + 1, + "insert", + { + "characters": " " + }, + "AQAAAEoAAAAAAAAASwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABKAAAAAAAAAEoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 12, + 1, + "", + null, + "AQAAAEsAAAAAAAAAXgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLAAAAAAAAAEsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 18, + 1, + "paste", + null, + "AgAAAFQAAAAAAAAAXQAAAAAAAAAAAAAAXQAAAAAAAABdAAAAAAAAAAoAAABzdG9yYWdlLmRi", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABUAAAAAAAAAF4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 25, + 1, + "insert", + { + "characters": "2" + }, + "AQAAAFYAAAAAAAAAVwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABWAAAAAAAAAFYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 5, + 1, + "left_delete", + null, + "AQAAAFYAAAAAAAAAVgAAAAAAAAABAAAAMg", + "AQAAAAAAAAABAAAAVwAAAAAAAABXAAAAAAAAAAAAAAAAAPC/" + ], + [ + 9, + 1, + "right_delete", + null, + "AQAAACsAAAAAAAAAKwAAAAAAAAAaAAAAZGJfc3FsaXRlX2ZpbGUgPSBkYi5zcWxpdGU", + "AQAAAAAAAAABAAAARQAAAAAAAAArAAAAAAAAAAAAAAAAAAAA" + ], + [ + 10, + 1, + "left_delete", + null, + "AQAAACoAAAAAAAAAKgAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAKwAAAAAAAAArAAAAAAAAAAAAAAAAAPC/" + ], + [ + 13, + 1, + "insert", + { + "characters": "2" + }, + "AQAAADsAAAAAAAAAPAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOwAAAAAAAAA7AAAAAAAAAAAAAAAAAPC/" + ], + [ + 14, + 1, + "left_delete", + null, + "AQAAADsAAAAAAAAAOwAAAAAAAAABAAAAMg", + "AQAAAAAAAAABAAAAPAAAAAAAAAA8AAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "dbmigration/migrate_from_3.3_to_4.0.py", + "settings": + { + "buffer_size": 1022, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 12, + 1, + "right_delete", + null, + "AQAAAPMBAAAAAAAA8wEAAAAAAAADAAAAVkFS", + "AQAAAAAAAAABAAAA8wEAAAAAAAD2AQAAAAAAAAAAAAAAAPC/" + ], + [ + 16, + 1, + "insert", + { + "characters": "512" + }, + "BAAAAPgBAAAAAAAA+QEAAAAAAAAAAAAA+QEAAAAAAAD5AQAAAAAAAAMAAAAyNTX5AQAAAAAAAPoBAAAAAAAAAAAAAPoBAAAAAAAA+wEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA+AEAAAAAAAD7AQAAAAAAAAAAAAAAAPC/" + ], + [ + 21, + 1, + "right_delete", + null, + "AQAAAP0BAAAAAAAA/QEAAAAAAAAIAAAATk9UIE5VTEw", + "AQAAAAAAAAABAAAA/QEAAAAAAAAFAgAAAAAAAAAAAAAAAPC/" + ], + [ + 23, + 1, + "right_delete", + null, + "AQAAAPwBAAAAAAAA/AEAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAA/AEAAAAAAAD8AQAAAAAAAAAAAAAAAPC/" + ], + [ + 27, + 1, + "insert", + { + "characters": "TIMESTAM" + }, + "CQAAAAsCAAAAAAAADAIAAAAAAAAAAAAADAIAAAAAAAAMAgAAAAAAAAgAAABEQVRFVElNRQwCAAAAAAAADQIAAAAAAAAAAAAADQIAAAAAAAAOAgAAAAAAAAAAAAAOAgAAAAAAAA8CAAAAAAAAAAAAAA8CAAAAAAAAEAIAAAAAAAAAAAAAEAIAAAAAAAARAgAAAAAAAAAAAAARAgAAAAAAABICAAAAAAAAAAAAABICAAAAAAAAEwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACwIAAAAAAAATAgAAAAAAAAAAAAAAAPC/" + ], + [ + 28, + 1, + "insert", + { + "characters": "P" + }, + "AQAAABMCAAAAAAAAFAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEwIAAAAAAAATAgAAAAAAAAAAAAAAAPC/" + ], + [ + 35, + 1, + "paste", + null, + "AgAAACICAAAAAAAAKwIAAAAAAAAAAAAAKwIAAAAAAAArAgAAAAAAABEAAABEQVRFVElNRSBOT1QgTlVMTA", + "AQAAAAAAAAABAAAAIgIAAAAAAAAzAgAAAAAAAAAAAAAAAPC/" + ], + [ + 40, + 1, + "paste", + null, + "AgAAADsCAAAAAAAARAIAAAAAAAAAAAAARAIAAAAAAABEAgAAAAAAAAgAAABEQVRFVElNRQ", + "AQAAAAAAAAABAAAAOwIAAAAAAABDAgAAAAAAAAAAAAAAAPC/" + ], + [ + 49, + 1, + "paste", + null, + "AgAAAFYCAAAAAAAAXwIAAAAAAAAAAAAAXwIAAAAAAABfAgAAAAAAABUAAABWQVJDSEFSKDI1NSkgTk9UIE5VTEw", + "AQAAAAAAAAABAAAAVgIAAAAAAABrAgAAAAAAAAAAAAAAAPC/" + ], + [ + 52, + 1, + "paste", + null, + "AgAAAHECAAAAAAAAegIAAAAAAAAAAAAAegIAAAAAAAB6AgAAAAAAABUAAABWQVJDSEFSKDI1NSkgTk9UIE5VTEw", + "AQAAAAAAAAABAAAAcQIAAAAAAACGAgAAAAAAAAAAAAAAAPC/" + ], + [ + 55, + 1, + "paste", + null, + "AgAAAJACAAAAAAAAmQIAAAAAAAAAAAAAmQIAAAAAAACZAgAAAAAAAAwAAAB2YXJjaGFyKDI1NSk", + "AQAAAAAAAAABAAAAkAIAAAAAAACcAgAAAAAAAAAAAAAAAPC/" + ], + [ + 60, + 1, + "left_delete", + null, + "AQAAAKsCAAAAAAAAqwIAAAAAAAAJAAAAIE5PVCBOVUxM", + "AQAAAAAAAAABAAAAqwIAAAAAAAC0AgAAAAAAAAAAAAAAAPC/" + ], + [ + 66, + 1, + "right_delete", + null, + "AQAAAHIBAAAAAAAAcgEAAAAAAAAQAAAARFJPUCBUQUJMRSBzaXRlOw", + "AQAAAAAAAAABAAAAggEAAAAAAAByAQAAAAAAAAAAAAAAAAAA" + ], + [ + 67, + 1, + "left_delete", + null, + "AQAAAHEBAAAAAAAAcQEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAcgEAAAAAAAByAQAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "stacosys/db/dao.py", + "settings": + { + "buffer_size": 2026, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 4, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAALwAAAAAAAAAvQAAAAAAAAAAAAAAvQAAAAAAAADBAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvAAAAAAAAAC8AAAAAAAAAAAAAAAAAPC/" + ], + [ + 7, + 1, + "insert", + { + "characters": "\nfrom" + }, + "BgAAAEgAAAAAAAAASQAAAAAAAAAAAAAAvgAAAAAAAAC+AAAAAAAAAAQAAAAgICAgSQAAAAAAAABKAAAAAAAAAAAAAABKAAAAAAAAAEsAAAAAAAAAAAAAAEsAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAABNAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASAAAAAAAAABIAAAAAAAAAAAAAAAAAPC/" + ], + [ + 8, + 1, + "insert", + { + "characters": " stacosys.db" + }, + "DAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAAAAAABSAAAAAAAAAFMAAAAAAAAAAAAAAFMAAAAAAAAAVAAAAAAAAAAAAAAAVAAAAAAAAABVAAAAAAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAAAAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 9, + 1, + "insert", + { + "characters": " imo" + }, + "BAAAAFkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAFwAAAAAAAAAXQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWQAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" + ], + [ + 10, + 1, + "left_delete", + null, + "AQAAAFwAAAAAAAAAXAAAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" + ], + [ + 11, + 1, + "insert", + { + "characters": "port" + }, + "BAAAAFwAAAAAAAAAXQAAAAAAAAAAAAAAXQAAAAAAAABeAAAAAAAAAAAAAABeAAAAAAAAAF8AAAAAAAAAAAAAAF8AAAAAAAAAYAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXAAAAAAAAABcAAAAAAAAAAAAAAAAAPC/" + ], + [ + 12, + 1, + "insert", + { + "characters": " " + }, + "AQAAAGAAAAAAAAAAYQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAPC/" + ], + [ + 18, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"09.9999.db\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":4,\"character\":24},\"symbolLabel\":\"db\",\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "db" + }, + "AQAAAGEAAAAAAAAAYwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYQAAAAAAAABhAAAAAAAAAAAAAAAAAPC/" + ], + [ + 27, + 1, + "reindent", + null, + "AQAAANgAAAAAAAAA3AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2AAAAAAAAADYAAAAAAAAAAAAAAAAAPC/" + ], + [ + 28, + 1, + "insert", + { + "characters": "db." + }, + "AwAAANwAAAAAAAAA3QAAAAAAAAAAAAAA3QAAAAAAAADeAAAAAAAAAAAAAADeAAAAAAAAAN8AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3AAAAAAAAADcAAAAAAAAAAAAAAAAAPC/" + ], + [ + 29, + 1, + "left_delete", + null, + "AQAAAN4AAAAAAAAA3gAAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" + ], + [ + 30, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAN4AAAAAAAAA4AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3gAAAAAAAADeAAAAAAAAAAAAAAAAAPC/" + ], + [ + 33, + 1, + "right_delete", + null, + "AQAAAN4AAAAAAAAA3gAAAAAAAAACAAAAKCk", + "AQAAAAAAAAABAAAA3gAAAAAAAADgAAAAAAAAAP///////+9/" + ], + [ + 34, + 1, + "insert", + { + "characters": "." + }, + "AQAAAN4AAAAAAAAA3wAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3gAAAAAAAADeAAAAAAAAAAAAAAAAAPC/" + ], + [ + 35, + 1, + "insert", + { + "characters": "com" + }, + "AwAAAN8AAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAADhAAAAAAAAAAAAAADhAAAAAAAAAOIAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" + ], + [ + 36, + 1, + "insert", + { + "characters": "m" + }, + "AQAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" + ], + [ + 37, + 1, + "insert", + { + "characters": "ent." + }, + "BAAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" + ], + [ + 38, + 1, + "left_delete", + null, + "AQAAAOYAAAAAAAAA5gAAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAA5wAAAAAAAADnAAAAAAAAAAAAAAAAAPC/" + ], + [ + 39, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAOYAAAAAAAAA6AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5gAAAAAAAADmAAAAAAAAAAAAAAAAAPC/" + ], + [ + 47, + 1, + "paste", + null, + "AQAAAOcAAAAAAAAA8QAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5wAAAAAAAADnAAAAAAAAAAAAAAAAAPC/" + ], + [ + 65, + 1, + "insert", + { + "characters": "return" + }, + "BgAAANwAAAAAAAAA3QAAAAAAAAAAAAAA3QAAAAAAAADeAAAAAAAAAAAAAADeAAAAAAAAAN8AAAAAAAAAAAAAAN8AAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAADhAAAAAAAAAAAAAADhAAAAAAAAAOIAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3AAAAAAAAADcAAAAAAAAAAAAAAAAAPC/" + ], + [ + 66, + 1, + "insert", + { + "characters": " " + }, + "AQAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" + ], + [ + 69, + 1, + "insert", + { + "characters": "#" + }, + "AQAAAP4AAAAAAAAA/wAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/gAAAAAAAAD+AAAAAAAAAAAAAAAAAEJA" + ], + [ + 72, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAACvBgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRiCmZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKVElNRV9GT1JNQVQgPSAiJVktJW0tJWQgJUg6JU06JVMiCgoKZGVmIGZpbmRfY29tbWVudF9ieV9pZChjb21tZW50X2lkKToKICAgIHJldHVybiBkYi5jb21tZW50KGNvbW1lbnRfaWQpCiAgICAjcmV0dXJuIENvbW1lbnQuZ2V0X2J5X2lkKGNvbW1lbnRfaWQpCgoKZGVmIG5vdGlmeV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5ub3RpZmllZCA9IGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKFRJTUVfRk9STUFUKQogICAgY29tbWVudC5zYXZlKCkKCgpkZWYgcHVibGlzaF9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5wdWJsaXNoZWQgPSBkYXRldGltZS5ub3coKS5zdHJmdGltZShUSU1FX0ZPUk1BVCkKICAgIGNvbW1lbnQuc2F2ZSgpCgoKZGVmIGRlbGV0ZV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5kZWxldGVfaW5zdGFuY2UoKQoKCmRlZiBmaW5kX25vdF9ub3RpZmllZF9jb21tZW50cygpOgogICAgcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5ub3RpZmllZC5pc19udWxsKCkpCgoKZGVmIGZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpOgogICAgcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbCgpKQoKCmRlZiBmaW5kX3B1Ymxpc2hlZF9jb21tZW50c19ieV91cmwodXJsKToKICAgIHJldHVybiAoCiAgICAgICAgQ29tbWVudC5zZWxlY3QoQ29tbWVudCkKICAgICAgICAud2hlcmUoKENvbW1lbnQudXJsID09IHVybCkgJiAoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbChGYWxzZSkpKQogICAgICAgIC5vcmRlcl9ieSgrQ29tbWVudC5wdWJsaXNoZWQpCiAgICApCgoKZGVmIGNvdW50X3B1Ymxpc2hlZF9jb21tZW50cyh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBDb21tZW50LnNlbGVjdChDb21tZW50KQogICAgICAgIC53aGVyZSgoQ29tbWVudC51cmwgPT0gdXJsKSAmIChDb21tZW50LnB1Ymxpc2hlZC5pc19udWxsKEZhbHNlKSkpCiAgICAgICAgLmNvdW50KCkKICAgICAgICBpZiB1cmwKICAgICAgICBlbHNlIENvbW1lbnQuc2VsZWN0KENvbW1lbnQpLndoZXJlKENvbW1lbnQucHVibGlzaGVkLmlzX251bGwoRmFsc2UpKS5jb3VudCgpCiAgICApCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgY3JlYXRlZCA9IGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIpCiAgICBjb21tZW50ID0gQ29tbWVudCgKICAgICAgICB1cmw9dXJsLAogICAgICAgIGF1dGhvcl9uYW1lPWF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPWF1dGhvcl9zaXRlLAogICAgICAgIGF1dGhvcl9ncmF2YXRhcj1hdXRob3JfZ3JhdmF0YXIsCiAgICAgICAgY29udGVudD1tZXNzYWdlLAogICAgICAgIGNyZWF0ZWQ9Y3JlYXRlZCwKICAgICAgICBub3RpZmllZD1Ob25lLAogICAgICAgIHB1Ymxpc2hlZD1Ob25lLAogICAgKQogICAgY29tbWVudC5zYXZlKCkKICAgIHJldHVybiBjb21tZW50CgAAAAAAAAAAsAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 77, + 1, + "insert", + { + "characters": "#" + }, + "AQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAAAA" + ], + [ + 93, + 1, + "right_delete", + null, + "AQAAAGQAAAAAAAAAZAAAAAAAAAABAAAAIw", + "AQAAAAAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAAAA" + ], + [ + 99, + 1, + "toggle_breakpoint", + null, + "AQAAANgAAAAAAAAAEgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" + ], + [ + 109, + 1, + "insert", + { + "characters": "()" + }, + "AgAAAB8BAAAAAAAAIAEAAAAAAAAAAAAAIAEAAAAAAAAhAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAHwEAAAAAAAAfAQAAAAAAAAAAAAAAAPC/" + ], + [ + 117, + 1, + "toggle_breakpoint", + null, + "AQAAANgAAAAAAAAA2AAAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IDg4MzY3Y2ZlIC8vCg", + "AQAAAAAAAAABAAAACQEAAAAAAAAJAQAAAAAAAAAAAAAAAPC/" + ], + [ + 133, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACFAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 134, + 1, + "insert", + { + "characters": "returb" + }, + "BgAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACHAgAAAAAAAAAAAACHAgAAAAAAAIgCAAAAAAAAAAAAAIgCAAAAAAAAiQIAAAAAAAAAAAAAiQIAAAAAAACKAgAAAAAAAAAAAACKAgAAAAAAAIsCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQIAAAAAAACFAgAAAAAAAAAAAAAAAPC/" + ], + [ + 135, + 1, + "insert", + { + "characters": " " + }, + "AQAAAIsCAAAAAAAAjAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" + ], + [ + 136, + 2, + "left_delete", + null, + "AgAAAIsCAAAAAAAAiwIAAAAAAAABAAAAIIoCAAAAAAAAigIAAAAAAAABAAAAYg", + "AQAAAAAAAAABAAAAjAIAAAAAAACMAgAAAAAAAAAAAAAAAPC/" + ], + [ + 137, + 1, + "insert", + { + "characters": "n" + }, + "AQAAAIoCAAAAAAAAiwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAigIAAAAAAACKAgAAAAAAAAAAAAAAAPC/" + ], + [ + 138, + 1, + "insert", + { + "characters": " db" + }, + "AwAAAIsCAAAAAAAAjAIAAAAAAAAAAAAAjAIAAAAAAACNAgAAAAAAAAAAAACNAgAAAAAAAI4CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" + ], + [ + 139, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAI4CAAAAAAAAkAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjgIAAAAAAACOAgAAAAAAAAAAAAAAAPC/" + ], + [ + 141, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkAIAAAAAAACQAgAAAAAAAAAAAAAAAPC/" + ], + [ + 150, + 1, + "right_delete", + null, + "AQAAAIUCAAAAAAAAhQIAAAAAAAANAAAAcmV0dXJuIGRiKCkoKQ", + "AQAAAAAAAAABAAAAkgIAAAAAAACFAgAAAAAAAAAAAAAAAEJA" + ], + [ + 152, + 1, + "left_delete", + null, + "AQAAAIACAAAAAAAAgAIAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAgQIAAAAAAACBAgAAAAAAAAAAAAAAAAAA" + ], + [ + 154, + 1, + "trim_trailing_white_space", + null, + "AQAAAIACAAAAAAAAgAIAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + ], + [ + 160, + 1, + "right_delete", + null, + "AQAAAAABAAAAAAAAAAEAAAAAAAAmAAAAIyByZXR1cm4gQ29tbWVudC5nZXRfYnlfaWQoY29tbWVudF9pZCk", + "AQAAAAAAAAABAAAAJgEAAAAAAAAAAQAAAAAAAAAAAAAAAEJA" + ], + [ + 162, + 1, + "left_delete", + null, + "AQAAAPsAAAAAAAAA+wAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAA/AAAAAAAAAD8AAAAAAAAAAAAAAAAAAAA" + ], + [ + 164, + 1, + "trim_trailing_white_space", + null, + "AQAAAPsAAAAAAAAA+wAAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAA+wAAAAAAAAD7AAAAAAAAAAAAAAAAAPC/" + ], + [ + 193, + 1, + "right_delete", + null, + "AQAAAEkBAAAAAAAASQEAAAAAAAAWAAAALnN0cmZ0aW1lKFRJTUVfRk9STUFUKQ", + "AQAAAAAAAAABAAAASQEAAAAAAABfAQAAAAAAAP///////+9/" + ], + [ + 196, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAEkBAAAAAAAASgEAAAAAAAAAAAAASgEAAAAAAABOAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAA0HRA" + ], + [ + 197, + 1, + "insert", + { + "characters": "db" + }, + "AgAAAE4BAAAAAAAATwEAAAAAAAAAAAAATwEAAAAAAABQAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATgEAAAAAAABOAQAAAAAAAAAAAAAAAPC/" + ], + [ + 198, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAFABAAAAAAAAUgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUAEAAAAAAABQAQAAAAAAAAAAAAAAAPC/" + ], + [ + 200, + 1, + "insert", + { + "characters": ".inser" + }, + "BgAAAFIBAAAAAAAAUwEAAAAAAAAAAAAAUwEAAAAAAABUAQAAAAAAAAAAAABUAQAAAAAAAFUBAAAAAAAAAAAAAFUBAAAAAAAAVgEAAAAAAAAAAAAAVgEAAAAAAABXAQAAAAAAAAAAAABXAQAAAAAAAFgBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUgEAAAAAAABSAQAAAAAAAAAAAAAAAPC/" + ], + [ + 201, + 5, + "left_delete", + null, + "BQAAAFcBAAAAAAAAVwEAAAAAAAABAAAAclYBAAAAAAAAVgEAAAAAAAABAAAAZVUBAAAAAAAAVQEAAAAAAAABAAAAc1QBAAAAAAAAVAEAAAAAAAABAAAAblMBAAAAAAAAUwEAAAAAAAABAAAAaQ", + "AQAAAAAAAAABAAAAWAEAAAAAAABYAQAAAAAAAAAAAAAAAPC/" + ], + [ + 202, + 1, + "insert", + { + "characters": "comment.i" + }, + "CQAAAFMBAAAAAAAAVAEAAAAAAAAAAAAAVAEAAAAAAABVAQAAAAAAAAAAAABVAQAAAAAAAFYBAAAAAAAAAAAAAFYBAAAAAAAAVwEAAAAAAAAAAAAAVwEAAAAAAABYAQAAAAAAAAAAAABYAQAAAAAAAFkBAAAAAAAAAAAAAFkBAAAAAAAAWgEAAAAAAAAAAAAAWgEAAAAAAABbAQAAAAAAAAAAAABbAQAAAAAAAFwBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUwEAAAAAAABTAQAAAAAAAAAAAAAAAPC/" + ], + [ + 203, + 1, + "insert", + { + "characters": "ns" + }, + "AgAAAFwBAAAAAAAAXQEAAAAAAAAAAAAAXQEAAAAAAABeAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXAEAAAAAAABcAQAAAAAAAAAAAAAAAPC/" + ], + [ + 204, + 1, + "insert", + { + "characters": "ert-" + }, + "BAAAAF4BAAAAAAAAXwEAAAAAAAAAAAAAXwEAAAAAAABgAQAAAAAAAAAAAABgAQAAAAAAAGEBAAAAAAAAAAAAAGEBAAAAAAAAYgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXgEAAAAAAABeAQAAAAAAAAAAAAAAAPC/" + ], + [ + 205, + 1, + "left_delete", + null, + "AQAAAGEBAAAAAAAAYQEAAAAAAAABAAAALQ", + "AQAAAAAAAAABAAAAYgEAAAAAAABiAQAAAAAAAAAAAAAAAPC/" + ], + [ + 206, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAGEBAAAAAAAAYwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYQEAAAAAAABhAQAAAAAAAAAAAAAAAPC/" + ], + [ + 211, + 1, + "paste", + null, + "AQAAAEgAAAAAAAAAaQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASAAAAAAAAABIAAAAAAAAAAAAAAAAAPC/" + ], + [ + 213, + 1, + "insert", + { + "characters": "asd" + }, + "BAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABhAAAAAAAAAAkAAABkYXRhY2xhc3NhAAAAAAAAAGIAAAAAAAAAAAAAAGIAAAAAAAAAYwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaQAAAAAAAABgAAAAAAAAAAAAAAAAAPC/" + ], + [ + 214, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":3,\"sortText\":\"05.0000.asdict\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":3,\"character\":27},\"symbolLabel\":\"asdict\",\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"asdict\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "asdict" + }, + "AgAAAGAAAAAAAAAAYAAAAAAAAAADAAAAYXNkYAAAAAAAAABmAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAPC/" + ], + [ + 217, + 1, + "insert", + { + "characters": "asd" + }, + "AwAAAIABAAAAAAAAgQEAAAAAAAAAAAAAgQEAAAAAAACCAQAAAAAAAAAAAACCAQAAAAAAAIMBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAEAAAAAAACAAQAAAAAAAAAAAAAAAPC/" + ], + [ + 218, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":3,\"sortText\":\"05.0000.asdict\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":16,\"character\":27},\"symbolLabel\":\"asdict\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"asdict\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "asdict" + }, + "AgAAAIABAAAAAAAAgAEAAAAAAAADAAAAYXNkgAEAAAAAAACGAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgwEAAAAAAACDAQAAAAAAAAAAAAAAAPC/" + ], + [ + 219, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAIYBAAAAAAAAiAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhgEAAAAAAACGAQAAAAAAAAAAAAAAAPC/" + ], + [ + 220, + 1, + "insert", + { + "characters": "comment" + }, + "BwAAAIcBAAAAAAAAiAEAAAAAAAAAAAAAiAEAAAAAAACJAQAAAAAAAAAAAACJAQAAAAAAAIoBAAAAAAAAAAAAAIoBAAAAAAAAiwEAAAAAAAAAAAAAiwEAAAAAAACMAQAAAAAAAAAAAACMAQAAAAAAAI0BAAAAAAAAAAAAAI0BAAAAAAAAjgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhwEAAAAAAACHAQAAAAAAAAAAAAAAAPC/" + ], + [ + 225, + 1, + "right_delete", + null, + "AQAAAJUBAAAAAAAAlQEAAAAAAAAOAAAAY29tbWVudC5zYXZlKCk", + "AQAAAAAAAAABAAAAowEAAAAAAACVAQAAAAAAAAAAAAAAAEJA" + ], + [ + 227, + 1, + "left_delete", + null, + "AQAAAJABAAAAAAAAkAEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAkQEAAAAAAACRAQAAAAAAAAAAAAAAAAAA" + ], + [ + 230, + 1, + "trim_trailing_white_space", + null, + "AQAAAJABAAAAAAAAkAEAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAlQEAAAAAAACVAQAAAAAAAAAAAAAAgHZA" + ], + [ + 235, + 1, + "right_delete", + null, + "AQAAAOABAAAAAAAA4AEAAAAAAAAWAAAALnN0cmZ0aW1lKFRJTUVfRk9STUFUKQ", + "AQAAAAAAAAABAAAA4AEAAAAAAAD2AQAAAAAAAP///////+9/" + ], + [ + 239, + 1, + "right_delete", + null, + "AQAAAK4AAAAAAAAArgAAAAAAAAAhAAAAVElNRV9GT1JNQVQgPSAiJVktJW0tJWQgJUg6JU06JVMi", + "AQAAAAAAAAABAAAAzwAAAAAAAACuAAAAAAAAAAAAAAAAAAAA" + ], + [ + 240, + 2, + "left_delete", + null, + "AgAAAK0AAAAAAAAArQAAAAAAAAABAAAACqwAAAAAAAAArAAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAArgAAAAAAAACuAAAAAAAAAAAAAAAAAPC/" + ], + [ + 251, + 1, + "paste", + null, + "AgAAAMIBAAAAAAAA5gEAAAAAAAAAAAAA5gEAAAAAAADmAQAAAAAAAA4AAABjb21tZW50LnNhdmUoKQ", + "AQAAAAAAAAABAAAAwgEAAAAAAADQAQAAAAAAAAAAAAAAAPC/" + ], + [ + 261, + 1, + "insert", + { + "characters": "\ndb" + }, + "BAAAAA4CAAAAAAAADwIAAAAAAAAAAAAADwIAAAAAAAATAgAAAAAAAAAAAAATAgAAAAAAABQCAAAAAAAAAAAAABQCAAAAAAAAFQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADgIAAAAAAAAOAgAAAAAAAAAAAAAAAPC/" + ], + [ + 262, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAABUCAAAAAAAAFwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFQIAAAAAAAAVAgAAAAAAAAAAAAAAAPC/" + ], + [ + 264, + 1, + "insert", + { + "characters": "." + }, + "AQAAABcCAAAAAAAAGAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFwIAAAAAAAAXAgAAAAAAAAAAAAAAAPC/" + ], + [ + 265, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAABgCAAAAAAAAGgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGAIAAAAAAAAYAgAAAAAAAAAAAAAAAPC/" + ], + [ + 266, + 1, + "run_macro_file", + { + "file": "res://Packages/Default/Delete Left Right.sublime-macro" + }, + "AgAAABgCAAAAAAAAGAIAAAAAAAABAAAAKBgCAAAAAAAAGAIAAAAAAAABAAAAKQ", + "AQAAAAAAAAABAAAAGQIAAAAAAAAZAgAAAAAAAAAAAAAAAPC/" + ], + [ + 267, + 1, + "left_delete", + null, + "AQAAABcCAAAAAAAAFwIAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAGAIAAAAAAAAYAgAAAAAAAAAAAAAAAPC/" + ], + [ + 268, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAABcCAAAAAAAAGQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFwIAAAAAAAAXAgAAAAAAAAAAAAAAAPC/" + ], + [ + 269, + 1, + "insert", + { + "characters": "db" + }, + "AgAAABgCAAAAAAAAGQIAAAAAAAAAAAAAGQIAAAAAAAAaAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGAIAAAAAAAAYAgAAAAAAAAAAAAAAAPC/" + ], + [ + 270, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAABoCAAAAAAAAHAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGgIAAAAAAAAaAgAAAAAAAAAAAAAAAPC/" + ], + [ + 272, + 1, + "insert", + { + "characters": ".comment." + }, + "CQAAABwCAAAAAAAAHQIAAAAAAAAAAAAAHQIAAAAAAAAeAgAAAAAAAAAAAAAeAgAAAAAAAB8CAAAAAAAAAAAAAB8CAAAAAAAAIAIAAAAAAAAAAAAAIAIAAAAAAAAhAgAAAAAAAAAAAAAhAgAAAAAAACICAAAAAAAAAAAAACICAAAAAAAAIwIAAAAAAAAAAAAAIwIAAAAAAAAkAgAAAAAAAAAAAAAkAgAAAAAAACUCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAHAIAAAAAAAAcAgAAAAAAAAAAAAAAAPC/" + ], + [ + 273, + 1, + "insert", + { + "characters": "id" + }, + "AgAAACUCAAAAAAAAJgIAAAAAAAAAAAAAJgIAAAAAAAAnAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJQIAAAAAAAAlAgAAAAAAAAAAAAAAAPC/" + ], + [ + 275, + 1, + "insert", + { + "characters": " ==" + }, + "AwAAACcCAAAAAAAAKAIAAAAAAAAAAAAAKAIAAAAAAAApAgAAAAAAAAAAAAApAgAAAAAAACoCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJwIAAAAAAAAnAgAAAAAAAAAAAAAAAPC/" + ], + [ + 276, + 1, + "insert", + { + "characters": " comment." + }, + "CQAAACoCAAAAAAAAKwIAAAAAAAAAAAAAKwIAAAAAAAAsAgAAAAAAAAAAAAAsAgAAAAAAAC0CAAAAAAAAAAAAAC0CAAAAAAAALgIAAAAAAAAAAAAALgIAAAAAAAAvAgAAAAAAAAAAAAAvAgAAAAAAADACAAAAAAAAAAAAADACAAAAAAAAMQIAAAAAAAAAAAAAMQIAAAAAAAAyAgAAAAAAAAAAAAAyAgAAAAAAADMCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKgIAAAAAAAAqAgAAAAAAAAAAAAAAAPC/" + ], + [ + 277, + 1, + "insert", + { + "characters": "id" + }, + "AgAAADMCAAAAAAAANAIAAAAAAAAAAAAANAIAAAAAAAA1AgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMwIAAAAAAAAzAgAAAAAAAAAAAAAAAPC/" + ], + [ + 278, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"09.9999.id\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":23,\"character\":38},\"symbolLabel\":\"id\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"id\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "id" + }, + "AgAAADMCAAAAAAAAMwIAAAAAAAACAAAAaWQzAgAAAAAAADUCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAAPC/" + ], + [ + 282, + 1, + "insert", + { + "characters": ".de" + }, + "AwAAADYCAAAAAAAANwIAAAAAAAAAAAAANwIAAAAAAAA4AgAAAAAAAAAAAAA4AgAAAAAAADkCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANgIAAAAAAAA2AgAAAAAAAAAAAAAA8HVA" + ], + [ + 283, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":2,\"sortText\":\"09.9999.delete\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":23,\"character\":42},\"symbolLabel\":\"delete\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"delete\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "delete" + }, + "AgAAADcCAAAAAAAANwIAAAAAAAACAAAAZGU3AgAAAAAAAD0CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOQIAAAAAAAA5AgAAAAAAAAAAAAAAAPC/" + ], + [ + 284, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAD0CAAAAAAAAPwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAPQIAAAAAAAA9AgAAAAAAAAAAAAAAAPC/" + ], + [ + 287, + 1, + "insert", + { + "characters": "_" + }, + "AQAAADcCAAAAAAAAOAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" + ], + [ + 295, + 1, + "left_delete", + null, + "AQAAADcCAAAAAAAANwIAAAAAAAABAAAAXw", + "AQAAAAAAAAABAAAAOAIAAAAAAAA4AgAAAAAAAAAAAAAAEHdA" + ], + [ + 298, + 1, + "right_delete", + null, + "AQAAAEQCAAAAAAAARAIAAAAAAAAZAAAAY29tbWVudC5kZWxldGVfaW5zdGFuY2UoKQ", + "AQAAAAAAAAABAAAAXQIAAAAAAABEAgAAAAAAAAAAAAAAAEJA" + ], + [ + 300, + 1, + "left_delete", + null, + "AQAAAD8CAAAAAAAAPwIAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAAAA" + ], + [ + 302, + 1, + "trim_trailing_white_space", + null, + "AQAAAD8CAAAAAAAAPwIAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAPwIAAAAAAAA/AgAAAAAAAAAAAAAAAPC/" + ], + [ + 309, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAGMCAAAAAAAAZAIAAAAAAAAAAAAAZAIAAAAAAABoAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYwIAAAAAAABjAgAAAAAAAAAAAAAAAPC/" + ], + [ + 310, + 1, + "paste", + null, + "AQAAAGgCAAAAAAAAiwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaAIAAAAAAABoAgAAAAAAAAAAAAAAAPC/" + ], + [ + 312, + 1, + "insert", + { + "characters": "return" + }, + "BgAAAGgCAAAAAAAAaQIAAAAAAAAAAAAAaQIAAAAAAABqAgAAAAAAAAAAAABqAgAAAAAAAGsCAAAAAAAAAAAAAGsCAAAAAAAAbAIAAAAAAAAAAAAAbAIAAAAAAABtAgAAAAAAAAAAAABtAgAAAAAAAG4CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaAIAAAAAAABoAgAAAAAAAAAAAAAAAEJA" + ], + [ + 313, + 1, + "insert", + { + "characters": " " + }, + "AQAAAG4CAAAAAAAAbwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbgIAAAAAAABuAgAAAAAAAAAAAAAAAPC/" + ], + [ + 319, + 1, + "insert", + { + "characters": "notified" + }, + "CQAAAIECAAAAAAAAggIAAAAAAAAAAAAAggIAAAAAAACCAgAAAAAAAAIAAABpZIICAAAAAAAAgwIAAAAAAAAAAAAAgwIAAAAAAACEAgAAAAAAAAAAAACEAgAAAAAAAIUCAAAAAAAAAAAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACHAgAAAAAAAAAAAACHAgAAAAAAAIgCAAAAAAAAAAAAAIgCAAAAAAAAiQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgQIAAAAAAACDAgAAAAAAAAAAAAAAAPC/" + ], + [ + 322, + 1, + "insert", + { + "characters": "None" + }, + "BQAAAI0CAAAAAAAAjgIAAAAAAAAAAAAAjgIAAAAAAACOAgAAAAAAAAcAAABjb21tZW50jgIAAAAAAACPAgAAAAAAAAAAAACPAgAAAAAAAJACAAAAAAAAAAAAAJACAAAAAAAAkQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQIAAAAAAACUAgAAAAAAAAAAAAAAAPC/" + ], + [ + 324, + 1, + "right_delete", + null, + "AQAAAJECAAAAAAAAkQIAAAAAAAADAAAALmlk", + "AQAAAAAAAAABAAAAkQIAAAAAAACUAgAAAAAAAAAAAAAAAPC/" + ], + [ + 326, + 1, + "insert", + { + "characters": ".se" + }, + "AwAAAJICAAAAAAAAkwIAAAAAAAAAAAAAkwIAAAAAAACUAgAAAAAAAAAAAACUAgAAAAAAAJUCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkgIAAAAAAACSAgAAAAAAAAAAAAAAAPC/" + ], + [ + 327, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":2,\"sortText\":\"09.9999.select\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":27,\"character\":49},\"symbolLabel\":\"select\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"select\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "select" + }, + "AgAAAJMCAAAAAAAAkwIAAAAAAAACAAAAc2WTAgAAAAAAAJkCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlQIAAAAAAACVAgAAAAAAAAAAAAAAAPC/" + ], + [ + 328, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAJkCAAAAAAAAmwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAmQIAAAAAAACZAgAAAAAAAAAAAAAAAPC/" + ], + [ + 333, + 1, + "right_delete", + null, + "AQAAAKACAAAAAAAAoAIAAAAAAAA5AAAAcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5ub3RpZmllZC5pc19udWxsKCkp", + "AQAAAAAAAAABAAAAoAIAAAAAAADZAgAAAAAAAP///////+9/" + ], + [ + 335, + 1, + "left_delete", + null, + "AQAAAJsCAAAAAAAAmwIAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAnAIAAAAAAACcAgAAAAAAAAAAAAAAAAAA" + ], + [ + 337, + 1, + "trim_trailing_white_space", + null, + "AQAAAJsCAAAAAAAAmwIAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAmwIAAAAAAACbAgAAAAAAAAAAAAAAAPC/" + ], + [ + 344, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAMACAAAAAAAAwQIAAAAAAAAAAAAAwQIAAAAAAADFAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwAIAAAAAAADAAgAAAAAAAP///////+9/" + ], + [ + 345, + 1, + "paste", + null, + "AQAAAMUCAAAAAAAA+AIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxQIAAAAAAADFAgAAAAAAAAAAAAAAAPC/" + ], + [ + 351, + 1, + "insert", + { + "characters": "published" + }, + "CgAAAN4CAAAAAAAA3wIAAAAAAAAAAAAA3wIAAAAAAADfAgAAAAAAAAgAAABub3RpZmllZN8CAAAAAAAA4AIAAAAAAAAAAAAA4AIAAAAAAADhAgAAAAAAAAAAAADhAgAAAAAAAOICAAAAAAAAAAAAAOICAAAAAAAA4wIAAAAAAAAAAAAA4wIAAAAAAADkAgAAAAAAAAAAAADkAgAAAAAAAOUCAAAAAAAAAAAAAOUCAAAAAAAA5gIAAAAAAAAAAAAA5gIAAAAAAADnAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3gIAAAAAAADmAgAAAAAAAAAAAAAAAPC/" + ], + [ + 355, + 1, + "right_delete", + null, + "AQAAAP4CAAAAAAAA/gIAAAAAAAA6AAAAcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbCgpKQ", + "AQAAAAAAAAABAAAA/gIAAAAAAAA4AwAAAAAAAP///////+9/" + ], + [ + 357, + 1, + "left_delete", + null, + "AQAAAPkCAAAAAAAA+QIAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAA+gIAAAAAAAD6AgAAAAAAAAAAAAAAAAAA" + ], + [ + 360, + 1, + "trim_trailing_white_space", + null, + "AQAAAPkCAAAAAAAA+QIAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAA/gIAAAAAAAD+AgAAAAAAAAAAAAAAgH9A" + ], + [ + 363, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAACQDAAAAAAAAJQMAAAAAAAAAAAAAJQMAAAAAAAApAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJAMAAAAAAAAkAwAAAAAAAP///////+9/" + ], + [ + 364, + 1, + "insert", + { + "characters": "return" + }, + "BgAAACkDAAAAAAAAKgMAAAAAAAAAAAAAKgMAAAAAAAArAwAAAAAAAAAAAAArAwAAAAAAACwDAAAAAAAAAAAAACwDAAAAAAAALQMAAAAAAAAAAAAALQMAAAAAAAAuAwAAAAAAAAAAAAAuAwAAAAAAAC8DAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKQMAAAAAAAApAwAAAAAAAAAAAAAAAPC/" + ], + [ + 365, + 1, + "insert", + { + "characters": " " + }, + "AQAAAC8DAAAAAAAAMAMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALwMAAAAAAAAvAwAAAAAAAAAAAAAAAPC/" + ], + [ + 372, + 1, + "paste", + null, + "AQAAADADAAAAAAAAXQMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMAMAAAAAAAAwAwAAAAAAAP///////+9/" + ], + [ + 377, + 1, + "insert", + { + "characters": "url" + }, + "BAAAAEIDAAAAAAAAQwMAAAAAAAAAAAAAQwMAAAAAAABDAwAAAAAAAAkAAABwdWJsaXNoZWRDAwAAAAAAAEQDAAAAAAAAAAAAAEQDAAAAAAAARQMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQgMAAAAAAABLAwAAAAAAAAAAAAAAAPC/" + ], + [ + 380, + 1, + "insert", + { + "characters": "url" + }, + "BAAAAEkDAAAAAAAASgMAAAAAAAAAAAAASgMAAAAAAABKAwAAAAAAAAQAAABOb25lSgMAAAAAAABLAwAAAAAAAAAAAABLAwAAAAAAAEwDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASQMAAAAAAABNAwAAAAAAAAAAAAAAAPC/" + ], + [ + 381, + 1, + "insert", + { + "characters": " &&" + }, + "AwAAAEwDAAAAAAAATQMAAAAAAAAAAAAATQMAAAAAAABOAwAAAAAAAAAAAABOAwAAAAAAAE8DAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATAMAAAAAAABMAwAAAAAAAAAAAAAAAPC/" + ], + [ + 382, + 1, + "insert", + { + "characters": " " + }, + "AQAAAE8DAAAAAAAAUAMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATwMAAAAAAABPAwAAAAAAAAAAAAAAAPC/" + ], + [ + 383, + 1, + "left_delete", + null, + "AQAAAE8DAAAAAAAATwMAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAUAMAAAAAAABQAwAAAAAAAAAAAAAAAPC/" + ], + [ + 384, + 1, + "insert", + { + "characters": " " + }, + "AQAAAE8DAAAAAAAAUAMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATwMAAAAAAABPAwAAAAAAAAAAAAAAAPC/" + ], + [ + 385, + 2, + "left_delete", + null, + "AgAAAE8DAAAAAAAATwMAAAAAAAABAAAAIE4DAAAAAAAATgMAAAAAAAABAAAAJg", + "AQAAAAAAAAABAAAAUAMAAAAAAABQAwAAAAAAAAAAAAAAAPC/" + ], + [ + 386, + 1, + "insert", + { + "characters": " " + }, + "AQAAAE4DAAAAAAAATwMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATgMAAAAAAABOAwAAAAAAAAAAAAAAAPC/" + ], + [ + 394, + 1, + "paste", + null, + "AQAAAE8DAAAAAAAAXAMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATwMAAAAAAABPAwAAAAAAAAAAAAAAAPC/" + ], + [ + 395, + 1, + "insert", + { + "characters": "published" + }, + "CQAAAFwDAAAAAAAAXQMAAAAAAAAAAAAAXQMAAAAAAABeAwAAAAAAAAAAAABeAwAAAAAAAF8DAAAAAAAAAAAAAF8DAAAAAAAAYAMAAAAAAAAAAAAAYAMAAAAAAABhAwAAAAAAAAAAAABhAwAAAAAAAGIDAAAAAAAAAAAAAGIDAAAAAAAAYwMAAAAAAAAAAAAAYwMAAAAAAABkAwAAAAAAAAAAAABkAwAAAAAAAGUDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXAMAAAAAAABcAwAAAAAAAAAAAAAAAPC/" + ], + [ + 396, + 1, + "insert", + { + "characters": " ==" + }, + "AwAAAGUDAAAAAAAAZgMAAAAAAAAAAAAAZgMAAAAAAABnAwAAAAAAAAAAAABnAwAAAAAAAGgDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAZQMAAAAAAABlAwAAAAAAAAAAAAAAAPC/" + ], + [ + 397, + 1, + "insert", + { + "characters": " None" + }, + "BQAAAGgDAAAAAAAAaQMAAAAAAAAAAAAAaQMAAAAAAABqAwAAAAAAAAAAAABqAwAAAAAAAGsDAAAAAAAAAAAAAGsDAAAAAAAAbAMAAAAAAAAAAAAAbAMAAAAAAABtAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaAMAAAAAAABoAwAAAAAAAAAAAAAAAPC/" + ], + [ + 401, + 1, + "insert", + { + "characters": "!" + }, + "AgAAAGYDAAAAAAAAZwMAAAAAAAAAAAAAZwMAAAAAAABnAwAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAAZgMAAAAAAABnAwAAAAAAAAAAAAAAAPC/" + ], + [ + 406, + 1, + "insert", + { + "characters": "(" + }, + "AQAAADUDAAAAAAAANgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANQMAAAAAAAA1AwAAAAAAAAAAAAAAAPC/" + ], + [ + 409, + 1, + "insert", + { + "characters": ")" + }, + "AQAAAE0DAAAAAAAATgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATQMAAAAAAABNAwAAAAAAAAAAAAAAAPC/" + ], + [ + 412, + 1, + "insert", + { + "characters": "(" + }, + "AQAAAFEDAAAAAAAAUgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUQMAAAAAAABRAwAAAAAAAAAAAAAAAPC/" + ], + [ + 416, + 1, + "insert", + { + "characters": ")" + }, + "AQAAAHEDAAAAAAAAcgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcQMAAAAAAABxAwAAAAAAAAAAAAAAAPC/" + ], + [ + 420, + 1, + "insert", + { + "characters": ".sot" + }, + "BAAAAHsDAAAAAAAAfAMAAAAAAAAAAAAAfAMAAAAAAAB9AwAAAAAAAAAAAAB9AwAAAAAAAH4DAAAAAAAAAAAAAH4DAAAAAAAAfwMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAewMAAAAAAAB7AwAAAAAAAAAAAAAAAPC/" + ], + [ + 421, + 1, + "left_delete", + null, + "AQAAAH4DAAAAAAAAfgMAAAAAAAABAAAAdA", + "AQAAAAAAAAABAAAAfwMAAAAAAAB/AwAAAAAAAAAAAAAAAPC/" + ], + [ + 422, + 1, + "insert", + { + "characters": "rt-" + }, + "AwAAAH4DAAAAAAAAfwMAAAAAAAAAAAAAfwMAAAAAAACAAwAAAAAAAAAAAACAAwAAAAAAAIEDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfgMAAAAAAAB+AwAAAAAAAAAAAAAAAPC/" + ], + [ + 423, + 1, + "left_delete", + null, + "AQAAAIADAAAAAAAAgAMAAAAAAAABAAAALQ", + "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" + ], + [ + 424, + 1, + "insert", + { + "characters": "-" + }, + "AQAAAIADAAAAAAAAgQMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAMAAAAAAACAAwAAAAAAAAAAAAAAAPC/" + ], + [ + 425, + 1, + "left_delete", + null, + "AQAAAIADAAAAAAAAgAMAAAAAAAABAAAALQ", + "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" + ], + [ + 426, + 1, + "insert", + { + "characters": "-" + }, + "AQAAAIADAAAAAAAAgQMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAMAAAAAAACAAwAAAAAAAAAAAAAAAPC/" + ], + [ + 427, + 1, + "left_delete", + null, + "AQAAAIADAAAAAAAAgAMAAAAAAAABAAAALQ", + "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" + ], + [ + 428, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAIADAAAAAAAAggMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAMAAAAAAACAAwAAAAAAAAAAAAAAAPC/" + ], + [ + 429, + 1, + "insert", + { + "characters": "lamba" + }, + "BQAAAIEDAAAAAAAAggMAAAAAAAAAAAAAggMAAAAAAACDAwAAAAAAAAAAAACDAwAAAAAAAIQDAAAAAAAAAAAAAIQDAAAAAAAAhQMAAAAAAAAAAAAAhQMAAAAAAACGAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" + ], + [ + 430, + 1, + "left_delete", + null, + "AQAAAIUDAAAAAAAAhQMAAAAAAAABAAAAYQ", + "AQAAAAAAAAABAAAAhgMAAAAAAACGAwAAAAAAAAAAAAAAAPC/" + ], + [ + 431, + 1, + "insert", + { + "characters": "da:" + }, + "AwAAAIUDAAAAAAAAhgMAAAAAAAAAAAAAhgMAAAAAAACHAwAAAAAAAAAAAACHAwAAAAAAAIgDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQMAAAAAAACFAwAAAAAAAAAAAAAAAPC/" + ], + [ + 432, + 1, + "insert", + { + "characters": " sort" + }, + "BQAAAIgDAAAAAAAAiQMAAAAAAAAAAAAAiQMAAAAAAACKAwAAAAAAAAAAAACKAwAAAAAAAIsDAAAAAAAAAAAAAIsDAAAAAAAAjAMAAAAAAAAAAAAAjAMAAAAAAACNAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiAMAAAAAAACIAwAAAAAAAAAAAAAAAPC/" + ], + [ + 433, + 1, + "insert", + { + "characters": " " + }, + "AQAAAI0DAAAAAAAAjgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQMAAAAAAACNAwAAAAAAAAAAAAAAAPC/" + ], + [ + 437, + 1, + "insert", + { + "characters": "row:" + }, + "BQAAAIkDAAAAAAAAigMAAAAAAAAAAAAAigMAAAAAAACKAwAAAAAAAAQAAABzb3J0igMAAAAAAACLAwAAAAAAAAAAAACLAwAAAAAAAIwDAAAAAAAAAAAAAIwDAAAAAAAAjQMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiQMAAAAAAACNAwAAAAAAAAAAAAAAAPC/" + ], + [ + 438, + 1, + "insert", + { + "characters": " " + }, + "AQAAAI0DAAAAAAAAjgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQMAAAAAAACNAwAAAAAAAAAAAAAAAPC/" + ], + [ + 439, + 1, + "insert", + { + "characters": "row" + }, + "AwAAAI4DAAAAAAAAjwMAAAAAAAAAAAAAjwMAAAAAAACQAwAAAAAAAAAAAACQAwAAAAAAAJEDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjgMAAAAAAACOAwAAAAAAAAAAAAAAAPC/" + ], + [ + 440, + 1, + "insert", + { + "characters": ".publ" + }, + "BQAAAJEDAAAAAAAAkgMAAAAAAAAAAAAAkgMAAAAAAACTAwAAAAAAAAAAAACTAwAAAAAAAJQDAAAAAAAAAAAAAJQDAAAAAAAAlQMAAAAAAAAAAAAAlQMAAAAAAACWAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkQMAAAAAAACRAwAAAAAAAAAAAAAAAPC/" + ], + [ + 441, + 1, + "insert", + { + "characters": "ish" + }, + "AwAAAJYDAAAAAAAAlwMAAAAAAAAAAAAAlwMAAAAAAACYAwAAAAAAAAAAAACYAwAAAAAAAJkDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlgMAAAAAAACWAwAAAAAAAAAAAAAAAPC/" + ], + [ + 442, + 1, + "insert", + { + "characters": "ed" + }, + "AgAAAJkDAAAAAAAAmgMAAAAAAAAAAAAAmgMAAAAAAACbAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAmQMAAAAAAACZAwAAAAAAAAAAAAAAAPC/" + ], + [ + 443, + 1, + "right_delete", + null, + "AQAAAJsDAAAAAAAAmwMAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAmwMAAAAAAACbAwAAAAAAAAAAAAAAAPC/" + ], + [ + 448, + 1, + "right_delete", + null, + "AQAAAJ0DAAAAAAAAnQMAAAAAAACjAAAAICAgIHJldHVybiAoCiAgICAgICAgQ29tbWVudC5zZWxlY3QoQ29tbWVudCkKICAgICAgICAud2hlcmUoKENvbW1lbnQudXJsID09IHVybCkgJiAoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbChGYWxzZSkpKQogICAgICAgIC5vcmRlcl9ieSgrQ29tbWVudC5wdWJsaXNoZWQpCiAgICApCg", + "AQAAAAAAAAABAAAAnQMAAAAAAABABAAAAAAAAAAAAAAAAAAA" + ], + [ + 451, + 1, + "left_delete", + null, + "AQAAAIcDAAAAAAAAhwMAAAAAAAABAAAAOg", + "AQAAAAAAAAABAAAAiAMAAAAAAACIAwAAAAAAAAAAAAAAAPC/" + ], + [ + 461, + 1, + "right_delete", + null, + "AQAAAB4FAAAAAAAAHgUAAAAAAAAeAAAALnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIp", + "AQAAAAAAAAABAAAAHgUAAAAAAAA8BQAAAAAAAP///////+9/" + ], + [ + 470, + 1, + "insert", + { + "characters": "\n\n" + }, + "BQAAAMADAAAAAAAAwQMAAAAAAAAAAAAAwQMAAAAAAADFAwAAAAAAAAAAAADFAwAAAAAAAMYDAAAAAAAAAAAAAMYDAAAAAAAAygMAAAAAAAAAAAAAwQMAAAAAAADBAwAAAAAAAAQAAAAgICAg", + "AQAAAAAAAAABAAAAwAMAAAAAAADAAwAAAAAAAAAAAAAAAPC/" + ], + [ + 472, + 1, + "reindent", + null, + "AQAAAMEDAAAAAAAAxQMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwQMAAAAAAADBAwAAAAAAAAAAAAAAAEJA" + ], + [ + 473, + 1, + "insert", + { + "characters": "return" + }, + "BwAAAMUDAAAAAAAAxgMAAAAAAAAAAAAAxwMAAAAAAADHAwAAAAAAAAQAAAAgICAgxgMAAAAAAADHAwAAAAAAAAAAAADHAwAAAAAAAMgDAAAAAAAAAAAAAMgDAAAAAAAAyQMAAAAAAAAAAAAAyQMAAAAAAADKAwAAAAAAAAAAAADKAwAAAAAAAMsDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxQMAAAAAAADFAwAAAAAAAAAAAAAAAPC/" + ], + [ + 474, + 1, + "insert", + { + "characters": " " + }, + "AQAAAMsDAAAAAAAAzAMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAywMAAAAAAADLAwAAAAAAAAAAAAAAAPC/" + ], + [ + 480, + 1, + "paste", + null, + "AQAAAMwDAAAAAAAAFwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzAMAAAAAAADMAwAAAAAAAAAAAAAAAPC/" + ], + [ + 485, + 1, + "insert", + { + "characters": "==" + }, + "AwAAAAUEAAAAAAAABgQAAAAAAAAAAAAABgQAAAAAAAAGBAAAAAAAAAIAAAAhPQYEAAAAAAAABwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAABQQAAAAAAAAHBAAAAAAAAAAAAAAAAPC/" + ], + [ + 487, + 1, + "insert", + { + "characters": " " + }, + "AQAAABcEAAAAAAAAGAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFwQAAAAAAAAXBAAAAAAAAP///////+9/" + ], + [ + 488, + 1, + "left_delete", + null, + "AQAAABcEAAAAAAAAFwQAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAGAQAAAAAAAAYBAAAAAAAAAAAAAAAAPC/" + ], + [ + 489, + 1, + "insert", + { + "characters": ".count" + }, + "BgAAABcEAAAAAAAAGAQAAAAAAAAAAAAAGAQAAAAAAAAZBAAAAAAAAAAAAAAZBAAAAAAAABoEAAAAAAAAAAAAABoEAAAAAAAAGwQAAAAAAAAAAAAAGwQAAAAAAAAcBAAAAAAAAAAAAAAcBAAAAAAAAB0EAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFwQAAAAAAAAXBAAAAAAAAAAAAAAAAPC/" + ], + [ + 490, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAB0EAAAAAAAAHwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAHQQAAAAAAAAdBAAAAAAAAAAAAAAAAPC/" + ], + [ + 492, + 1, + "insert", + { + "characters": " if" + }, + "AwAAAB8EAAAAAAAAIAQAAAAAAAAAAAAAIAQAAAAAAAAhBAAAAAAAAAAAAAAhBAAAAAAAACIEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAHwQAAAAAAAAfBAAAAAAAAAAAAAAAAPC/" + ], + [ + 493, + 1, + "insert", + { + "characters": " u" + }, + "AgAAACIEAAAAAAAAIwQAAAAAAAAAAAAAIwQAAAAAAAAkBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAIgQAAAAAAAAiBAAAAAAAAAAAAAAAAPC/" + ], + [ + 494, + 1, + "insert", + { + "characters": "rl" + }, + "AgAAACQEAAAAAAAAJQQAAAAAAAAAAAAAJQQAAAAAAAAmBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJAQAAAAAAAAkBAAAAAAAAAAAAAAAAPC/" + ], + [ + 495, + 1, + "insert", + { + "characters": " " + }, + "AQAAACYEAAAAAAAAJwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" + ], + [ + 496, + 1, + "insert", + { + "characters": "\nelse" + }, + "BgAAACcEAAAAAAAAKAQAAAAAAAAAAAAAKAQAAAAAAAAsBAAAAAAAAAAAAAAsBAAAAAAAAC0EAAAAAAAAAAAAAC0EAAAAAAAALgQAAAAAAAAAAAAALgQAAAAAAAAvBAAAAAAAAAAAAAAvBAAAAAAAADAEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJwQAAAAAAAAnBAAAAAAAAAAAAAAAAPC/" + ], + [ + 497, + 1, + "insert", + { + "characters": " " + }, + "AQAAADAEAAAAAAAAMQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMAQAAAAAAAAwBAAAAAAAAAAAAAAAAPC/" + ], + [ + 504, + 1, + "paste", + null, + "AQAAADEEAAAAAAAAjAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMQQAAAAAAAAxBAAAAAAAAAAAAAAAAPC/" + ], + [ + 511, + 1, + "right_delete", + null, + "AQAAADYEAAAAAAAANgQAAAAAAAAdAAAAKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmICg", + "AQAAAAAAAAABAAAANgQAAAAAAABTBAAAAAAAAAAAAAAAAPC/" + ], + [ + 515, + 1, + "left_delete", + null, + "AQAAAFQEAAAAAAAAVAQAAAAAAAABAAAAKQ", + "AQAAAAAAAAABAAAAVQQAAAAAAABVBAAAAAAAAAAAAAAAAPC/" + ], + [ + 520, + 1, + "right_delete", + null, + "AQAAAGcEAAAAAAAAZwQAAAAAAAAGAAAAaWYgdXJs", + "AQAAAAAAAAABAAAAZwQAAAAAAABtBAAAAAAAAAAAAAAAAPC/" + ], + [ + 527, + 1, + "insert", + { + "characters": "is" + }, + "AwAAAAUEAAAAAAAABgQAAAAAAAAAAAAABgQAAAAAAAAGBAAAAAAAAAIAAAA9PQYEAAAAAAAABwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAABQQAAAAAAAAHBAAAAAAAAAAAAAAAAPC/" + ], + [ + 532, + 1, + "insert", + { + "characters": "is" + }, + "AwAAAE0EAAAAAAAATgQAAAAAAAAAAAAATgQAAAAAAABOBAAAAAAAAAIAAAA9PU4EAAAAAAAATwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATQQAAAAAAABPBAAAAAAAAAAAAAAAAPC/" + ], + [ + 537, + 1, + "right_delete", + null, + "AQAAAGoEAAAAAAAAagQAAAAAAADyAAAAICAgIHJldHVybiAoCiAgICAgICAgQ29tbWVudC5zZWxlY3QoQ29tbWVudCkKICAgICAgICAud2hlcmUoKENvbW1lbnQudXJsID09IHVybCkgJiAoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbChGYWxzZSkpKQogICAgICAgIC5jb3VudCgpCiAgICAgICAgaWYgdXJsCiAgICAgICAgZWxzZSBDb21tZW50LnNlbGVjdChDb21tZW50KS53aGVyZShDb21tZW50LnB1Ymxpc2hlZC5pc19udWxsKEZhbHNlKSkuY291bnQoKQogICAgKQo", + "AQAAAAAAAAABAAAAagQAAAAAAABcBQAAAAAAAAAAAAAAAAAA" + ], + [ + 538, + 1, + "left_delete", + null, + "AQAAAGkEAAAAAAAAaQQAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAagQAAAAAAABqBAAAAAAAAAAAAAAAAPC/" + ], + [ + 540, + 1, + "trim_trailing_white_space", + null, + "AgAAAGYEAAAAAAAAZgQAAAAAAAACAAAAICAmBAAAAAAAACYEAAAAAAAAAQAAACA", + "AQAAAAAAAAABAAAAaQQAAAAAAABpBAAAAAAAAAAAAAAAAPC/" + ], + [ + 546, + 1, + "insert", + { + "characters": "\t" + }, + "AQAAACsEAAAAAAAALwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKwQAAAAAAAArBAAAAAAAAAAAAAAAAPC/" + ], + [ + 554, + 1, + "right_delete", + null, + "AQAAACYEAAAAAAAAJgQAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" + ], + [ + 555, + 1, + "insert", + { + "characters": " " + }, + "AQAAACYEAAAAAAAAJwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" + ], + [ + 558, + 1, + "right_delete", + null, + "AQAAACcEAAAAAAAAJwQAAAAAAAAIAAAAICAgICAgICA", + "AQAAAAAAAAABAAAAJwQAAAAAAAAvBAAAAAAAAAAAAAAAAPC/" + ], + [ + 566, + 1, + "insert", + { + "characters": "is" + }, + "AwAAAOgCAAAAAAAA6QIAAAAAAAAAAAAA6QIAAAAAAADpAgAAAAAAAAIAAAA9PekCAAAAAAAA6gIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6AIAAAAAAADqAgAAAAAAAAAAAAAAAPC/" + ], + [ + 571, + 1, + "insert", + { + "characters": "is" + }, + "AwAAAIoCAAAAAAAAiwIAAAAAAAAAAAAAiwIAAAAAAACLAgAAAAAAAAIAAAA9PYsCAAAAAAAAjAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjAIAAAAAAACKAgAAAAAAAAAAAAAAAPC/" + ], + [ + 578, + 1, + "insert", + { + "characters": "is" + }, + "AgAAAGkDAAAAAAAAagMAAAAAAAAAAAAAagMAAAAAAABrAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaQMAAAAAAABpAwAAAAAAAAAAAAAAAPC/" + ], + [ + 579, + 1, + "insert", + { + "characters": " not" + }, + "BAAAAGsDAAAAAAAAbAMAAAAAAAAAAAAAbAMAAAAAAABtAwAAAAAAAAAAAABtAwAAAAAAAG4DAAAAAAAAAAAAAG4DAAAAAAAAbwMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAawMAAAAAAABrAwAAAAAAAAAAAAAAAPC/" + ], + [ + 580, + 1, + "insert", + { + "characters": " " + }, + "AQAAAG8DAAAAAAAAcAMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbwMAAAAAAABvAwAAAAAAAAAAAAAAAPC/" + ], + [ + 582, + 2, + "right_delete", + null, + "AgAAAHADAAAAAAAAcAMAAAAAAAACAAAAIT1wAwAAAAAAAHADAAAAAAAAAQAAACA", + "AQAAAAAAAAABAAAAcAMAAAAAAAByAwAAAAAAAAAAAAAAAPC/" + ], + [ + 589, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAANEEAAAAAAAA0gQAAAAAAAAAAAAA0gQAAAAAAADWBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0QQAAAAAAADRBAAAAAAAAAAAAAAAAPC/" + ], + [ + 595, + 1, + "paste", + null, + "AQAAANYEAAAAAAAA+gQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1gQAAAAAAADWBAAAAAAAAAAAAAAAAPC/" + ], + [ + 600, + 1, + "right_delete", + null, + "AQAAAOoEAAAAAAAA6gQAAAAAAAAPAAAAYXNkaWN0KGNvbW1lbnQp", + "AQAAAAAAAAABAAAA6gQAAAAAAAD5BAAAAAAAAAAAAAAAAPC/" + ], + [ + 601, + 1, + "insert", + { + "characters": "\n" + }, + "BAAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA6wQAAAAAAADvBAAAAAAAAAAAAADrBAAAAAAAAOsEAAAAAAAABAAAACAgICDrBAAAAAAAAPMEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6gQAAAAAAADqBAAAAAAAAAAAAAAAAPC/" + ], + [ + 604, + 1, + "insert", + { + "characters": "\n" + }, + "BAAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA6wQAAAAAAADvBAAAAAAAAAAAAADrBAAAAAAAAOsEAAAAAAAABAAAACAgICDrBAAAAAAAAPMEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6gQAAAAAAADqBAAAAAAAAAAAAAAAAPC/" + ], + [ + 607, + 1, + "cut", + null, + "AQAAABUFAAAAAAAAFQUAAAAAAADcAAAAICAgICAgICB1cmw9dXJsLAogICAgICAgIGF1dGhvcl9uYW1lPWF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPWF1dGhvcl9zaXRlLAogICAgICAgIGF1dGhvcl9ncmF2YXRhcj1hdXRob3JfZ3JhdmF0YXIsCiAgICAgICAgY29udGVudD1tZXNzYWdlLAogICAgICAgIGNyZWF0ZWQ9Y3JlYXRlZCwKICAgICAgICBub3RpZmllZD1Ob25lLAogICAgICAgIHB1Ymxpc2hlZD1Ob25lLA", + "AQAAAAAAAAABAAAA8QUAAAAAAAAVBQAAAAAAAAAAAAAAAPC/" + ], + [ + 610, + 1, + "paste", + null, + "AQAAAOwEAAAAAAAAyAUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA7AQAAAAAAADsBAAAAAAAAAAAAAAAAPC/" + ], + [ + 613, + 1, + "right_delete", + null, + "AQAAAPMEAAAAAAAA8wQAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAA8wQAAAAAAADzBAAAAAAAAAAAAAAAAPC/" + ], + [ + 618, + 1, + "cut", + null, + "AQAAAMMEAAAAAAAAwwQAAAAAAAAOAAAAZGF0ZXRpbWUubm93KCk", + "AQAAAAAAAAABAAAAwwQAAAAAAADRBAAAAAAAAAAAAAAAAPC/" + ], + [ + 623, + 1, + "paste", + null, + "AgAAAIIFAAAAAAAAkAUAAAAAAAAAAAAAkAUAAAAAAACQBQAAAAAAAAcAAABjcmVhdGVk", + "AQAAAAAAAAABAAAAggUAAAAAAACJBQAAAAAAAAAAAAAAAPC/" + ], + [ + 626, + 2, + "left_delete", + null, + "AgAAANIFAAAAAAAA0gUAAAAAAAAwAAAAICAgIGNvbW1lbnQgPSBDb21tZW50KAoKICAgICkKICAgIGNvbW1lbnQuc2F2ZSgp0QUAAAAAAADRBQAAAAAAAAEAAAAK", + "AQAAAAAAAAABAAAAAgYAAAAAAADSBQAAAAAAAAAAAAAAAPC/" + ], + [ + 631, + 1, + "right_delete", + null, + "AQAAALkEAAAAAAAAuQQAAAAAAAAKAAAAY3JlYXRlZCA9IA", + "AQAAAAAAAAABAAAAwwQAAAAAAAC5BAAAAAAAAAAAAAAAAEJA" + ], + [ + 633, + 1, + "left_delete", + null, + "AQAAALQEAAAAAAAAtAQAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAtQQAAAAAAAC1BAAAAAAAAAAAAAAAAAAA" + ], + [ + 635, + 1, + "trim_trailing_white_space", + null, + "AgAAALUFAAAAAAAAtQUAAAAAAAAHAAAAICAgICAgILQEAAAAAAAAtAQAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAtAQAAAAAAAC0BAAAAAAAAAAAAAAAAPC/" + ], + [ + 651, + 1, + "insert", + { + "characters": "comment" + }, + "BwAAALkEAAAAAAAAugQAAAAAAAAAAAAAugQAAAAAAAC7BAAAAAAAAAAAAAC7BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvQQAAAAAAAAAAAAAvQQAAAAAAAC+BAAAAAAAAAAAAAC+BAAAAAAAAL8EAAAAAAAAAAAAAL8EAAAAAAAAwAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAuQQAAAAAAAC5BAAAAAAAAAAAAAAAAPC/" + ], + [ + 652, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAMAEAAAAAAAAwQQAAAAAAAAAAAAAwQQAAAAAAADCBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwAQAAAAAAADABAAAAAAAAAAAAAAAAPC/" + ], + [ + 653, + 1, + "insert", + { + "characters": " " + }, + "AQAAAMIEAAAAAAAAwwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwgQAAAAAAADCBAAAAAAAAAAAAAAAAPC/" + ], + [ + 660, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAADZBQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRiCmZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKCmRlZiBmaW5kX2NvbW1lbnRfYnlfaWQoY29tbWVudF9pZCk6CiAgICByZXR1cm4gZGIoKS5jb21tZW50KGNvbW1lbnRfaWQpCgoKZGVmIG5vdGlmeV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5ub3RpZmllZCA9IGRhdGV0aW1lLm5vdygpCiAgICBkYigpLmNvbW1lbnQuaW5zZXJ0KGFzZGljdChjb21tZW50KSkKCgpkZWYgcHVibGlzaF9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5wdWJsaXNoZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50Lmluc2VydChhc2RpY3QoY29tbWVudCkpCgoKZGVmIGRlbGV0ZV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgZGIoKShkYigpLmNvbW1lbnQuaWQgPT0gY29tbWVudC5pZCkuZGVsZXRlKCkKCgpkZWYgZmluZF9ub3Rfbm90aWZpZWRfY29tbWVudHMoKToKICAgIHJldHVybiBkYigpKGRiKCkuY29tbWVudC5ub3RpZmllZCBpcyBOb25lKS5zZWxlY3QoKQoKCmRlZiBmaW5kX25vdF9wdWJsaXNoZWRfY29tbWVudHMoKToKICAgIHJldHVybiBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgaXMgTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9wdWJsaXNoZWRfY29tbWVudHNfYnlfdXJsKHVybCk6CiAgICByZXR1cm4gZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgaXMgbm90IE5vbmUpKS5zZWxlY3QoKS5zb3J0KGxhbWJkYSByb3c6IHJvdy5wdWJsaXNoZWQpCgoKZGVmIGNvdW50X3B1Ymxpc2hlZF9jb21tZW50cyh1cmwpOgogICAgcmV0dXJuIGRiKCkoKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmIChkYigpLmNvbW1lbnQucHVibGlzaGVkIGlzIE5vbmUpKS5zZWxlY3QoKS5jb3VudCgpIGlmIHVybCBlbHNlIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCBpcyBOb25lKS5zZWxlY3QoKS5jb3VudCgpCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgY29tbWVudCA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICAgICAgKQogICAgcmV0dXJuIGNvbW1lbnQKAAAAAAAAAAAqBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxQUAAAAAAADFBQAAAAAAAAAAAAAAAPC/" + ], + [ + 691, + 1, + "insert", + { + "characters": "==" + }, + "AgAAAIsCAAAAAAAAjAIAAAAAAAAAAAAAjAIAAAAAAACNAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" + ], + [ + 692, + 2, + "right_delete", + null, + "AgAAAI0CAAAAAAAAjQIAAAAAAAABAAAAaY0CAAAAAAAAjQIAAAAAAAABAAAAcw", + "AQAAAAAAAAABAAAAjQIAAAAAAACNAgAAAAAAAAAAAAAAAPC/" + ], + [ + 696, + 1, + "insert", + { + "characters": "==" + }, + "AgAAAOkCAAAAAAAA6gIAAAAAAAAAAAAA6gIAAAAAAADrAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6QIAAAAAAADpAgAAAAAAAAAAAAAAAPC/" + ], + [ + 697, + 2, + "right_delete", + null, + "AgAAAOsCAAAAAAAA6wIAAAAAAAABAAAAaesCAAAAAAAA6wIAAAAAAAABAAAAcw", + "AQAAAAAAAAABAAAA6wIAAAAAAADrAgAAAAAAAAAAAAAAAPC/" + ], + [ + 712, + 1, + "insert", + { + "characters": "!=" + }, + "AwAAAHQDAAAAAAAAdQMAAAAAAAAAAAAAdQMAAAAAAAB1AwAAAAAAAAYAAABpcyBub3R1AwAAAAAAAHYDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdAMAAAAAAAB6AwAAAAAAAAAAAAAAAPC/" + ], + [ + 717, + 1, + "insert", + { + "characters": "==" + }, + "AwAAADIEAAAAAAAAMwQAAAAAAAAAAAAAMwQAAAAAAAAzBAAAAAAAAAIAAABpczMEAAAAAAAANAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMgQAAAAAAAA0BAAAAAAAAAAAAAAAAPC/" + ], + [ + 725, + 1, + "insert", + { + "characters": "==" + }, + "AwAAAJcEAAAAAAAAmAQAAAAAAAAAAAAAmAQAAAAAAACYBAAAAAAAAAIAAABpc5gEAAAAAAAAmQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlwQAAAAAAACZBAAAAAAAAAAAAAAAAPC/" + ], + [ + 741, + 2, + "right_delete", + null, + "AgAAAKAEAAAAAAAAoAQAAAAAAAAIAAAAc2VsZWN0KCmgBAAAAAAAAKAEAAAAAAAAAQAAAC4", + "AQAAAAAAAAABAAAAoAQAAAAAAACoBAAAAAAAAAAAAAAAAPC/" + ], + [ + 744, + 1, + "right_delete", + null, + "AQAAAEQEAAAAAAAARAQAAAAAAAAJAAAALnNlbGVjdCgp", + "AQAAAAAAAAABAAAATQQAAAAAAABEBAAAAAAAAAAAAAAAAFJA" + ], + [ + 746, + 1, + "left_delete", + null, + "AQAAADsEAAAAAAAAOwQAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAPAQAAAAAAAA8BAAAAAAAAAAAAAAAAAAA" + ], + [ + 748, + 1, + "trim_trailing_white_space", + null, + "AQAAADsEAAAAAAAAOwQAAAAAAAAIAAAAICAgICAgICA", + "AQAAAAAAAAABAAAAOwQAAAAAAAA7BAAAAAAAAAAAAAAAAPC/" + ], + [ + 749, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAAALBgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYgpmcm9tIHN0YWNvc3lzLm1vZGVsLmNvbW1lbnQgaW1wb3J0IENvbW1lbnQKCgpkZWYgZmluZF9jb21tZW50X2J5X2lkKGNvbW1lbnRfaWQpOgogICAgcmV0dXJuIGRiKCkuY29tbWVudChjb21tZW50X2lkKQoKCmRlZiBub3RpZnlfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQubm90aWZpZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50Lmluc2VydChhc2RpY3QoY29tbWVudCkpCgoKZGVmIHB1Ymxpc2hfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQucHVibGlzaGVkID0gZGF0ZXRpbWUubm93KCkKICAgIGRiKCkuY29tbWVudC5pbnNlcnQoYXNkaWN0KGNvbW1lbnQpKQoKCmRlZiBkZWxldGVfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGRiKCkoZGIoKS5jb21tZW50LmlkID09IGNvbW1lbnQuaWQpLmRlbGV0ZSgpCgoKZGVmIGZpbmRfbm90X25vdGlmaWVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQubm90aWZpZWQgPT0gTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9ub3RfcHVibGlzaGVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfcHVibGlzaGVkX2NvbW1lbnRzX2J5X3VybCh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKChkYigpLmNvbW1lbnQudXJsID09IHVybCkgJiAoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCAhPSBOb25lKSkKICAgICAgICAuc2VsZWN0KCkKICAgICAgICAuc29ydChsYW1iZGEgcm93OiByb3cucHVibGlzaGVkKQogICAgKQoKCmRlZiBjb3VudF9wdWJsaXNoZWRfY29tbWVudHModXJsKToKICAgIHJldHVybiAoCiAgICAgICAgZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgPT0gTm9uZSkpCiAgICAgICAgLmNvdW50KCkKICAgICAgICBpZiB1cmwKICAgICAgICBlbHNlIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCA9PSBOb25lKS5jb3VudCgpCiAgICApCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgY29tbWVudCA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICApCiAgICByZXR1cm4gY29tbWVudAoAAAAAAAAAAAIGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOwQAAAAAAAA7BAAAAAAAAAAAAAAAAPC/" + ], + [ + 790, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAO4FAAAAAAAA7wUAAAAAAAAAAAAA7wUAAAAAAADzBQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA7gUAAAAAAADuBQAAAAAAAAAAAAAAAPC/" + ], + [ + 796, + 1, + "insert", + { + "characters": "Comment" + }, + "CQAAAP8FAAAAAAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAABgAAAAAAAAcAAABjb21tZW507wUAAAAAAADvBQAAAAAAAAQAAAAgICAg/AUAAAAAAAD9BQAAAAAAAAAAAAD9BQAAAAAAAP4FAAAAAAAAAAAAAP4FAAAAAAAA/wUAAAAAAAAAAAAA/wUAAAAAAAAABgAAAAAAAAAAAAAABgAAAAAAAAEGAAAAAAAAAAAAAAEGAAAAAAAAAgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/wUAAAAAAAAGBgAAAAAAAAAAAAAAAPC/" + ], + [ + 797, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAAIGAAAAAAAABAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAAgYAAAAAAAACBgAAAAAAAAAAAAAAAPC/" + ], + [ + 798, + 1, + "insert", + { + "characters": "id=com" + }, + "BgAAAAMGAAAAAAAABAYAAAAAAAAAAAAABAYAAAAAAAAFBgAAAAAAAAAAAAAFBgAAAAAAAAYGAAAAAAAAAAAAAAYGAAAAAAAABwYAAAAAAAAAAAAABwYAAAAAAAAIBgAAAAAAAAAAAAAIBgAAAAAAAAkGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAAwYAAAAAAAADBgAAAAAAAAAAAAAAAPC/" + ], + [ + 799, + 1, + "insert", + { + "characters": "ment." + }, + "BQAAAAkGAAAAAAAACgYAAAAAAAAAAAAACgYAAAAAAAALBgAAAAAAAAAAAAALBgAAAAAAAAwGAAAAAAAAAAAAAAwGAAAAAAAADQYAAAAAAAAAAAAADQYAAAAAAAAOBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACQYAAAAAAAAJBgAAAAAAAAAAAAAAAPC/" + ], + [ + 800, + 1, + "insert", + { + "characters": "id" + }, + "AgAAAA4GAAAAAAAADwYAAAAAAAAAAAAADwYAAAAAAAAQBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADgYAAAAAAAAOBgAAAAAAAAAAAAAAAPC/" + ], + [ + 801, + 1, + "insert", + { + "characters": "," + }, + "AQAAABAGAAAAAAAAEQYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEAYAAAAAAAAQBgAAAAAAAAAAAAAAAPC/" + ], + [ + 802, + 1, + "insert", + { + "characters": " " + }, + "AQAAABEGAAAAAAAAEgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEQYAAAAAAAARBgAAAAAAAAAAAAAAAPC/" + ], + [ + 803, + 1, + "insert", + { + "characters": "url=" + }, + "BAAAABIGAAAAAAAAEwYAAAAAAAAAAAAAEwYAAAAAAAAUBgAAAAAAAAAAAAAUBgAAAAAAABUGAAAAAAAAAAAAABUGAAAAAAAAFgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEgYAAAAAAAASBgAAAAAAAAAAAAAAAPC/" + ], + [ + 804, + 1, + "insert", + { + "characters": " " + }, + "AQAAABYGAAAAAAAAFwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFgYAAAAAAAAWBgAAAAAAAAAAAAAAAPC/" + ], + [ + 805, + 1, + "left_delete", + null, + "AQAAABYGAAAAAAAAFgYAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAFwYAAAAAAAAXBgAAAAAAAAAAAAAAAPC/" + ], + [ + 806, + 1, + "insert", + { + "characters": "comment" + }, + "BwAAABYGAAAAAAAAFwYAAAAAAAAAAAAAFwYAAAAAAAAYBgAAAAAAAAAAAAAYBgAAAAAAABkGAAAAAAAAAAAAABkGAAAAAAAAGgYAAAAAAAAAAAAAGgYAAAAAAAAbBgAAAAAAAAAAAAAbBgAAAAAAABwGAAAAAAAAAAAAABwGAAAAAAAAHQYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFgYAAAAAAAAWBgAAAAAAAAAAAAAAAPC/" + ], + [ + 812, + 1, + "insert", + { + "characters": "row" + }, + "BAAAAOYEAAAAAAAA5wQAAAAAAAAAAAAA5wQAAAAAAADnBAAAAAAAAAcAAABjb21tZW505wQAAAAAAADoBAAAAAAAAAAAAADoBAAAAAAAAOkEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5gQAAAAAAADtBAAAAAAAAAAAAAAAAPC/" + ], + [ + 817, + 1, + "insert", + { + "characters": "row" + }, + "BAAAAAIGAAAAAAAAAwYAAAAAAAAAAAAAAwYAAAAAAAADBgAAAAAAAAcAAABjb21tZW50AwYAAAAAAAAEBgAAAAAAAAAAAAAEBgAAAAAAAAUGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAAgYAAAAAAAAJBgAAAAAAAAAAAAAAAPC/" + ], + [ + 822, + 1, + "insert", + { + "characters": "row.url" + }, + "CAAAAA4GAAAAAAAADwYAAAAAAAAAAAAADwYAAAAAAAAPBgAAAAAAAAcAAABjb21tZW50DwYAAAAAAAAQBgAAAAAAAAAAAAAQBgAAAAAAABEGAAAAAAAAAAAAABEGAAAAAAAAEgYAAAAAAAAAAAAAEgYAAAAAAAATBgAAAAAAAAAAAAATBgAAAAAAABQGAAAAAAAAAAAAABQGAAAAAAAAFQYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADgYAAAAAAAAVBgAAAAAAAAAAAAAAAPC/" + ], + [ + 823, + 1, + "insert", + { + "characters": "," + }, + "AQAAABUGAAAAAAAAFgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFQYAAAAAAAAVBgAAAAAAAAAAAAAAAPC/" + ], + [ + 824, + 1, + "insert", + { + "characters": " auth" + }, + "BQAAABYGAAAAAAAAFwYAAAAAAAAAAAAAFwYAAAAAAAAYBgAAAAAAAAAAAAAYBgAAAAAAABkGAAAAAAAAAAAAABkGAAAAAAAAGgYAAAAAAAAAAAAAGgYAAAAAAAAbBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFgYAAAAAAAAWBgAAAAAAAAAAAAAAAPC/" + ], + [ + 827, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"04.9999.author_name\",\"filterText\":\"author_name\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":63,\"character\":47},\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"author_name=\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_name=" + }, + "AgAAABcGAAAAAAAAFwYAAAAAAAAEAAAAYXV0aBcGAAAAAAAAIwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGwYAAAAAAAAbBgAAAAAAAAAAAAAAAPC/" + ], + [ + 828, + 1, + "insert", + { + "characters": "row.a" + }, + "BQAAACMGAAAAAAAAJAYAAAAAAAAAAAAAJAYAAAAAAAAlBgAAAAAAAAAAAAAlBgAAAAAAACYGAAAAAAAAAAAAACYGAAAAAAAAJwYAAAAAAAAAAAAAJwYAAAAAAAAoBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAIwYAAAAAAAAjBgAAAAAAAAAAAAAAAPC/" + ], + [ + 829, + 1, + "insert_completion", + { + "completion": "author_name", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_name" + }, + "AgAAACcGAAAAAAAAJwYAAAAAAAABAAAAYScGAAAAAAAAMgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKAYAAAAAAAAoBgAAAAAAAAAAAAAAAPC/" + ], + [ + 830, + 1, + "insert", + { + "characters": "," + }, + "AQAAADIGAAAAAAAAMwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMgYAAAAAAAAyBgAAAAAAAAAAAAAAAPC/" + ], + [ + 831, + 1, + "insert", + { + "characters": " auth" + }, + "BQAAADMGAAAAAAAANAYAAAAAAAAAAAAANAYAAAAAAAA1BgAAAAAAAAAAAAA1BgAAAAAAADYGAAAAAAAAAAAAADYGAAAAAAAANwYAAAAAAAAAAAAANwYAAAAAAAA4BgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMwYAAAAAAAAzBgAAAAAAAAAAAAAAAPC/" + ], + [ + 834, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"04.9999.author_site\",\"filterText\":\"author_site\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":63,\"character\":76},\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"author_site=\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_site=" + }, + "AgAAADQGAAAAAAAANAYAAAAAAAAEAAAAYXV0aDQGAAAAAAAAQAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOAYAAAAAAAA4BgAAAAAAAAAAAAAAAPC/" + ], + [ + 835, + 1, + "insert", + { + "characters": "=row.au" + }, + "BwAAAEAGAAAAAAAAQQYAAAAAAAAAAAAAQQYAAAAAAABCBgAAAAAAAAAAAABCBgAAAAAAAEMGAAAAAAAAAAAAAEMGAAAAAAAARAYAAAAAAAAAAAAARAYAAAAAAABFBgAAAAAAAAAAAABFBgAAAAAAAEYGAAAAAAAAAAAAAEYGAAAAAAAARwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQAYAAAAAAABABgAAAAAAAAAAAAAAAPC/" + ], + [ + 836, + 1, + "insert_completion", + { + "completion": "author_site", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_site" + }, + "AgAAAEUGAAAAAAAARQYAAAAAAAACAAAAYXVFBgAAAAAAAFAGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAARwYAAAAAAABHBgAAAAAAAAAAAAAAAPC/" + ], + [ + 837, + 1, + "insert", + { + "characters": "," + }, + "AQAAAFAGAAAAAAAAUQYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUAYAAAAAAABQBgAAAAAAAAAAAAAAAPC/" + ], + [ + 838, + 1, + "insert", + { + "characters": " " + }, + "AQAAAFEGAAAAAAAAUgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUQYAAAAAAABRBgAAAAAAAAAAAAAAAPC/" + ], + [ + 839, + 1, + "insert", + { + "characters": "au" + }, + "AgAAAFIGAAAAAAAAUwYAAAAAAAAAAAAAUwYAAAAAAABUBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUgYAAAAAAABSBgAAAAAAAAAAAAAAAPC/" + ], + [ + 842, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"04.9999.author_gravatar\",\"filterText\":\"author_gravatar\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":63,\"character\":104},\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"author_gravatar=\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_gravatar=" + }, + "AgAAAFIGAAAAAAAAUgYAAAAAAAACAAAAYXVSBgAAAAAAAGIGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVAYAAAAAAABUBgAAAAAAAAAAAAAAAPC/" + ], + [ + 843, + 1, + "insert", + { + "characters": "row.a" + }, + "BQAAAGIGAAAAAAAAYwYAAAAAAAAAAAAAYwYAAAAAAABkBgAAAAAAAAAAAABkBgAAAAAAAGUGAAAAAAAAAAAAAGUGAAAAAAAAZgYAAAAAAAAAAAAAZgYAAAAAAABnBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYgYAAAAAAABiBgAAAAAAAAAAAAAAAPC/" + ], + [ + 844, + 1, + "insert_completion", + { + "completion": "author_gravatar", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_gravatar" + }, + "AgAAAGYGAAAAAAAAZgYAAAAAAAABAAAAYWYGAAAAAAAAdQYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAZwYAAAAAAABnBgAAAAAAAAAAAAAAAPC/" + ], + [ + 845, + 1, + "insert", + { + "characters": "," + }, + "AQAAAHUGAAAAAAAAdgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdQYAAAAAAAB1BgAAAAAAAAAAAAAAAPC/" + ], + [ + 846, + 1, + "insert", + { + "characters": " " + }, + "AQAAAHYGAAAAAAAAdwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdgYAAAAAAAB2BgAAAAAAAAAAAAAAAPC/" + ], + [ + 847, + 1, + "insert", + { + "characters": "contnt" + }, + "BgAAAHcGAAAAAAAAeAYAAAAAAAAAAAAAeAYAAAAAAAB5BgAAAAAAAAAAAAB5BgAAAAAAAHoGAAAAAAAAAAAAAHoGAAAAAAAAewYAAAAAAAAAAAAAewYAAAAAAAB8BgAAAAAAAAAAAAB8BgAAAAAAAH0GAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdwYAAAAAAAB3BgAAAAAAAAAAAAAAAPC/" + ], + [ + 848, + 2, + "left_delete", + null, + "AgAAAHwGAAAAAAAAfAYAAAAAAAABAAAAdHsGAAAAAAAAewYAAAAAAAABAAAAbg", + "AQAAAAAAAAABAAAAfQYAAAAAAAB9BgAAAAAAAAAAAAAAAPC/" + ], + [ + 849, + 1, + "insert", + { + "characters": "ent=" + }, + "BAAAAHsGAAAAAAAAfAYAAAAAAAAAAAAAfAYAAAAAAAB9BgAAAAAAAAAAAAB9BgAAAAAAAH4GAAAAAAAAAAAAAH4GAAAAAAAAfwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAewYAAAAAAAB7BgAAAAAAAAAAAAAAAPC/" + ], + [ + 850, + 8, + "left_delete", + null, + "CAAAAH4GAAAAAAAAfgYAAAAAAAABAAAAPX0GAAAAAAAAfQYAAAAAAAABAAAAdHwGAAAAAAAAfAYAAAAAAAABAAAAbnsGAAAAAAAAewYAAAAAAAABAAAAZXoGAAAAAAAAegYAAAAAAAABAAAAdHkGAAAAAAAAeQYAAAAAAAABAAAAbngGAAAAAAAAeAYAAAAAAAABAAAAb3cGAAAAAAAAdwYAAAAAAAABAAAAYw", + "AQAAAAAAAAABAAAAfwYAAAAAAAB/BgAAAAAAAAAAAAAAAPC/" + ], + [ + 851, + 1, + "insert", + { + "characters": "content=row" + }, + "CwAAAHcGAAAAAAAAeAYAAAAAAAAAAAAAeAYAAAAAAAB5BgAAAAAAAAAAAAB5BgAAAAAAAHoGAAAAAAAAAAAAAHoGAAAAAAAAewYAAAAAAAAAAAAAewYAAAAAAAB8BgAAAAAAAAAAAAB8BgAAAAAAAH0GAAAAAAAAAAAAAH0GAAAAAAAAfgYAAAAAAAAAAAAAfgYAAAAAAAB/BgAAAAAAAAAAAAB/BgAAAAAAAIAGAAAAAAAAAAAAAIAGAAAAAAAAgQYAAAAAAAAAAAAAgQYAAAAAAACCBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdwYAAAAAAAB3BgAAAAAAAAAAAAAAAPC/" + ], + [ + 852, + 1, + "insert", + { + "characters": "." + }, + "AQAAAIIGAAAAAAAAgwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAggYAAAAAAACCBgAAAAAAAAAAAAAAAPC/" + ], + [ + 853, + 1, + "insert", + { + "characters": "content" + }, + "BwAAAIMGAAAAAAAAhAYAAAAAAAAAAAAAhAYAAAAAAACFBgAAAAAAAAAAAACFBgAAAAAAAIYGAAAAAAAAAAAAAIYGAAAAAAAAhwYAAAAAAAAAAAAAhwYAAAAAAACIBgAAAAAAAAAAAACIBgAAAAAAAIkGAAAAAAAAAAAAAIkGAAAAAAAAigYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgwYAAAAAAACDBgAAAAAAAAAAAAAAAPC/" + ], + [ + 861, + 1, + "left_delete", + null, + "AQAAAEAGAAAAAAAAQAYAAAAAAAABAAAAPQ", + "AQAAAAAAAAABAAAAQQYAAAAAAABBBgAAAAAAAAAAAAAAAPC/" + ], + [ + 865, + 1, + "insert", + { + "characters": "\n" + }, + "BAAAAIkGAAAAAAAAigYAAAAAAAAAAAAAigYAAAAAAACOBgAAAAAAAAAAAACKBgAAAAAAAIoGAAAAAAAABAAAACAgICCKBgAAAAAAAJIGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiQYAAAAAAACJBgAAAAAAAAAAAAAAAPC/" + ], + [ + 868, + 1, + "insert", + { + "characters": "\n," + }, + "BQAAAIkGAAAAAAAAigYAAAAAAAAAAAAAigYAAAAAAACOBgAAAAAAAAAAAACKBgAAAAAAAIoGAAAAAAAABAAAACAgICCKBgAAAAAAAJIGAAAAAAAAAAAAAJIGAAAAAAAAkwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiQYAAAAAAACJBgAAAAAAAP///////+9/" + ], + [ + 869, + 1, + "insert", + { + "characters": " " + }, + "AQAAAJMGAAAAAAAAlAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkwYAAAAAAACTBgAAAAAAAAAAAAAAAPC/" + ], + [ + 879, + 1, + "paste", + null, + "AQAAAJQGAAAAAAAAmwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlAYAAAAAAACUBgAAAAAAAAAAAAAAAPC/" + ], + [ + 881, + 1, + "right_delete", + null, + "AQAAAJQGAAAAAAAAlAYAAAAAAAAHAAAAY3JlYXRlZA", + "AQAAAAAAAAABAAAAmwYAAAAAAACUBgAAAAAAAAAAAAAAAPC/" + ], + [ + 882, + 1, + "insert", + { + "characters": "created=" + }, + "CAAAAJQGAAAAAAAAlQYAAAAAAAAAAAAAlQYAAAAAAACWBgAAAAAAAAAAAACWBgAAAAAAAJcGAAAAAAAAAAAAAJcGAAAAAAAAmAYAAAAAAAAAAAAAmAYAAAAAAACZBgAAAAAAAAAAAACZBgAAAAAAAJoGAAAAAAAAAAAAAJoGAAAAAAAAmwYAAAAAAAAAAAAAmwYAAAAAAACcBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlAYAAAAAAACUBgAAAAAAAAAAAAAAAPC/" + ], + [ + 883, + 1, + "insert", + { + "characters": "row.c" + }, + "BQAAAJwGAAAAAAAAnQYAAAAAAAAAAAAAnQYAAAAAAACeBgAAAAAAAAAAAACeBgAAAAAAAJ8GAAAAAAAAAAAAAJ8GAAAAAAAAoAYAAAAAAAAAAAAAoAYAAAAAAAChBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAnAYAAAAAAACcBgAAAAAAAAAAAAAAAPC/" + ], + [ + 884, + 1, + "insert_completion", + { + "completion": "created", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "created" + }, + "AgAAAKAGAAAAAAAAoAYAAAAAAAABAAAAY6AGAAAAAAAApwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAoQYAAAAAAAChBgAAAAAAAAAAAAAAAPC/" + ], + [ + 885, + 1, + "insert", + { + "characters": "," + }, + "AQAAAKcGAAAAAAAAqAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAApwYAAAAAAACnBgAAAAAAAAAAAAAAAPC/" + ], + [ + 886, + 1, + "insert", + { + "characters": " no" + }, + "AwAAAKgGAAAAAAAAqQYAAAAAAAAAAAAAqQYAAAAAAACqBgAAAAAAAAAAAACqBgAAAAAAAKsGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqAYAAAAAAACoBgAAAAAAAAAAAAAAAPC/" + ], + [ + 887, + 1, + "insert", + { + "characters": "tified=o" + }, + "CAAAAKsGAAAAAAAArAYAAAAAAAAAAAAArAYAAAAAAACtBgAAAAAAAAAAAACtBgAAAAAAAK4GAAAAAAAAAAAAAK4GAAAAAAAArwYAAAAAAAAAAAAArwYAAAAAAACwBgAAAAAAAAAAAACwBgAAAAAAALEGAAAAAAAAAAAAALEGAAAAAAAAsgYAAAAAAAAAAAAAsgYAAAAAAACzBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAAPC/" + ], + [ + 888, + 1, + "left_delete", + null, + "AQAAALIGAAAAAAAAsgYAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAAswYAAAAAAACzBgAAAAAAAAAAAAAAAPC/" + ], + [ + 889, + 1, + "insert", + { + "characters": "row.n" + }, + "BQAAALIGAAAAAAAAswYAAAAAAAAAAAAAswYAAAAAAAC0BgAAAAAAAAAAAAC0BgAAAAAAALUGAAAAAAAAAAAAALUGAAAAAAAAtgYAAAAAAAAAAAAAtgYAAAAAAAC3BgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAsgYAAAAAAACyBgAAAAAAAAAAAAAAAPC/" + ], + [ + 890, + 1, + "insert_completion", + { + "completion": "notified", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "notified" + }, + "AgAAALYGAAAAAAAAtgYAAAAAAAABAAAAbrYGAAAAAAAAvgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtwYAAAAAAAC3BgAAAAAAAAAAAAAAAPC/" + ], + [ + 891, + 1, + "insert", + { + "characters": "," + }, + "AQAAAL4GAAAAAAAAvwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvgYAAAAAAAC+BgAAAAAAAAAAAAAAAPC/" + ], + [ + 892, + 1, + "insert", + { + "characters": " pul" + }, + "BAAAAL8GAAAAAAAAwAYAAAAAAAAAAAAAwAYAAAAAAADBBgAAAAAAAAAAAADBBgAAAAAAAMIGAAAAAAAAAAAAAMIGAAAAAAAAwwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvwYAAAAAAAC/BgAAAAAAAAAAAAAAAPC/" + ], + [ + 893, + 1, + "left_delete", + null, + "AQAAAMIGAAAAAAAAwgYAAAAAAAABAAAAbA", + "AQAAAAAAAAABAAAAwwYAAAAAAADDBgAAAAAAAAAAAAAAAPC/" + ], + [ + 894, + 1, + "insert", + { + "characters": "blished=row" + }, + "CwAAAMIGAAAAAAAAwwYAAAAAAAAAAAAAwwYAAAAAAADEBgAAAAAAAAAAAADEBgAAAAAAAMUGAAAAAAAAAAAAAMUGAAAAAAAAxgYAAAAAAAAAAAAAxgYAAAAAAADHBgAAAAAAAAAAAADHBgAAAAAAAMgGAAAAAAAAAAAAAMgGAAAAAAAAyQYAAAAAAAAAAAAAyQYAAAAAAADKBgAAAAAAAAAAAADKBgAAAAAAAMsGAAAAAAAAAAAAAMsGAAAAAAAAzAYAAAAAAAAAAAAAzAYAAAAAAADNBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwgYAAAAAAADCBgAAAAAAAAAAAAAAAPC/" + ], + [ + 895, + 1, + "insert", + { + "characters": ".p" + }, + "AgAAAM0GAAAAAAAAzgYAAAAAAAAAAAAAzgYAAAAAAADPBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzQYAAAAAAADNBgAAAAAAAAAAAAAAAPC/" + ], + [ + 896, + 1, + "insert_completion", + { + "completion": "published", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "published" + }, + "AgAAAM4GAAAAAAAAzgYAAAAAAAABAAAAcM4GAAAAAAAA1wYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzwYAAAAAAADPBgAAAAAAAAAAAAAAAPC/" + ], + [ + 900, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAADiBgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYgpmcm9tIHN0YWNvc3lzLm1vZGVsLmNvbW1lbnQgaW1wb3J0IENvbW1lbnQKCgpkZWYgZmluZF9jb21tZW50X2J5X2lkKGNvbW1lbnRfaWQpOgogICAgcmV0dXJuIGRiKCkuY29tbWVudChjb21tZW50X2lkKQoKCmRlZiBub3RpZnlfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQubm90aWZpZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50Lmluc2VydChhc2RpY3QoY29tbWVudCkpCgoKZGVmIHB1Ymxpc2hfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQucHVibGlzaGVkID0gZGF0ZXRpbWUubm93KCkKICAgIGRiKCkuY29tbWVudC5pbnNlcnQoYXNkaWN0KGNvbW1lbnQpKQoKCmRlZiBkZWxldGVfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGRiKCkoZGIoKS5jb21tZW50LmlkID09IGNvbW1lbnQuaWQpLmRlbGV0ZSgpCgoKZGVmIGZpbmRfbm90X25vdGlmaWVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQubm90aWZpZWQgPT0gTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9ub3RfcHVibGlzaGVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfcHVibGlzaGVkX2NvbW1lbnRzX2J5X3VybCh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKChkYigpLmNvbW1lbnQudXJsID09IHVybCkgJiAoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCAhPSBOb25lKSkKICAgICAgICAuc2VsZWN0KCkKICAgICAgICAuc29ydChsYW1iZGEgcm93OiByb3cucHVibGlzaGVkKQogICAgKQoKCmRlZiBjb3VudF9wdWJsaXNoZWRfY29tbWVudHModXJsKToKICAgIHJldHVybiAoCiAgICAgICAgZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgPT0gTm9uZSkpLmNvdW50KCkKICAgICAgICBpZiB1cmwKICAgICAgICBlbHNlIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCA9PSBOb25lKS5jb3VudCgpCiAgICApCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgcm93ID0gZGIoKS5jb21tZW50Lmluc2VydCgKICAgICAgICB1cmw9dXJsLAogICAgICAgIGF1dGhvcl9uYW1lPWF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPWF1dGhvcl9zaXRlLAogICAgICAgIGF1dGhvcl9ncmF2YXRhcj1hdXRob3JfZ3JhdmF0YXIsCiAgICAgICAgY29udGVudD1tZXNzYWdlLAogICAgICAgIGNyZWF0ZWQ9ZGF0ZXRpbWUubm93KCksCiAgICAgICAgbm90aWZpZWQ9Tm9uZSwKICAgICAgICBwdWJsaXNoZWQ9Tm9uZSwKICAgICkKCiAgICByZXR1cm4gQ29tbWVudChpZD1yb3cuaWQsIHVybD1yb3cudXJsLCBhdXRob3JfbmFtZT1yb3cuYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlPXJvdy5hdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyPXJvdy5hdXRob3JfZ3JhdmF0YXIsIGNvbnRlbnQ9cm93LmNvbnRlbnQKICAgICAgICAsIGNyZWF0ZWQ9cm93LmNyZWF0ZWQsIG5vdGlmaWVkPXJvdy5ub3RpZmllZCwgcHVibGlzaGVkPXJvdy5wdWJsaXNoZWQKICAgICAgICApCgAAAAAAAAAAHwcAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4gYAAAAAAADiBgAAAAAAAAAAAAAAqIVA" + ], + [ + 907, + 1, + "insert", + { + "characters": "[" + }, + "AQAAAF4BAAAAAAAAXwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXgEAAAAAAABeAQAAAAAAAAAAAAAAAPC/" + ], + [ + 911, + 1, + "insert", + { + "characters": "]" + }, + "AQAAAG4BAAAAAAAAbwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbgEAAAAAAABuAQAAAAAAAAAAAAAAAPC/" + ], + [ + 915, + 1, + "insert", + { + "characters": "[" + }, + "AQAAANkBAAAAAAAA2gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2QEAAAAAAADZAQAAAAAAAAAAAAAAAPC/" + ], + [ + 921, + 1, + "insert", + { + "characters": "]" + }, + "AQAAAOkBAAAAAAAA6gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6QEAAAAAAADpAQAAAAAAAAAAAAAAAPC/" + ], + [ + 935, + 1, + "insert", + { + "characters": "bulk-" + }, + "BQAAAFcBAAAAAAAAWAEAAAAAAAAAAAAAWAEAAAAAAABZAQAAAAAAAAAAAABZAQAAAAAAAFoBAAAAAAAAAAAAAFoBAAAAAAAAWwEAAAAAAAAAAAAAWwEAAAAAAABcAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVwEAAAAAAABXAQAAAAAAAAAAAAAAAPC/" + ], + [ + 936, + 1, + "left_delete", + null, + "AQAAAFsBAAAAAAAAWwEAAAAAAAABAAAALQ", + "AQAAAAAAAAABAAAAXAEAAAAAAABcAQAAAAAAAAAAAAAAAPC/" + ], + [ + 937, + 1, + "insert", + { + "characters": "_" + }, + "AQAAAFsBAAAAAAAAXAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWwEAAAAAAABbAQAAAAAAAAAAAAAAAPC/" + ], + [ + 949, + 1, + "paste", + null, + "AgAAANcBAAAAAAAA4gEAAAAAAAAAAAAA4gEAAAAAAADiAQAAAAAAAAYAAABpbnNlcnQ", + "AQAAAAAAAAABAAAA1wEAAAAAAADdAQAAAAAAAAAAAAAAAPC/" + ], + [ + 952, + 1, + "insert", + { + "characters": "\ndb" + }, + "BAAAAHUBAAAAAAAAdgEAAAAAAAAAAAAAdgEAAAAAAAB6AQAAAAAAAAAAAAB6AQAAAAAAAHsBAAAAAAAAAAAAAHsBAAAAAAAAfAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdQEAAAAAAAB1AQAAAAAAAAAAAAAAAPC/" + ], + [ + 953, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAHwBAAAAAAAAfgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfAEAAAAAAAB8AQAAAAAAAAAAAAAAAPC/" + ], + [ + 954, + 1, + "insert", + { + "characters": "à." + }, + "AgAAAH0BAAAAAAAAfgEAAAAAAAAAAAAAfgEAAAAAAAB/AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfQEAAAAAAAB9AQAAAAAAAAAAAAAAAPC/" + ], + [ + 955, + 2, + "left_delete", + null, + "AgAAAH4BAAAAAAAAfgEAAAAAAAABAAAALn0BAAAAAAAAfQEAAAAAAAACAAAAw6A", + "AQAAAAAAAAABAAAAfwEAAAAAAAB/AQAAAAAAAAAAAAAAAPC/" + ], + [ + 957, + 1, + "insert", + { + "characters": ".co" + }, + "AwAAAH4BAAAAAAAAfwEAAAAAAAAAAAAAfwEAAAAAAACAAQAAAAAAAAAAAACAAQAAAAAAAIEBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfgEAAAAAAAB+AQAAAAAAAAAAAAAAAPC/" + ], + [ + 958, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":2,\"sortText\":\"09.9999.commit\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":16,\"character\":11},\"symbolLabel\":\"commit\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"commit\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "commit" + }, + "AgAAAH8BAAAAAAAAfwEAAAAAAAACAAAAY29/AQAAAAAAAIUBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgQEAAAAAAACBAQAAAAAAAAAAAAAAAPC/" + ], + [ + 959, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAIUBAAAAAAAAhwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQEAAAAAAACFAQAAAAAAAAAAAAAAAPC/" + ], + [ + 970, + 1, + "reindent", + null, + "AQAAAAgCAAAAAAAADAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACAIAAAAAAAAIAgAAAAAAAAAAAAAAAAAA" + ], + [ + 971, + 1, + "paste", + null, + "AQAAAAwCAAAAAAAAGQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADAIAAAAAAAAMAgAAAAAAAAAAAAAAAPC/" + ], + [ + 976, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAHECAAAAAAAAcgIAAAAAAAAAAAAAcgIAAAAAAAB2AgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcQIAAAAAAABxAgAAAAAAAAAAAAAAAPC/" + ], + [ + 977, + 1, + "paste", + null, + "AQAAAHYCAAAAAAAAgwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdgIAAAAAAAB2AgAAAAAAAAAAAAAAAPC/" + ], + [ + 982, + 1, + "reindent", + null, + "AQAAAC4GAAAAAAAAMgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALgYAAAAAAAAuBgAAAAAAAAAAAAAAAPC/" + ], + [ + 983, + 1, + "paste", + null, + "AQAAADIGAAAAAAAAPwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMgYAAAAAAAAyBgAAAAAAAAAAAAAAAPC/" + ], + [ + 986, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAABzBwAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYgpmcm9tIHN0YWNvc3lzLm1vZGVsLmNvbW1lbnQgaW1wb3J0IENvbW1lbnQKCgpkZWYgZmluZF9jb21tZW50X2J5X2lkKGNvbW1lbnRfaWQpOgogICAgcmV0dXJuIGRiKCkuY29tbWVudChjb21tZW50X2lkKQoKCmRlZiBub3RpZnlfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQubm90aWZpZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50LmJ1bGtfaW5zZXJ0KFthc2RpY3QoY29tbWVudCldKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBwdWJsaXNoX2NvbW1lbnQoY29tbWVudDogQ29tbWVudCk6CiAgICBjb21tZW50LnB1Ymxpc2hlZCA9IGRhdGV0aW1lLm5vdygpCiAgICBkYigpLmNvbW1lbnQuYnVsa19pbnNlcnQoW2FzZGljdChjb21tZW50KV0pCiAgICBkYigpLmNvbW1pdCgpCgpkZWYgZGVsZXRlX2NvbW1lbnQoY29tbWVudDogQ29tbWVudCk6CiAgICBkYigpKGRiKCkuY29tbWVudC5pZCA9PSBjb21tZW50LmlkKS5kZWxldGUoKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBmaW5kX25vdF9ub3RpZmllZF9jb21tZW50cygpOgogICAgcmV0dXJuIGRiKCkoZGIoKS5jb21tZW50Lm5vdGlmaWVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpOgogICAgcmV0dXJuIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCA9PSBOb25lKS5zZWxlY3QoKQoKCmRlZiBmaW5kX3B1Ymxpc2hlZF9jb21tZW50c19ieV91cmwodXJsKToKICAgIHJldHVybiAoCiAgICAgICAgZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgIT0gTm9uZSkpCiAgICAgICAgLnNlbGVjdCgpCiAgICAgICAgLnNvcnQobGFtYmRhIHJvdzogcm93LnB1Ymxpc2hlZCkKICAgICkKCgpkZWYgY291bnRfcHVibGlzaGVkX2NvbW1lbnRzKHVybCk6CiAgICByZXR1cm4gKAogICAgICAgIGRiKCkoKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmIChkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpKS5jb3VudCgpCiAgICAgICAgaWYgdXJsCiAgICAgICAgZWxzZSBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgPT0gTm9uZSkuY291bnQoKQogICAgKQoKCmRlZiBjcmVhdGVfY29tbWVudCh1cmwsIGF1dGhvcl9uYW1lLCBhdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyLCBtZXNzYWdlKToKICAgIHJvdyA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICApCiAgICBkYigpLmNvbW1pdCgpCiAgICByZXR1cm4gQ29tbWVudCgKICAgICAgICBpZD1yb3cuaWQsCiAgICAgICAgdXJsPXJvdy51cmwsCiAgICAgICAgYXV0aG9yX25hbWU9cm93LmF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPXJvdy5hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9cm93LmF1dGhvcl9ncmF2YXRhciwKICAgICAgICBjb250ZW50PXJvdy5jb250ZW50LAogICAgICAgIGNyZWF0ZWQ9cm93LmNyZWF0ZWQsCiAgICAgICAgbm90aWZpZWQ9cm93Lm5vdGlmaWVkLAogICAgICAgIHB1Ymxpc2hlZD1yb3cucHVibGlzaGVkLAogICAgKQoAAAAAAAAAAHQHAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAPwYAAAAAAAA/BgAAAAAAAAAAAAAAAPC/" + ], + [ + 999, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAEUBAAAAAAAARgEAAAAAAAAAAAAARgEAAAAAAABKAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAARQEAAAAAAABFAQAAAAAAAAAAAAAA0HRA" + ], + [ + 1001, + 1, + "", + null, + "AQAAAEoBAAAAAAAAgQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASgEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1005, + 1, + "insert", + { + "characters": "()" + }, + "AgAAAEwBAAAAAAAATQEAAAAAAAAAAAAATQEAAAAAAABOAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATAEAAAAAAABMAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1008, + 1, + "insert", + { + "characters": ".comment" + }, + "CQAAAFEBAAAAAAAAUgEAAAAAAAAAAAAAUgEAAAAAAABSAQAAAAAAAAEAAABbUgEAAAAAAABTAQAAAAAAAAAAAABTAQAAAAAAAFQBAAAAAAAAAAAAAFQBAAAAAAAAVQEAAAAAAAAAAAAAVQEAAAAAAABWAQAAAAAAAAAAAABWAQAAAAAAAFcBAAAAAAAAAAAAAFcBAAAAAAAAWAEAAAAAAAAAAAAAWAEAAAAAAABZAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUQEAAAAAAABSAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1011, + 1, + "insert", + { + "characters": "()" + }, + "AgAAAFEBAAAAAAAAUgEAAAAAAAAAAAAAUgEAAAAAAABTAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUQEAAAAAAABRAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1016, + 1, + "right_delete", + null, + "AQAAAFsBAAAAAAAAWwEAAAAAAAAKAAAAdGFibGVuYW1lXQ", + "AQAAAAAAAAABAAAAWwEAAAAAAABlAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1019, + 1, + "insert", + { + "characters": "comment." + }, + "CAAAAGMBAAAAAAAAZAEAAAAAAAAAAAAAZAEAAAAAAABlAQAAAAAAAAAAAABlAQAAAAAAAGYBAAAAAAAAAAAAAGYBAAAAAAAAZwEAAAAAAAAAAAAAZwEAAAAAAABoAQAAAAAAAAAAAABoAQAAAAAAAGkBAAAAAAAAAAAAAGkBAAAAAAAAagEAAAAAAAAAAAAAagEAAAAAAABrAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYwEAAAAAAABjAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1024, + 1, + "right_delete", + null, + "AQAAAHYBAAAAAAAAdgEAAAAAAAATAAAAKip7ZmllbGRuYW1lOnZhbHVlfQ", + "AQAAAAAAAAABAAAAdgEAAAAAAACJAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1025, + 1, + "insert", + { + "characters": "notii" + }, + "BQAAAHYBAAAAAAAAdwEAAAAAAAAAAAAAdwEAAAAAAAB4AQAAAAAAAAAAAAB4AQAAAAAAAHkBAAAAAAAAAAAAAHkBAAAAAAAAegEAAAAAAAAAAAAAegEAAAAAAAB7AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdgEAAAAAAAB2AQAAAAAAAAAAAAAAAPC/" + ], + [ + 1026, + 1, + "left_delete", + null, + "AQAAAHoBAAAAAAAAegEAAAAAAAABAAAAaQ", + "AQAAAAAAAAABAAAAewEAAAAAAAB7AQAAAAAAAAAAAAAAAPC/" + ], + [ + 1027, + 1, + "insert", + { + "characters": "fied=" + }, + "BQAAAHoBAAAAAAAAewEAAAAAAAAAAAAAewEAAAAAAAB8AQAAAAAAAAAAAAB8AQAAAAAAAH0BAAAAAAAAAAAAAH0BAAAAAAAAfgEAAAAAAAAAAAAAfgEAAAAAAAB/AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAegEAAAAAAAB6AQAAAAAAAAAAAAAAAPC/" + ], + [ + 1030, + 1, + "cut", + null, + "AQAAADcBAAAAAAAANwEAAAAAAAAOAAAAZGF0ZXRpbWUubm93KCk", + "AQAAAAAAAAABAAAARQEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" + ], + [ + 1033, + 1, + "paste", + null, + "AQAAAHEBAAAAAAAAfwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcQEAAAAAAABxAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1036, + 1, + "right_delete", + null, + "AQAAAIUBAAAAAAAAhQEAAAAAAAArAAAAZGIoKS5jb21tZW50LmJ1bGtfaW5zZXJ0KFthc2RpY3QoY29tbWVudCldKQ", + "AQAAAAAAAAABAAAAsAEAAAAAAACFAQAAAAAAAAAAAAAAAEJA" + ], + [ + 1038, + 1, + "left_delete", + null, + "AQAAAIABAAAAAAAAgAEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAgQEAAAAAAACBAQAAAAAAAAAAAAAAAAAA" + ], + [ + 1041, + 1, + "right_delete", + null, + "AQAAACQBAAAAAAAAJAEAAAAAAAATAAAAY29tbWVudC5ub3RpZmllZCA9IA", + "AQAAAAAAAAABAAAANwEAAAAAAAAkAQAAAAAAAAAAAAAAAEJA" + ], + [ + 1043, + 1, + "left_delete", + null, + "AQAAAB8BAAAAAAAAHwEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAIAEAAAAAAAAgAQAAAAAAAAAAAAAAAAAA" + ], + [ + 1045, + 1, + "trim_trailing_white_space", + null, + "AgAAAGwBAAAAAAAAbAEAAAAAAAAEAAAAICAgIB8BAAAAAAAAHwEAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAHwEAAAAAAAAfAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1053, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAKMBAAAAAAAApAEAAAAAAAAAAAAApAEAAAAAAACoAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAowEAAAAAAACjAQAAAAAAAP///////+9/" + ], + [ + 1054, + 1, + "paste", + null, + "AQAAAKgBAAAAAAAA7AEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqAEAAAAAAACoAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1065, + 1, + "paste", + null, + "AgAAANQBAAAAAAAA3QEAAAAAAAAAAAAA3QEAAAAAAADdAQAAAAAAAAgAAABub3RpZmllZA", + "AQAAAAAAAAABAAAA1AEAAAAAAADcAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1068, + 2, + "left_delete", + null, + "AgAAAO4BAAAAAAAA7gEAAAAAAABWAAAAICAgIGNvbW1lbnQucHVibGlzaGVkID0gZGF0ZXRpbWUubm93KCkKICAgIGRiKCkuY29tbWVudC5idWxrX2luc2VydChbYXNkaWN0KGNvbW1lbnQpXSntAQAAAAAAAO0BAAAAAAAAAQAAAAo", + "AQAAAAAAAAABAAAARAIAAAAAAADuAQAAAAAAAAAAAAAAAPC/" + ], + [ + 1074, + 1, + "insert", + { + "characters": "_" + }, + "AQAAAD4CAAAAAAAAPwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAPgIAAAAAAAA+AgAAAAAAAAAAAAAAAPC/" + ], + [ + 1079, + 1, + "left_delete", + null, + "AQAAAD4CAAAAAAAAPgIAAAAAAAABAAAAXw", + "AQAAAAAAAAABAAAAPwIAAAAAAAA/AgAAAAAAAAAAAAAA4GlA" + ], + [ + 1083, + 1, + "right_delete", + null, + "AQAAALoBAAAAAAAAugEAAAAAAAABAAAAXw", + "AQAAAAAAAAABAAAAugEAAAAAAAC6AQAAAAAAAAAAAAAAAPC/" + ], + [ + 1085, + 1, + "right_delete", + null, + "AQAAADYBAAAAAAAANgEAAAAAAAABAAAAXw", + "AQAAAAAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAwGhA" + ], + [ + 1092, + 1, + "right_delete", + null, + "AQAAACoAAAAAAAAAKgAAAAAAAAAeAAAAZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0", + "AQAAAAAAAAABAAAASAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAA" + ], + [ + 1093, + 1, + "left_delete", + null, + "AQAAACkAAAAAAAAAKQAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAKgAAAAAAAAAqAAAAAAAAAAAAAAAAAPC/" + ], + [ + 1108, + 1, + "toggle_breakpoint", + null, + "AQAAAO0DAAAAAAAAJwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA9AMAAAAAAAD0AwAAAAAAAAAAAAAAAPC/" + ], + [ + 1120, + 1, + "toggle_breakpoint", + null, + "AQAAAO0DAAAAAAAA7QMAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IGYyYzA0YTBkIC8vCg", + "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1127, + 1, + "insert", + { + "characters": "!" + }, + "AgAAADsEAAAAAAAAPAQAAAAAAAAAAAAAPAQAAAAAAAA8BAAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAAOwQAAAAAAAA8BAAAAAAAAAAAAAAAAPC/" + ], + [ + 1131, + 1, + "insert", + { + "characters": "!" + }, + "AgAAAIUEAAAAAAAAhgQAAAAAAAAAAAAAhgQAAAAAAACGBAAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAAhQQAAAAAAACGBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1136, + 1, + "insert", + { + "characters": "def" + }, + "AwAAAJ0EAAAAAAAAngQAAAAAAAAAAAAAngQAAAAAAACfBAAAAAAAAAAAAACfBAAAAAAAAKAEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAnQQAAAAAAACdBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1137, + 1, + "insert", + { + "characters": " " + }, + "AQAAAKAEAAAAAAAAoQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAoAQAAAAAAACgBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1138, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAKEEAAAAAAAAogQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAoQQAAAAAAAChBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1141, + 1, + "insert", + { + "characters": " " + }, + "AQAAAKAEAAAAAAAAoQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAoAQAAAAAAACgBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1142, + 1, + "insert", + { + "characters": "\n\n" + }, + "AgAAAKEEAAAAAAAAogQAAAAAAAAAAAAAogQAAAAAAACjBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAoQQAAAAAAAChBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1143, + 1, + "paste", + null, + "AQAAAKMEAAAAAAAAJgUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAowQAAAAAAACjBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1147, + 1, + "insert", + { + "characters": "find_" + }, + "BQAAAKEEAAAAAAAAogQAAAAAAAAAAAAAogQAAAAAAACjBAAAAAAAAAAAAACjBAAAAAAAAKQEAAAAAAAAAAAAAKQEAAAAAAAApQQAAAAAAAAAAAAApQQAAAAAAACmBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAoQQAAAAAAAChBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1148, + 1, + "insert", + { + "characters": "lastè" + }, + "BQAAAKYEAAAAAAAApwQAAAAAAAAAAAAApwQAAAAAAACoBAAAAAAAAAAAAACoBAAAAAAAAKkEAAAAAAAAAAAAAKkEAAAAAAAAqgQAAAAAAAAAAAAAqgQAAAAAAACrBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAApgQAAAAAAACmBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1149, + 1, + "left_delete", + null, + "AQAAAKoEAAAAAAAAqgQAAAAAAAACAAAAw6g", + "AQAAAAAAAAABAAAAqwQAAAAAAACrBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1150, + 1, + "insert", + { + "characters": "_" + }, + "AQAAAKoEAAAAAAAAqwQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqgQAAAAAAACqBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1151, + 3, + "left_delete", + null, + "AwAAAKoEAAAAAAAAqgQAAAAAAAABAAAAX6kEAAAAAAAAqQQAAAAAAAABAAAAdKgEAAAAAAAAqAQAAAAAAAABAAAAcw", + "AQAAAAAAAAABAAAAqwQAAAAAAACrBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1152, + 1, + "insert", + { + "characters": "test_publ" + }, + "CQAAAKgEAAAAAAAAqQQAAAAAAAAAAAAAqQQAAAAAAACqBAAAAAAAAAAAAACqBAAAAAAAAKsEAAAAAAAAAAAAAKsEAAAAAAAArAQAAAAAAAAAAAAArAQAAAAAAACtBAAAAAAAAAAAAACtBAAAAAAAAK4EAAAAAAAAAAAAAK4EAAAAAAAArwQAAAAAAAAAAAAArwQAAAAAAACwBAAAAAAAAAAAAACwBAAAAAAAALEEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqAQAAAAAAACoBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1153, + 1, + "insert", + { + "characters": "ished_co" + }, + "CAAAALEEAAAAAAAAsgQAAAAAAAAAAAAAsgQAAAAAAACzBAAAAAAAAAAAAACzBAAAAAAAALQEAAAAAAAAAAAAALQEAAAAAAAAtQQAAAAAAAAAAAAAtQQAAAAAAAC2BAAAAAAAAAAAAAC2BAAAAAAAALcEAAAAAAAAAAAAALcEAAAAAAAAuAQAAAAAAAAAAAAAuAQAAAAAAAC5BAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAsQQAAAAAAACxBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1159, + 1, + "insert", + { + "characters": "recent" + }, + "BwAAAKYEAAAAAAAApwQAAAAAAAAAAAAApwQAAAAAAACnBAAAAAAAAAYAAABsYXRlc3SnBAAAAAAAAKgEAAAAAAAAAAAAAKgEAAAAAAAAqQQAAAAAAAAAAAAAqQQAAAAAAACqBAAAAAAAAAAAAACqBAAAAAAAAKsEAAAAAAAAAAAAAKsEAAAAAAAArAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAArAQAAAAAAACmBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1162, + 1, + "insert", + { + "characters": "mments" + }, + "BgAAALkEAAAAAAAAugQAAAAAAAAAAAAAugQAAAAAAAC7BAAAAAAAAAAAAAC7BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvQQAAAAAAAAAAAAAvQQAAAAAAAC+BAAAAAAAAAAAAAC+BAAAAAAAAL8EAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAuQQAAAAAAAC5BAAAAAAAAAAAAAAAAPC/" + ], + [ + 1163, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAL8EAAAAAAAAwQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvwQAAAAAAAC/BAAAAAAAAAAAAAAAAPC/" + ], + [ + 1165, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAMEEAAAAAAAAwgQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwQQAAAAAAADBBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1177, + 1, + "paste", + null, + "AQAAAMMEAAAAAAAAXAUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwwQAAAAAAADDBAAAAAAAAAAAAAAAAPC/" + ], + [ + 1183, + 1, + "right_delete", + null, + "AQAAAN0EAAAAAAAA3QQAAAAAAAAdAAAAKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmICg", + "AQAAAAAAAAABAAAA3QQAAAAAAAD6BAAAAAAAAAAAAAAAAPC/" + ], + [ + 1188, + 1, + "right_delete", + null, + "AQAAAPsEAAAAAAAA+wQAAAAAAAABAAAAKQ", + "AQAAAAAAAAABAAAA+wQAAAAAAAD7BAAAAAAAAAAAAAAAAPC/" + ], + [ + 1195, + 1, + "", + null, + "AQAAAA0FAAAAAAAAGwUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADQUAAAAAAAANBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1198, + 1, + "insert", + { + "characters": "10" + }, + "AwAAABkFAAAAAAAAGgUAAAAAAAAAAAAAGgUAAAAAAAAaBQAAAAAAAAEAAAAyGgUAAAAAAAAbBQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGgUAAAAAAAAZBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1203, + 1, + "", + null, + "AQAAAJcDAAAAAAAAnwMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlwMAAAAAAACXAwAAAAAAAAAAAAAAAPC/" + ], + [ + 1210, + 1, + "paste", + null, + "AQAAAJ8DAAAAAAAArAMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAnwMAAAAAAACfAwAAAAAAAAAAAAAAAPC/" + ], + [ + 1211, + 1, + "insert", + { + "characters": "published" + }, + "CQAAAKwDAAAAAAAArQMAAAAAAAAAAAAArQMAAAAAAACuAwAAAAAAAAAAAACuAwAAAAAAAK8DAAAAAAAAAAAAAK8DAAAAAAAAsAMAAAAAAAAAAAAAsAMAAAAAAACxAwAAAAAAAAAAAACxAwAAAAAAALIDAAAAAAAAAAAAALIDAAAAAAAAswMAAAAAAAAAAAAAswMAAAAAAAC0AwAAAAAAAAAAAAC0AwAAAAAAALUDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAArAMAAAAAAACsAwAAAAAAAAAAAAAAAPC/" + ], + [ + 1215, + 1, + "right_delete", + null, + "AQAAAL8DAAAAAAAAvwMAAAAAAAAgAAAALnNvcnQobGFtYmRhIHJvdzogcm93LnB1Ymxpc2hlZCk", + "AQAAAAAAAAABAAAAvwMAAAAAAADfAwAAAAAAAP///////+9/" + ], + [ + 1217, + 1, + "left_delete", + null, + "AQAAALYDAAAAAAAAtgMAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAtwMAAAAAAAC3AwAAAAAAAAAAAAAAAAAA" + ], + [ + 1219, + 1, + "trim_trailing_white_space", + null, + "AgAAAM4FAAAAAAAAzgUAAAAAAAABAAAAILYDAAAAAAAAtgMAAAAAAAAIAAAAICAgICAgICA", + "AQAAAAAAAAABAAAAtgMAAAAAAAC2AwAAAAAAAAAAAAAAAPC/" + ], + [ + 1225, + 1, + "paste", + null, + "AQAAAAIFAAAAAAAAIAUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAAgUAAAAAAAACBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1226, + 1, + "insert", + { + "characters": "," + }, + "AQAAACAFAAAAAAAAIQUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAIAUAAAAAAAAgBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1227, + 1, + "insert", + { + "characters": " " + }, + "AQAAACEFAAAAAAAAIgUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAIQUAAAAAAAAhBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1230, + 1, + "insert", + { + "characters": "~" + }, + "AQAAAAoFAAAAAAAACwUAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACgUAAAAAAAAKBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1234, + 1, + "right_delete", + null, + "AQAAADwFAAAAAAAAPAUAAAAAAAAgAAAALnNvcnQobGFtYmRhIHJvdzogcm93LnB1Ymxpc2hlZCk", + "AQAAAAAAAAABAAAAPAUAAAAAAABcBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1236, + 1, + "left_delete", + null, + "AQAAADMFAAAAAAAAMwUAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAANAUAAAAAAAA0BQAAAAAAAAAAAAAAAAAA" + ], + [ + 1241, + 1, + "left_delete", + null, + "AQAAAEIFAAAAAAAAQgUAAAAAAACEAAAACiAgICAgICAgICAgIENvbW1lbnQuc2VsZWN0KCkKICAgICAgICAgICAgLndoZXJlKENvbW1lbnQucHVibGlzaGVkKQogICAgICAgICAgICAub3JkZXJfYnkoLUNvbW1lbnQucHVibGlzaGVkKQogICAgICAgICAgICAubGltaXQoMTAp", + "AQAAAAAAAAABAAAAxgUAAAAAAABCBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1243, + 1, + "left_delete", + null, + "AQAAAEIFAAAAAAAAQgUAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAQwUAAAAAAABDBQAAAAAAAAAAAAAAAAAA" + ], + [ + 1245, + 1, + "trim_trailing_white_space", + null, + "AQAAADMFAAAAAAAAMwUAAAAAAAAIAAAAICAgICAgICA", + "AQAAAAAAAAABAAAAQgUAAAAAAABCBQAAAAAAAAAAAAAAAPC/" + ], + [ + 1251, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAADWBwAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRiCmZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKCmRlZiBmaW5kX2NvbW1lbnRfYnlfaWQoY29tbWVudF9pZCk6CiAgICByZXR1cm4gZGIoKS5jb21tZW50KGNvbW1lbnRfaWQpCgoKZGVmIG5vdGlmeV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgZGIoKShkYigpLmNvbW1lbnQuaWQgPT0gY29tbWVudC5pZCkudXBkYXRlKG5vdGlmaWVkPWRhdGV0aW1lLm5vdygpKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBwdWJsaXNoX2NvbW1lbnQoY29tbWVudDogQ29tbWVudCk6CiAgICBkYigpKGRiKCkuY29tbWVudC5pZCA9PSBjb21tZW50LmlkKS51cGRhdGUocHVibGlzaGVkPWRhdGV0aW1lLm5vdygpKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBkZWxldGVfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGRiKCkoZGIoKS5jb21tZW50LmlkID09IGNvbW1lbnQuaWQpLmRlbGV0ZSgpCiAgICBkYigpLmNvbW1pdCgpCgoKZGVmIGZpbmRfbm90X25vdGlmaWVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQubm90aWZpZWQgPT0gTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9ub3RfcHVibGlzaGVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfcHVibGlzaGVkX2NvbW1lbnRzX2J5X3VybCh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKChkYigpLmNvbW1lbnQudXJsID09IHVybCkgJiAoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCAhPSBOb25lKSkKICAgICAgICAuc2VsZWN0KG9yZGVyYnk9ZGIoKS5jb21tZW50LnB1Ymxpc2hlZCkKICAgICkKCgpkZWYgY291bnRfcHVibGlzaGVkX2NvbW1lbnRzKHVybCk6CiAgICByZXR1cm4gKAogICAgICAgIGRiKCkoKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmIChkYigpLmNvbW1lbnQucHVibGlzaGVkICE9IE5vbmUpKS5jb3VudCgpCiAgICAgICAgaWYgdXJsCiAgICAgICAgZWxzZSBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgIT0gTm9uZSkuY291bnQoKQogICAgKQoKZGVmIGZpbmRfcmVjZW50X3B1Ymxpc2hlZF9jb21tZW50cygpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgIT0gTm9uZSkKICAgICAgICAuc2VsZWN0KG9yZGVyYnk9fmRiKCkuY29tbWVudC5wdWJsaXNoZWQsIGxpbWl0Ynk9KDAsIDEwKSkKICAgICkKCmRlZiBjcmVhdGVfY29tbWVudCh1cmwsIGF1dGhvcl9uYW1lLCBhdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyLCBtZXNzYWdlKToKICAgIHJvdyA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICApCiAgICBkYigpLmNvbW1pdCgpCiAgICByZXR1cm4gQ29tbWVudCgKICAgICAgICBpZD1yb3cuaWQsCiAgICAgICAgdXJsPXJvdy51cmwsCiAgICAgICAgYXV0aG9yX25hbWU9cm93LmF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPXJvdy5hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9cm93LmF1dGhvcl9ncmF2YXRhciwKICAgICAgICBjb250ZW50PXJvdy5jb250ZW50LAogICAgICAgIGNyZWF0ZWQ9cm93LmNyZWF0ZWQsCiAgICAgICAgbm90aWZpZWQ9cm93Lm5vdGlmaWVkLAogICAgICAgIHB1Ymxpc2hlZD1yb3cucHVibGlzaGVkLAogICAgKQoAAAAAAAAAAMIHAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlgQAAAAAAAC0BAAAAAAAAAAAAAAAAPC/" + ], + [ + 1254, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAACkAAAAAAAAAKgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKQAAAAAAAAApAAAAAAAAAAAAAAAAAPC/" + ], + [ + 1255, + 1, + "paste", + null, + "AQAAACoAAAAAAAAATwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKgAAAAAAAAAqAAAAAAAAAAAAAAAAAPC/" + ], + [ + 1256, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAE8AAAAAAAAAUAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + ], + [ + 1260, + 1, + "", + null, + "AgAAADwAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAABQAAAAAAAAABMAAABjb25zaWRlci11c2luZy13aXRo", + "AQAAAAAAAAABAAAAPAAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "stacosys/service/rssfeed.py", + "settings": + { + "buffer_size": 1754, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 15, + 1, + "insert", + { + "characters": "\nfrom" + }, + "BQAAAGsAAAAAAAAAbAAAAAAAAAAAAAAAbAAAAAAAAABtAAAAAAAAAAAAAABtAAAAAAAAAG4AAAAAAAAAAAAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABwAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" + ], + [ + 16, + 1, + "insert", + { + "characters": " stacs" + }, + "BgAAAHAAAAAAAAAAcQAAAAAAAAAAAAAAcQAAAAAAAAByAAAAAAAAAAAAAAByAAAAAAAAAHMAAAAAAAAAAAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB1AAAAAAAAAAAAAAB1AAAAAAAAAHYAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcAAAAAAAAABwAAAAAAAAAAAAAAAAAPC/" + ], + [ + 17, + 1, + "left_delete", + null, + "AQAAAHUAAAAAAAAAdQAAAAAAAAABAAAAcw", + "AQAAAAAAAAABAAAAdgAAAAAAAAB2AAAAAAAAAAAAAAAAAPC/" + ], + [ + 18, + 1, + "insert", + { + "characters": "osys.db" + }, + "BwAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAAAB6AAAAAAAAAAAAAAB6AAAAAAAAAHsAAAAAAAAAAAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdQAAAAAAAAB1AAAAAAAAAAAAAAAAAPC/" + ], + [ + 19, + 1, + "insert", + { + "characters": "." + }, + "AQAAAHwAAAAAAAAAfQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAAPC/" + ], + [ + 20, + 1, + "left_delete", + null, + "AQAAAHwAAAAAAAAAfAAAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAfQAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" + ], + [ + 21, + 1, + "insert", + { + "characters": " import" + }, + "BwAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAAPC/" + ], + [ + 22, + 1, + "insert", + { + "characters": " dai" + }, + "BAAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAAAAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" + ], + [ + 23, + 1, + "left_delete", + null, + "AQAAAIYAAAAAAAAAhgAAAAAAAAABAAAAaQ", + "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" + ], + [ + 24, + 1, + "insert", + { + "characters": "o" + }, + "AQAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" + ], + [ + 35, + 1, + "paste", + null, + "AQAAAOQCAAAAAAAAAgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5AIAAAAAAADkAgAAAAAAAAAAAAAAAPC/" + ], + [ + 39, + 1, + "insert", + { + "characters": "dao/" + }, + "BAAAAOQCAAAAAAAA5QIAAAAAAAAAAAAA5QIAAAAAAADmAgAAAAAAAAAAAADmAgAAAAAAAOcCAAAAAAAAAAAAAOcCAAAAAAAA6AIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5AIAAAAAAADkAgAAAAAAAAAAAAAAAPC/" + ], + [ + 40, + 1, + "left_delete", + null, + "AQAAAOcCAAAAAAAA5wIAAAAAAAABAAAALw", + "AQAAAAAAAAABAAAA6AIAAAAAAADoAgAAAAAAAAAAAAAAAPC/" + ], + [ + 41, + 1, + "insert", + { + "characters": "." + }, + "AQAAAOcCAAAAAAAA6AIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5wIAAAAAAADnAgAAAAAAAAAAAAAAAPC/" + ], + [ + 44, + 1, + "insert", + { + "characters": "):" + }, + "AgAAAAcDAAAAAAAACAMAAAAAAAAAAAAACAMAAAAAAAAJAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAABwMAAAAAAAAHAwAAAAAAAAAAAAAAAPC/" + ], + [ + 49, + 1, + "right_delete", + null, + "AQAAAAoDAAAAAAAACgMAAAAAAACNAAAAICAgICAgICAgICAgQ29tbWVudC5zZWxlY3QoKQogICAgICAgICAgICAud2hlcmUoQ29tbWVudC5wdWJsaXNoZWQpCiAgICAgICAgICAgIC5vcmRlcl9ieSgtQ29tbWVudC5wdWJsaXNoZWQpCiAgICAgICAgICAgIC5saW1pdCgxMCkKICAgICAgICAp", + "AQAAAAAAAAABAAAACgMAAAAAAACXAwAAAAAAAAAAAAAAAPC/" + ], + [ + 50, + 2, + "left_delete", + null, + "AgAAAAkDAAAAAAAACQMAAAAAAAABAAAACggDAAAAAAAACAMAAAAAAAABAAAAOg", + "AQAAAAAAAAABAAAACgMAAAAAAAAKAwAAAAAAAAAAAAAAAPC/" + ], + [ + 58, + 1, + "right_delete", + null, + "AQAAAIgAAAAAAAAAiAAAAAAAAAAqAAAAZnJvbSBzdGFjb3N5cy5tb2RlbC5jb21tZW50IGltcG9ydCBDb21tZW50", + "AQAAAAAAAAABAAAAsgAAAAAAAACIAAAAAAAAAAAAAAAAAAAA" + ], + [ + 59, + 1, + "left_delete", + null, + "AQAAAIcAAAAAAAAAhwAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "stacosys/model/comment.py", + "settings": + { + "buffer_size": 421, + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 12, + 1, + "insert", + { + "characters": "#" + }, + "AQAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAAAA" + ], + [ + 17, + 1, + "left_delete", + null, + "AQAAAJ8AAAAAAAAAnwAAAAAAAAAJAAAAQmFzZU1vZGVs", + "AQAAAAAAAAABAAAAnwAAAAAAAACoAAAAAAAAAAAAAAAAAPC/" + ], + [ + 23, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAM8BAAAAAAAA0AEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzwEAAAAAAADPAQAAAAAAAAAAAAAAAPC/" + ], + [ + 24, + 1, + "paste", + null, + "AQAAANABAAAAAAAAoQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0AEAAAAAAADQAQAAAAAAAAAAAAAAAPC/" + ], + [ + 31, + 1, + "paste", + null, + "AQAAAJAAAAAAAAAAmgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAAAA" + ], + [ + 36, + 1, + "paste", + null, + "AgAAACsAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABqAAAAAAAAAGQAAABmcm9tIHBlZXdlZSBpbXBvcnQgQ2hhckZpZWxkLCBEYXRlVGltZUZpZWxkLCBUZXh0RmllbGQKCiNmcm9tIHN0YWNvc3lzLmRiLmRhdGFiYXNlIGltcG9ydCBCYXNlTW9kZWwK", + "AQAAAAAAAAABAAAAKwAAAAAAAACPAAAAAAAAAAAAAAAAAAAA" + ], + [ + 37, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAGoAAAAAAAAAawAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAagAAAAAAAABqAAAAAAAAAAAAAAAAAPC/" + ], + [ + 41, + 1, + "right_delete", + null, + "AQAAAIUAAAAAAAAAhQAAAAAAAAABAAAAKQ", + "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 43, + 1, + "right_delete", + null, + "AQAAAIQAAAAAAAAAhAAAAAAAAAABAAAAKA", + "AQAAAAAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAAPC/" + ], + [ + 47, + 1, + "insert", + { + "characters": "str" + }, + "BAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAAkQAAAAAAAACRAAAAAAAAAAsAAABDaGFyRmllbGQoKZEAAAAAAAAAkgAAAAAAAAAAAAAAkgAAAAAAAACTAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkAAAAAAAAACbAAAAAAAAAP///////+9/" + ], + [ + 54, + 1, + "insert", + { + "characters": "datetime" + }, + "CQAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACjAAAAAAAAAA8AAABEYXRlVGltZUZpZWxkKCmjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAACmAAAAAAAAAAAAAACmAAAAAAAAAKcAAAAAAAAAAAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAAqAAAAAAAAACpAAAAAAAAAAAAAACpAAAAAAAAAKoAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAogAAAAAAAACxAAAAAAAAAP///////+9/" + ], + [ + 62, + 1, + "paste", + null, + "AgAAALoAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADCAAAAAAAAACYAAABEYXRlVGltZUZpZWxkKG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQ", + "AQAAAAAAAAABAAAAugAAAAAAAADgAAAAAAAAAP///////+9/" + ], + [ + 66, + 1, + "paste", + null, + "AgAAANMAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADbAAAAAAAAACYAAABEYXRlVGltZUZpZWxkKG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQ", + "AQAAAAAAAAABAAAA0wAAAAAAAAD5AAAAAAAAAP///////+9/" + ], + [ + 70, + 1, + "insert", + { + "characters": "str" + }, + "BAAAAO4AAAAAAAAA7wAAAAAAAAAAAAAA7wAAAAAAAADvAAAAAAAAAAsAAABDaGFyRmllbGQoKe8AAAAAAAAA8AAAAAAAAAAAAAAA8AAAAAAAAADxAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA7gAAAAAAAAD5AAAAAAAAAP///////+9/" + ], + [ + 74, + 1, + "insert", + { + "characters": ":" + }, + "AgAAAKAAAAAAAAAAoQAAAAAAAAAAAAAAoQAAAAAAAAChAAAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAAoAAAAAAAAAChAAAAAAAAAAAAAAAAAPC/" ], [ 78, 1, + "insert", + { + "characters": ":" + }, + "AgAAAI4AAAAAAAAAjwAAAAAAAAAAAAAAjwAAAAAAAACPAAAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAAjwAAAAAAAACOAAAAAAAAAAAAAAAAAPC/" + ], + [ + 82, + 1, + "insert", + { + "characters": ":" + }, + "AgAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC5AAAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAAuAAAAAAAAAC5AAAAAAAAAAAAAAAAAPC/" + ], + [ + 85, + 1, + "insert", + { + "characters": ":" + }, + "AgAAANEAAAAAAAAA0gAAAAAAAAAAAAAA0gAAAAAAAADSAAAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAA0QAAAAAAAADSAAAAAAAAAAAAAAAAAPC/" + ], + [ + 89, + 1, + "insert", + { + "characters": ":" + }, + "AgAAAOwAAAAAAAAA7QAAAAAAAAAAAAAA7QAAAAAAAADtAAAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAA7AAAAAAAAADtAAAAAAAAAAAAAAAAAPC/" + ], + [ + 92, + 1, + "insert", + { + "characters": ":" + }, + "AgAAAAIBAAAAAAAAAwEAAAAAAAAAAAAAAwEAAAAAAAADAQAAAAAAAAEAAAA9", + "AQAAAAAAAAABAAAAAwEAAAAAAAACAQAAAAAAAAAAAAAAAPC/" + ], + [ + 95, + 1, + "insert", + { + "characters": "str" + }, + "BAAAAAQBAAAAAAAABQEAAAAAAAAAAAAABQEAAAAAAAAFAQAAAAAAABUAAABDaGFyRmllbGQoZGVmYXVsdD0iIikFAQAAAAAAAAYBAAAAAAAAAAAAAAYBAAAAAAAABwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAABAEAAAAAAAAZAQAAAAAAAP///////+9/" + ], + [ + 99, + 1, + "insert", + { + "characters": ":" + }, + "AgAAABwBAAAAAAAAHQEAAAAAAAAAAAAAHQEAAAAAAAAdAQAAAAAAABcAAAA9IENoYXJGaWVsZChkZWZhdWx0PSIiKQ", + "AQAAAAAAAAABAAAAHAEAAAAAAAAzAQAAAAAAAP///////+9/" + ], + [ + 100, + 1, + "insert", + { + "characters": " str" + }, + "BAAAAB0BAAAAAAAAHgEAAAAAAAAAAAAAHgEAAAAAAAAfAQAAAAAAAAAAAAAfAQAAAAAAACABAAAAAAAAAAAAACABAAAAAAAAIQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAHQEAAAAAAAAdAQAAAAAAAAAAAAAAAPC/" + ], + [ + 105, + 1, + "insert", + { + "characters": ":" + }, + "AgAAAC4BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvAQAAAAAAAA0AAAA9IFRleHRGaWVsZCgp", + "AQAAAAAAAAABAAAALgEAAAAAAAA7AQAAAAAAAP///////+9/" + ], + [ + 106, + 1, + "insert", + { + "characters": " str" + }, + "BAAAAC8BAAAAAAAAMAEAAAAAAAAAAAAAMAEAAAAAAAAxAQAAAAAAAAAAAAAxAQAAAAAAADIBAAAAAAAAAAAAADIBAAAAAAAAMwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALwEAAAAAAAAvAQAAAAAAAAAAAAAAAPC/" + ], + [ + 112, + 1, "right_delete", null, - "AQAAAC8BAAAAAAAALwEAAAAAAAACAAAALjU", - "AQAAAAAAAAABAAAALwEAAAAAAAAxAQAAAAAAAAAAAAAAAPC/" + "AQAAADUBAAAAAAAANQEAAAAAAADRAAAAQGRhdGFjbGFzcwpjbGFzcyBFbWFpbDoKICAgIGlkOiBpbnQKICAgIGVuY29kaW5nOiBzdHIKICAgIGRhdGU6IGRhdGV0aW1lCiAgICBmcm9tX2FkZHI6IHN0cgogICAgdG9fYWRkcjogc3RyCiAgICBzdWJqZWN0OiBzdHIKICAgIHBhcnRzOiBMaXN0W1BhcnRdCiAgICBhdHRhY2htZW50czogTGlzdFtBdHRhY2htZW50XQogICAgcGxhaW5fdGV4dF9jb250ZW50OiBzdHI", + "AQAAAAAAAAABAAAANQEAAAAAAAAGAgAAAAAAAAAAAAAAAAAA" + ], + [ + 113, + 1, + "left_delete", + null, + "AQAAADQBAAAAAAAANAEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAAPC/" + ], + [ + 120, + 1, + "insert", + { + "characters": "," + }, + "AQAAAEwAAAAAAAAATQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATAAAAAAAAABMAAAAAAAAAAAAAAAAAPC/" + ], + [ + 121, + 1, + "insert", + { + "characters": " asd" + }, + "BAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 122, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":3,\"sortText\":\"09.9999.asdict\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/model/comment.py\",\"position\":{\"line\":3,\"character\":38},\"symbolLabel\":\"asdict\",\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"asdict\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "asdict" + }, + "AgAAAE4AAAAAAAAATgAAAAAAAAADAAAAYXNkTgAAAAAAAABUAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUQAAAAAAAABRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 128, + 2, + "left_delete", + null, + "AgAAAE0AAAAAAAAATQAAAAAAAAAHAAAAIGFzZGljdEwAAAAAAAAATAAAAAAAAAABAAAALA", + "AQAAAAAAAAABAAAATQAAAAAAAABUAAAAAAAAAAAAAAAAAPC/" + ], + [ + 136, + 1, + "insert", + { + "characters": "\nid:" + }, + "BQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACKAAAAAAAAAAAAAACKAAAAAAAAAIsAAAAAAAAAAAAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAjAAAAAAAAACNAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 137, + 1, + "insert", + { + "characters": " int" + }, + "BAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 138, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":7,\"sortText\":\"09.9999.int\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/model/comment.py\",\"position\":{\"line\":8,\"character\":11},\"symbolLabel\":\"int\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"int\"}}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "int" + }, + "AgAAAI4AAAAAAAAAjgAAAAAAAAADAAAAaW50jgAAAAAAAACRAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 147, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAABAAQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwpmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQoKQGRhdGFjbGFzcwpjbGFzcyBDb21tZW50OgogICAgaWQ6IGludAogICAgdXJsIDogc3RyCiAgICBjcmVhdGVkIDogZGF0ZXRpbWUKICAgIG5vdGlmaWVkIDogZGF0ZXRpbWUKICAgIHB1Ymxpc2hlZCA6IGRhdGV0aW1lCiAgICBhdXRob3JfbmFtZSA6IHN0cgogICAgYXV0aG9yX3NpdGUgOiBzdHIKICAgIGF1dGhvcl9ncmF2YXRhciA6IHN0cgogICAgY29udGVudCA6IHN0cgoAAAAAAAAAADkBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQAEAAAAAAABAAQAAAAAAAAAAAAAAAPC/" + ], + [ + 151, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACUAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkgAAAAAAAACSAAAAAAAAAAAAAAAAAPC/" + ], + [ + 152, + 1, + "insert", + { + "characters": " 0" + }, + "AgAAAJQAAAAAAAAAlQAAAAAAAAAAAAAAlQAAAAAAAACWAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlAAAAAAAAACUAAAAAAAAAAAAAAAAAPC/" + ], + [ + 155, + 1, + "cut", + null, + "AQAAAIsAAAAAAAAAiwAAAAAAAAALAAAAaWQ6IGludCA9IDA", + "AQAAAAAAAAABAAAAlgAAAAAAAACLAAAAAAAAAAAAAAAAAEJA" + ], + [ + 157, + 1, + "left_delete", + null, + "AQAAAIYAAAAAAAAAhgAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAAAA" + ], + [ + 160, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAADABAAAAAAAAMQEAAAAAAAAAAAAAMQEAAAAAAAA1AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMAEAAAAAAAAwAQAAAAAAAAAAAAAAAPC/" + ], + [ + 161, + 1, + "paste", + null, + "AQAAADUBAAAAAAAAQAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAAPC/" + ], + [ + 163, + 1, + "cut", + null, + "AQAAADUBAAAAAAAANQEAAAAAAAALAAAAaWQ6IGludCA9IDA", + "AQAAAAAAAAABAAAAQAEAAAAAAAA1AQAAAAAAAAAAAAAAAEJA" + ], + [ + 165, + 1, + "left_delete", + null, + "AQAAADABAAAAAAAAMAEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAMQEAAAAAAAAxAQAAAAAAAAAAAAAAAAAA" + ], + [ + 167, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAIgAAAAAAAAAiQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAGJA" + ], + [ + 168, + 1, + "paste", + null, + "AQAAAIkAAAAAAAAAlAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiQAAAAAAAACJAAAAAAAAAAAAAAAAAPC/" + ], + [ + 170, + 1, + "insert", + { + "characters": "\t" + }, + "AQAAAIkAAAAAAAAAjQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiQAAAAAAAACJAAAAAAAAAAAAAAAAAAAA" + ], + [ + 173, + 2, + "left_delete", + null, + "AgAAAIcAAAAAAAAAhwAAAAAAAAABAAAAIIYAAAAAAAAAhgAAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" + ], + [ + 175, + 1, + "insert", + { + "characters": " " + }, + "AgAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAApQAAAAAAAAClAAAAAAAAAAAAAAAAgF9A" + ], + [ + 176, + 1, + "left_delete", + null, + "AQAAAKYAAAAAAAAApgAAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAApwAAAAAAAACnAAAAAAAAAAAAAAAAAPC/" + ], + [ + 177, + 1, + "insert", + { + "characters": "=" + }, + "AQAAAKYAAAAAAAAApwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAApgAAAAAAAACmAAAAAAAAAAAAAAAAAPC/" + ], + [ + 178, + 1, + "insert", + { + "characters": " " + }, + "AQAAAKcAAAAAAAAAqAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAApwAAAAAAAACnAAAAAAAAAAAAAAAAAPC/" + ], + [ + 179, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAKgAAAAAAAAAqgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqAAAAAAAAACoAAAAAAAAAAAAAAAAAPC/" + ], + [ + 183, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAMAAAAAAAAAAwQAAAAAAAAAAAAAAwQAAAAAAAADCAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAPC/" + ], + [ + 184, + 1, + "insert", + { + "characters": " None" + }, + "BQAAAMIAAAAAAAAAwwAAAAAAAAAAAAAAwwAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMUAAAAAAAAAAAAAAMUAAAAAAAAAxgAAAAAAAAAAAAAAxgAAAAAAAADHAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwgAAAAAAAADCAAAAAAAAAAAAAAAAAPC/" + ], + [ + 186, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAN4AAAAAAAAA3wAAAAAAAAAAAAAA3wAAAAAAAADgAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3gAAAAAAAADeAAAAAAAAAAAAAAAAgG9A" + ], + [ + 187, + 1, + "insert", + { + "characters": " None" + }, + "BQAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADiAAAAAAAAAAAAAADiAAAAAAAAAOMAAAAAAAAAAAAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" + ], + [ + 189, + 1, + "trim_trailing_white_space", + null, + "AgAAAFEBAAAAAAAAUQEAAAAAAAAEAAAAICAgIJYAAAAAAAAAlgAAAAAAAAACAAAAICA", + "AQAAAAAAAAABAAAA5QAAAAAAAADlAAAAAAAAAAAAAAAAAPC/" + ], + [ + 201, + 1, + "insert", + { + "characters": "datetime." + }, + "CgAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADCAAAAAAAAAAQAAABOb25lwgAAAAAAAADDAAAAAAAAAAAAAADDAAAAAAAAAMQAAAAAAAAAAAAAAMQAAAAAAAAAxQAAAAAAAAAAAAAAxQAAAAAAAADGAAAAAAAAAAAAAADGAAAAAAAAAMcAAAAAAAAAAAAAAMcAAAAAAAAAyAAAAAAAAAAAAAAAyAAAAAAAAADJAAAAAAAAAAAAAADJAAAAAAAAAMoAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwQAAAAAAAADFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 202, + 1, + "insert", + { + "characters": "de" + }, + "AgAAAMoAAAAAAAAAywAAAAAAAAAAAAAAywAAAAAAAADMAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" + ], + [ + 210, + 1, + "insert", + { + "characters": "ow" + }, + "AwAAAMoAAAAAAAAAywAAAAAAAAAAAAAAywAAAAAAAADLAAAAAAAAAAIAAABkZcsAAAAAAAAAzAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAygAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" + ], + [ + 211, + 2, + "left_delete", + null, + "AgAAAMsAAAAAAAAAywAAAAAAAAABAAAAd8oAAAAAAAAAygAAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" + ], + [ + 212, + 1, + "insert", + { + "characters": "now" + }, + "AwAAAMoAAAAAAAAAywAAAAAAAAAAAAAAywAAAAAAAADMAAAAAAAAAAAAAADMAAAAAAAAAM0AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" + ], + [ + 213, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAM0AAAAAAAAAzwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzQAAAAAAAADNAAAAAAAAAAAAAAAAAPC/" + ], + [ + 221, + 1, + "paste", + null, + "AgAAAOkAAAAAAAAA9wAAAAAAAAAAAAAA9wAAAAAAAAD3AAAAAAAAAAQAAABOb25l", + "AQAAAAAAAAABAAAA7QAAAAAAAADpAAAAAAAAAAAAAAAAAPC/" + ], + [ + 223, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADwEAAAAAAAAPAQAAAAAAAAAAAAAA8HVA" + ], + [ + 224, + 1, + "insert", + { + "characters": " " + }, + "AQAAABEBAAAAAAAAEgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" + ], + [ + 225, + 1, + "paste", + null, + "AQAAABIBAAAAAAAAIAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" + ], + [ + 227, + 1, + "insert", + { + "characters": " =" + }, + "AgAAADUBAAAAAAAANgEAAAAAAAAAAAAANgEAAAAAAAA3AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAgHZA" + ], + [ + 228, + 1, + "insert", + { + "characters": " " + }, + "AQAAADcBAAAAAAAAOAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" + ], + [ + 229, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAADgBAAAAAAAAOgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" + ], + [ + 231, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAE8BAAAAAAAAUAEAAAAAAAAAAAAAUAEAAAAAAABRAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATwEAAAAAAABPAQAAAAAAAAAAAAAAAGtA" + ], + [ + 232, + 1, + "insert", + { + "characters": " " + }, + "AQAAAFEBAAAAAAAAUgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUQEAAAAAAABRAQAAAAAAAAAAAAAAAPC/" + ], + [ + 233, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAFIBAAAAAAAAVAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUgEAAAAAAABSAQAAAAAAAAAAAAAAAPC/" + ], + [ + 237, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAG0BAAAAAAAAbgEAAAAAAAAAAAAAbgEAAAAAAABvAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbQEAAAAAAABtAQAAAAAAAAAAAAAAAPC/" + ], + [ + 238, + 1, + "insert", + { + "characters": " " + }, + "AQAAAG8BAAAAAAAAcAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbwEAAAAAAABvAQAAAAAAAAAAAAAAAPC/" + ], + [ + 239, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAHABAAAAAAAAcgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcAEAAAAAAABwAQAAAAAAAAAAAAAAAPC/" + ], + [ + 241, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAIMBAAAAAAAAhAEAAAAAAAAAAAAAhAEAAAAAAACFAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgwEAAAAAAACDAQAAAAAAAAAAAAAAgG9A" + ], + [ + 242, + 1, + "insert", + { + "characters": " " + }, + "AQAAAIUBAAAAAAAAhgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQEAAAAAAACFAQAAAAAAAAAAAAAAAPC/" + ], + [ + 243, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAIYBAAAAAAAAiAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhgEAAAAAAACGAQAAAAAAAAAAAAAAAPC/" + ], + [ + 249, + 1, + "insert", + { + "characters": "None" + }, + "BQAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADCAAAAAAAAAA4AAABkYXRldGltZS5ub3coKcIAAAAAAAAAwwAAAAAAAAAAAAAAwwAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMUAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwQAAAAAAAADPAAAAAAAAAAAAAAAAAPC/" + ], + [ + 258, + 1, + "insert", + { + "characters": "Optional(" + }, + "CQAAALYAAAAAAAAAtwAAAAAAAAAAAAAAtwAAAAAAAAC4AAAAAAAAAAAAAAC4AAAAAAAAALkAAAAAAAAAAAAAALkAAAAAAAAAugAAAAAAAAAAAAAAugAAAAAAAAC7AAAAAAAAAAAAAAC7AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAvQAAAAAAAAAAAAAAvQAAAAAAAAC+AAAAAAAAAAAAAAC+AAAAAAAAAL8AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtgAAAAAAAAC2AAAAAAAAAAAAAAAAAPC/" + ], + [ + 259, + 1, + "left_delete", + null, + "AQAAAL4AAAAAAAAAvgAAAAAAAAABAAAAKA", + "AQAAAAAAAAABAAAAvwAAAAAAAAC/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 260, + 1, + "insert", + { + "characters": "[" + }, + "AQAAAL4AAAAAAAAAvwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvgAAAAAAAAC+AAAAAAAAAAAAAAAAAPC/" + ], + [ + 262, + 1, + "insert", + { + "characters": "]" + }, + "AQAAAMcAAAAAAAAAyAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxwAAAAAAAADHAAAAAAAAAAAAAAAAAPC/" + ], + [ + 267, + 1, + "", + null, + "AQAAAGsAAAAAAAAAhgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" + ], + [ + 278, + 1, + "paste", + null, + "AgAAAPkAAAAAAAAACwEAAAAAAAAAAAAACwEAAAAAAAALAQAAAAAAAAgAAABkYXRldGltZQ", + "AQAAAAAAAAABAAAA+QAAAAAAAAABAQAAAAAAAAAAAAAAAPC/" + ], + [ + 283, + 1, + "paste", + null, + "AgAAACwBAAAAAAAAPgEAAAAAAAAAAAAAPgEAAAAAAAA+AQAAAAAAAAgAAABkYXRldGltZQ", + "AQAAAAAAAAABAAAALAEAAAAAAAA0AQAAAAAAAAAAAAAAAPC/" + ], + [ + 287, + 1, + "insert", + { + "characters": "None" + }, + "BQAAAA4BAAAAAAAADwEAAAAAAAAAAAAADwEAAAAAAAAPAQAAAAAAAA4AAABkYXRldGltZS5ub3coKQ8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAARAQAAAAAAABIBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADgEAAAAAAAAcAQAAAAAAAP///////+9/" + ], + [ + 291, + 1, + "insert", + { + "characters": "NOne" + }, + "BQAAADcBAAAAAAAAOAEAAAAAAAAAAAAAOAEAAAAAAAA4AQAAAAAAAA4AAABkYXRldGltZS5ub3coKTgBAAAAAAAAOQEAAAAAAAAAAAAAOQEAAAAAAAA6AQAAAAAAAAAAAAA6AQAAAAAAADsBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANwEAAAAAAABFAQAAAAAAAP///////+9/" + ], + [ + 294, + 1, + "insert", + { + "characters": "i" + }, + "AgAAADgBAAAAAAAAOQEAAAAAAAAAAAAAOQEAAAAAAAA5AQAAAAAAAAEAAABP", + "AQAAAAAAAAABAAAAOQEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" + ], + [ + 295, + 1, + "left_delete", + null, + "AQAAADgBAAAAAAAAOAEAAAAAAAABAAAAaQ", + "AQAAAAAAAAABAAAAOQEAAAAAAAA5AQAAAAAAAAAAAAAAAPC/" + ], + [ + 296, + 1, + "insert", + { + "characters": "o" + }, + "AQAAADgBAAAAAAAAOQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" + ], + [ + 300, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAACkAQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwpmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQpmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKCkBkYXRhY2xhc3MKY2xhc3MgQ29tbWVudDoKICAgIGlkOiBpbnQgPSAwCiAgICB1cmw6IHN0ciA9ICIiCiAgICBjcmVhdGVkOiBPcHRpb25hbFtkYXRldGltZV0gPSBOb25lCiAgICBub3RpZmllZDogT3B0aW9uYWxbZGF0ZXRpbWVdID0gTm9uZQogICAgcHVibGlzaGVkOiBPcHRpb25hbFtkYXRldGltZV0gPSBOb25lCiAgICBhdXRob3JfbmFtZTogc3RyID0gIiIKICAgIGF1dGhvcl9zaXRlOiBzdHIgPSAiIgogICAgYXV0aG9yX2dyYXZhdGFyOiBzdHIgPSAiIgogICAgY29udGVudDogc3RyID0gIiIKAAAAAAAAAAClAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVQEAAAAAAABVAQAAAAAAAAAAAAAAYHVA" + ] + ] + }, + { + "file": "tests/test_api.py", + "settings": + { + "buffer_size": 1655, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 7, + 1, + "insert", + { + "characters": "configure" + }, + "CgAAAFkCAAAAAAAAWgIAAAAAAAAAAAAAWgIAAAAAAABaAgAAAAAAAAUAAABzZXR1cFoCAAAAAAAAWwIAAAAAAAAAAAAAWwIAAAAAAABcAgAAAAAAAAAAAABcAgAAAAAAAF0CAAAAAAAAAAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAAXgIAAAAAAABfAgAAAAAAAAAAAABfAgAAAAAAAGACAAAAAAAAAAAAAGACAAAAAAAAYQIAAAAAAAAAAAAAYQIAAAAAAABiAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAWQIAAAAAAABeAgAAAAAAAAAAAAAAAPC/" + ], + [ + 9, + 1, + "insert", + { + "characters": "sqlite://" + }, + "CQAAAGQCAAAAAAAAZQIAAAAAAAAAAAAAZQIAAAAAAABmAgAAAAAAAAAAAABmAgAAAAAAAGcCAAAAAAAAAAAAAGcCAAAAAAAAaAIAAAAAAAAAAAAAaAIAAAAAAABpAgAAAAAAAAAAAABpAgAAAAAAAGoCAAAAAAAAAAAAAGoCAAAAAAAAawIAAAAAAAAAAAAAawIAAAAAAABsAgAAAAAAAAAAAABsAgAAAAAAAG0CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAZAIAAAAAAABkAgAAAAAAAAAAAAAAAPC/" + ], + [ + 11, + 1, + "insert", + { + "characters": "memory" + }, + "BgAAAGsCAAAAAAAAbAIAAAAAAAAAAAAAbAIAAAAAAABtAgAAAAAAAAAAAABtAgAAAAAAAG4CAAAAAAAAAAAAAG4CAAAAAAAAbwIAAAAAAAAAAAAAbwIAAAAAAABwAgAAAAAAAAAAAABwAgAAAAAAAHECAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAawIAAAAAAABrAgAAAAAAAAAAAAAAAPC/" + ], + [ + 15, + 1, + "insert", + { + "characters": "dummy." + }, + "BwAAAHMCAAAAAAAAdAIAAAAAAAAAAAAAdAIAAAAAAAB0AgAAAAAAAAgAAAA6bWVtb3J5OnQCAAAAAAAAdQIAAAAAAAAAAAAAdQIAAAAAAAB2AgAAAAAAAAAAAAB2AgAAAAAAAHcCAAAAAAAAAAAAAHcCAAAAAAAAeAIAAAAAAAAAAAAAeAIAAAAAAAB5AgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcwIAAAAAAAB7AgAAAAAAAAAAAAAAAPC/" + ], + [ + 16, + 1, + "insert", + { + "characters": "db" + }, + "AgAAAHkCAAAAAAAAegIAAAAAAAAAAAAAegIAAAAAAAB7AgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAeQIAAAAAAAB5AgAAAAAAAAAAAAAAAPC/" + ], + [ + 19, + 1, + "insert", + { + "characters": "db" + }, + "AwAAAHMCAAAAAAAAdAIAAAAAAAAAAAAAdAIAAAAAAAB0AgAAAAAAAAUAAABkdW1teXQCAAAAAAAAdQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAeAIAAAAAAABzAgAAAAAAAAAAAAAAAPC/" + ], + [ + 22, + 1, + "insert", + { + "characters": "sqlite" + }, + "BwAAAHYCAAAAAAAAdwIAAAAAAAAAAAAAdwIAAAAAAAB3AgAAAAAAAAIAAABkYncCAAAAAAAAeAIAAAAAAAAAAAAAeAIAAAAAAAB5AgAAAAAAAAAAAAB5AgAAAAAAAHoCAAAAAAAAAAAAAHoCAAAAAAAAewIAAAAAAAAAAAAAewIAAAAAAAB8AgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdgIAAAAAAAB4AgAAAAAAAAAAAAAAAPC/" + ], + [ + 31, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAHECAAAAAAAAcgIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcQIAAAAAAABxAgAAAAAAAAAAAAAAAPC/" + ], + [ + 71, + 1, + "toggle_breakpoint", + null, + "AQAAAL0BAAAAAAAA9wEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzwEAAAAAAADPAQAAAAAAAAAAAAAAAPC/" + ], + [ + 74, + 1, + "toggle_breakpoint", + null, + "AQAAAL0BAAAAAAAAvQEAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IDU1ZGNmYmI4IC8vCg", + "AQAAAAAAAAABAAAAwQEAAAAAAADBAQAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "tests/test_db.py", + "settings": + { + "buffer_size": 1835, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 6, + 1, + "insert", + { + "characters": "configure" + }, + "CgAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACmAAAAAAAAAAUAAABzZXR1cKYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAArQAAAAAAAACuAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAApQAAAAAAAACqAAAAAAAAAAAAAAAAAPC/" + ], + [ + 11, + 1, + "insert", + { + "characters": "sqlite" + }, + "BgAAALAAAAAAAAAAsQAAAAAAAAAAAAAAsQAAAAAAAACyAAAAAAAAAAAAAACyAAAAAAAAALMAAAAAAAAAAAAAALMAAAAAAAAAtAAAAAAAAAAAAAAAtAAAAAAAAAC1AAAAAAAAAAAAAAC1AAAAAAAAALYAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAsAAAAAAAAACwAAAAAAAAAAAAAAAAAPC/" + ], + [ + 14, + 1, + "insert", + { + "characters": "//db." + }, + "BQAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMEAAAAAAAAAAAAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADDAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvgAAAAAAAAC+AAAAAAAAAAAAAAAAAPC/" + ], + [ + 15, + 1, + "insert", + { + "characters": "sqlite" + }, + "BgAAAMMAAAAAAAAAxAAAAAAAAAAAAAAAxAAAAAAAAADFAAAAAAAAAAAAAADFAAAAAAAAAMYAAAAAAAAAAAAAAMYAAAAAAAAAxwAAAAAAAAAAAAAAxwAAAAAAAADIAAAAAAAAAAAAAADIAAAAAAAAAMkAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwwAAAAAAAADDAAAAAAAAAAAAAAAAAPC/" + ], + [ + 17, + 1, + "trim_trailing_white_space", + null, + "AQAAAMsAAAAAAAAAywAAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAyQAAAAAAAADJAAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "tests/test_form.py", + "settings": + { + "buffer_size": 1125, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 6, + 1, + "insert", + { + "characters": "configure" + }, + "CgAAAAgBAAAAAAAACQEAAAAAAAAAAAAACQEAAAAAAAAJAQAAAAAAAAUAAABzZXR1cAkBAAAAAAAACgEAAAAAAAAAAAAACgEAAAAAAAALAQAAAAAAAAAAAAALAQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADQEAAAAAAAAAAAAADQEAAAAAAAAOAQAAAAAAAAAAAAAOAQAAAAAAAA8BAAAAAAAAAAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACAEAAAAAAAANAQAAAAAAAAAAAAAAAPC/" + ], + [ + 8, + 1, + "insert", + { + "characters": "q" + }, + "AQAAABMBAAAAAAAAFAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" + ], + [ + 9, + 1, + "left_delete", + null, + "AQAAABMBAAAAAAAAEwEAAAAAAAABAAAAcQ", + "AQAAAAAAAAABAAAAFAEAAAAAAAAUAQAAAAAAAAAAAAAAAPC/" + ], + [ + 10, + 1, + "insert", + { + "characters": "sqlite" + }, + "BgAAABMBAAAAAAAAFAEAAAAAAAAAAAAAFAEAAAAAAAAVAQAAAAAAAAAAAAAVAQAAAAAAABYBAAAAAAAAAAAAABYBAAAAAAAAFwEAAAAAAAAAAAAAFwEAAAAAAAAYAQAAAAAAAAAAAAAYAQAAAAAAABkBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" + ], + [ + 13, + 1, + "insert", + { + "characters": "//db.sqli" + }, + "CQAAACEBAAAAAAAAIgEAAAAAAAAAAAAAIgEAAAAAAAAjAQAAAAAAAAAAAAAjAQAAAAAAACQBAAAAAAAAAAAAACQBAAAAAAAAJQEAAAAAAAAAAAAAJQEAAAAAAAAmAQAAAAAAAAAAAAAmAQAAAAAAACcBAAAAAAAAAAAAACcBAAAAAAAAKAEAAAAAAAAAAAAAKAEAAAAAAAApAQAAAAAAAAAAAAApAQAAAAAAACoBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAIQEAAAAAAAAhAQAAAAAAAAAAAAAAAPC/" + ], + [ + 14, + 1, + "insert", + { + "characters": "te" + }, + "AgAAACoBAAAAAAAAKwEAAAAAAAAAAAAAKwEAAAAAAAAsAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKgEAAAAAAAAqAQAAAAAAAAAAAAAAAPC/" + ], + [ + 16, + 1, + "trim_trailing_white_space", + null, + "AQAAAC4BAAAAAAAALgEAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAALAEAAAAAAAAsAQAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "config.ini", + "settings": + { + "buffer_size": 500, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 3, + 1, + "paste", + null, + "AQAAAEYAAAAAAAAAXQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABGAAAAAAAAAEYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 4, + 1, + "insert", + { + "characters": "\n" + }, + "AQAAAF0AAAAAAAAAXgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdAAAAAAAAAF0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 4, + 1, + "right_delete", + null, + "AQAAACsAAAAAAAAAKwAAAAAAAAAaAAAAZGJfc3FsaXRlX2ZpbGUgPSBkYi5zcWxpdGU", + "AQAAAAAAAAABAAAARQAAAAAAAAArAAAAAAAAAAAAAAAAAAAA" + ], + [ + 5, + 1, + "left_delete", + null, + "AQAAACoAAAAAAAAAKgAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAKwAAAAAAAAArAAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "stacosys/service/configuration.py", + "settings": + { + "buffer_size": 2563, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 6, + 1, + "insert", + { + "characters": "\nDB" + }, + "BAAAAHcAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAAAAAAB8AAAAAAAAAH0AAAAAAAAAAAAAAH0AAAAAAAAAfgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB3AAAAAAAAAHcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 7, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAH4AAAAAAAAAfwAAAAAAAAAAAAAAfwAAAAAAAACAAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB+AAAAAAAAAH4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 8, + 1, + "insert", + { + "characters": " " + }, + "AQAAAIAAAAAAAAAAgQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 9, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAAIEAAAAAAAAAgwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAAAAAAAAAIEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 10, + 1, + "insert", + { + "characters": "main.db" + }, + "BwAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAiQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAAAAAAAAAIIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 8, + 1, + "right_delete", + null, + "AQAAAI8AAAAAAAAAjwAAAAAAAAAmAAAAREJfU1FMSVRFX0ZJTEUgPSAibWFpbi5kYl9zcWxpdGVfZmlsZSI", + "AQAAAAAAAAABAAAAtQAAAAAAAACPAAAAAAAAAAAAAAAAAEJA" + ], + [ + 10, + 1, + "left_delete", + null, + "AQAAAIoAAAAAAAAAigAAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAAAA" + ], + [ + 12, + 1, + "trim_trailing_white_space", + null, + "AQAAAIoAAAAAAAAAigAAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "tests/test_config.py", + "settings": + { + "buffer_size": 1113, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 3, + 1, + "insert", + { + "characters": "sqlite:/" + }, + "CAAAALUAAAAAAAAAtgAAAAAAAAAAAAAAtgAAAAAAAAC3AAAAAAAAAAAAAAC3AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAC6AAAAAAAAALsAAAAAAAAAAAAAALsAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAAC9AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtQAAAAAAAAC1AAAAAAAAAAAAAAAAAPC/" + ], + [ + 4, + 1, + "insert", + { + "characters": "/" + }, + "AQAAAL0AAAAAAAAAvgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvQAAAAAAAAC9AAAAAAAAAAAAAAAAAPC/" + ], + [ + 12, + 1, + "right_delete", + null, + "AQAAAD4BAAAAAAAAPgEAAAAAAAAMAAAAX1NRTElURV9GSUxF", + "AQAAAAAAAAABAAAAPgEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" + ], + [ + 20, + 1, + "right_delete", + null, + "AQAAAOUBAAAAAAAA5QEAAAAAAAAMAAAAX1NRTElURV9GSUxF", + "AQAAAAAAAAABAAAA5QEAAAAAAADxAQAAAAAAAAAAAAAAAPC/" + ], + [ + 24, + 1, + "right_delete", + null, + "AQAAACsCAAAAAAAAKwIAAAAAAAAMAAAAX1NRTElURV9GSUxF", + "AQAAAAAAAAABAAAAKwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" + ], + [ + 31, + 1, + "right_delete", + null, + "AQAAAGgDAAAAAAAAaAMAAAAAAAAMAAAAX1NRTElURV9GSUxF", + "AQAAAAAAAAABAAAAaAMAAAAAAAB0AwAAAAAAAAAAAAAAAPC/" ] ] } @@ -140,6 +8316,22 @@ "last_filter": "", "selected_items": [ + [ + "break", + "Python Breakpoints: Toggle" + ], + [ + "togg", + "Python Breakpoints: Toggle" + ], + [ + "diag", + "LSP: Toggle Diagnostics Panel" + ], + [ + "lsp", + "LSP: Toggle Diagnostics Panel" + ], [ "comment", "Toggle Comment" @@ -148,10 +8340,6 @@ "install", "Package Control: Install Package" ], - [ - "lsp", - "LSP: Toggle Diagnostics Panel" - ], [ "rename", "LSP: Rename" @@ -168,10 +8356,6 @@ "move", "File: Move…" ], - [ - "break", - "Python Breakpoints: Clear All" - ], [ "remove", "Package Control: Remove Package" @@ -188,10 +8372,6 @@ "insta", "Package Control: Install Package" ], - [ - "diag", - "LSP: Toggle Diagnostics Panel" - ], [ "docstr", "AutoDocstring: Current" @@ -266,8 +8446,7 @@ "expanded_folders": [ "/home/yannic/work/stacosys", - "/home/yannic/work/stacosys/.github", - "/home/yannic/work/stacosys/.github/workflows", + "/home/yannic/work/stacosys/dbmigration", "/home/yannic/work/stacosys/docker", "/home/yannic/work/stacosys/stacosys", "/home/yannic/work/stacosys/stacosys/db", @@ -279,22 +8458,33 @@ ], "file_history": [ - "/home/yannic/work/stacosys/stacosys/interface/form.py", - "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/background.py", - "/home/yannic/work/stacosys/config-dev.ini", + "/home/yannic/work/stacosys/dbmigration/migrate_from_1.1_to_2.0.py", + "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/pydal/objects.py", + "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/markdown/extensions/def_list.py", + "/home/yannic/work/stacosys/stacosys/db/database.py", + "/home/yannic/work/stacosys/pyproject.toml", + "/home/yannic/work/stacosys/tests/test_rssfeed.py", + "/home/yannic/work/stacosys/tests/test_db.py", + "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", "/home/yannic/work/stacosys/stacosys/service/mail.py", + "/home/yannic/work/stacosys/stacosys/interface/form.py", + "/home/yannic/work/stacosys/stacosys/interface/__init__.py", + "/home/yannic/work/stacosys/stacosys/interface/api.py", + "/home/yannic/work/stacosys/stacosys/db/dao.py", + "/home/yannic/work/stacosys/stacosys/model/comment.py", + "/home/yannic/work/stacosys/stacosys/run.py", + "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/peewee.py", + "/home/yannic/work/stacosys/config-dev.ini", + "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/background.py", "/home/yannic/work/stacosys/tests/test_mail.py", "/home/yannic/work/stacosys/Makefile", - "/home/yannic/work/stacosys/tests/test_db.py", "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/builtins.pyi", - "/home/yannic/work/stacosys/stacosys/run.py", "/home/yannic/work/stacosys/tests/test_config.py", "/home/yannic/work/stacosys/.venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi", "/usr/lib64/python3.11/smtplib.py", "/home/yannic/work/stacosys/stacosys/interface/web/admin.py", "/home/yannic/work/stacosys/stacosys/service/configuration.py", "/home/yannic/work/stacosys/config.ini", - "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", "/home/yannic/work/stacosys/comments.xml", "/home/yannic/work/stacosys/tests/test_api.py", "/home/yannic/work/stacosys/stacosys/service/__init__.py", @@ -309,13 +8499,8 @@ "/home/yannic/work/stacosys/stacosys/core/mailer.py", "/home/yannic/work/stacosys/stacosys/conf/config.py", "/home/yannic/work/stacosys/stacosys/core/rss.py", - "/home/yannic/work/stacosys/stacosys/db/dao.py", - "/home/yannic/work/stacosys/stacosys/db/database.py", "/home/yannic/work/stacosys/run.sh", - "/home/yannic/work/stacosys/stacosys/interface/__init__.py", - "/home/yannic/work/stacosys/stacosys/interface/api.py", "/home/yannic/work/stacosys/stacosys.sublime-project", - "/home/yannic/work/stacosys/stacosys/model/comment.py", "/home/yannic/work/stacosys/pylintrc", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/flask/app.py", "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/sys.pyi", @@ -339,6 +8524,10 @@ "case_sensitive": false, "find_history": [ + "asdict", + "def delete", + "db_dal", + "tox", "apscheduler", "_lang", "config", @@ -369,26 +8558,47 @@ [ { "buffer": 0, - "file": "pyproject.toml", + "file": "stacosys/db/__init__.py", "selected": true, "semi_transient": false, "settings": { - "buffer_size": 620, + "buffer_size": 672, "regions": { }, "selection": [ [ - 481, - 481 + 195, + 195 ] ], "settings": { - "lsp_uri": "file:///home/yannic/work/stacosys/pyproject.toml", - "syntax": "Packages/Text/Plain text.tmLanguage" + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 3, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/db/__init__.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true }, "translation.x": 0.0, "translation.y": 0.0, @@ -397,6 +8607,576 @@ "stack_index": 0, "stack_multiselect": false, "type": "text" + }, + { + "buffer": 1, + "file": "stacosys/run.py", + "semi_transient": false, + "settings": + { + "buffer_size": 2472, + "regions": + { + }, + "selection": + [ + [ + 120, + 120 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/run.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 6, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 2, + "file": "config-dev.ini", + "semi_transient": false, + "settings": + { + "buffer_size": 657, + "regions": + { + }, + "selection": + [ + [ + 59, + 59 + ] + ], + "settings": + { + "lsp_uri": "file:///home/yannic/work/stacosys/config-dev.ini", + "syntax": "Packages/Text/Plain text.tmLanguage" + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 3, + "file": "dbmigration/migrate_from_3.3_to_4.0.py", + "semi_transient": false, + "settings": + { + "buffer_size": 1022, + "regions": + { + }, + "selection": + [ + [ + 369, + 369 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/dbmigration/migrate_from_3.3_to_4.0.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 2, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 4, + "file": "stacosys/db/dao.py", + "semi_transient": false, + "settings": + { + "buffer_size": 2026, + "regions": + { + }, + "selection": + [ + [ + 80, + 80 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/db/dao.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 7, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 5, + "file": "stacosys/service/rssfeed.py", + "semi_transient": false, + "settings": + { + "buffer_size": 1754, + "regions": + { + }, + "selection": + [ + [ + 1668, + 1631 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/rssfeed.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 456.0, + "zoom_level": 1.0 + }, + "stack_index": 8, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 6, + "file": "stacosys/model/comment.py", + "semi_transient": false, + "settings": + { + "buffer_size": 421, + "regions": + { + }, + "selection": + [ + [ + 421, + 421 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/model/comment.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 11, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 7, + "file": "tests/test_api.py", + "semi_transient": false, + "settings": + { + "buffer_size": 1655, + "regions": + { + }, + "selection": + [ + [ + 935, + 935 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_api.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 9, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 8, + "file": "tests/test_db.py", + "semi_transient": false, + "settings": + { + "buffer_size": 1835, + "regions": + { + }, + "selection": + [ + [ + 335, + 335 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_db.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 10, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 9, + "file": "tests/test_form.py", + "semi_transient": false, + "settings": + { + "buffer_size": 1125, + "regions": + { + }, + "selection": + [ + [ + 300, + 300 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_form.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 12, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 10, + "file": "config.ini", + "semi_transient": false, + "settings": + { + "buffer_size": 500, + "regions": + { + }, + "selection": + [ + [ + 66, + 66 + ] + ], + "settings": + { + "lsp_uri": "file:///home/yannic/work/stacosys/config.ini", + "syntax": "Packages/Text/Plain text.tmLanguage" + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 5, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 11, + "file": "stacosys/service/configuration.py", + "semi_transient": false, + "settings": + { + "buffer_size": 2563, + "regions": + { + }, + "selection": + [ + [ + 138, + 138 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 3, + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/configuration.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 4, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 12, + "file": "tests/test_config.py", + "semi_transient": false, + "settings": + { + "buffer_size": 1113, + "regions": + { + }, + "selection": + [ + [ + 1113, + 1113 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 1, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_config.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 171.0, + "zoom_level": 1.0 + }, + "stack_index": 3, + "stack_multiselect": false, + "type": "text" } ] } @@ -473,6 +9253,10 @@ "last_filter": "", "selected_items": [ + [ + "def del", + ".venv/lib/python3.11/site-packages/markdown/extensions/def_list.py" + ], [ "socket.p", ".venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi" diff --git a/stacosys/db/__init__.py b/stacosys/db/__init__.py index e69de29..dcd1ef8 100644 --- a/stacosys/db/__init__.py +++ b/stacosys/db/__init__.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pydal import DAL, Field + + +class Database: + + db_dal = DAL() + + def configure(self, db_uri): + self.db_dal = DAL(db_uri, migrate=False) + self.db_dal.define_table( + "comment", + Field("url"), + Field("created", type="datetime"), + Field("notified", type="datetime"), + Field("published", type="datetime"), + Field("author_name"), + Field("author_site"), + Field("author_gravatar"), + Field("content", type="text"), + ) + + def get(self): + return self.db_dal + + +database = Database() +db = database.get diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index fcd3689..7d9abdb 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -1,67 +1,80 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- +# pylint: disable=singleton-comparison + from datetime import datetime +from stacosys.db import db from stacosys.model.comment import Comment -TIME_FORMAT = "%Y-%m-%d %H:%M:%S" - def find_comment_by_id(comment_id): - return Comment.get_by_id(comment_id) + return db().comment(comment_id) def notify_comment(comment: Comment): - comment.notified = datetime.now().strftime(TIME_FORMAT) - comment.save() + db()(db().comment.id == comment.id).update(notified=datetime.now()) + db().commit() def publish_comment(comment: Comment): - comment.published = datetime.now().strftime(TIME_FORMAT) - comment.save() + db()(db().comment.id == comment.id).update(published=datetime.now()) + db().commit() def delete_comment(comment: Comment): - comment.delete_instance() + db()(db().comment.id == comment.id).delete() + db().commit() def find_not_notified_comments(): - return Comment.select().where(Comment.notified.is_null()) + return db()(db().comment.notified == None).select() def find_not_published_comments(): - return Comment.select().where(Comment.published.is_null()) + return db()(db().comment.published == None).select() def find_published_comments_by_url(url): - return ( - Comment.select(Comment) - .where((Comment.url == url) & (Comment.published.is_null(False))) - .order_by(+Comment.published) + return db()((db().comment.url == url) & (db().comment.published != None)).select( + orderby=db().comment.published ) def count_published_comments(url): return ( - Comment.select(Comment) - .where((Comment.url == url) & (Comment.published.is_null(False))) - .count() + db()((db().comment.url == url) & (db().comment.published != None)).count() if url - else Comment.select(Comment).where(Comment.published.is_null(False)).count() + else db()(db().comment.published != None).count() + ) + + +def find_recent_published_comments(): + return db()(db().comment.published != None).select( + orderby=~db().comment.published, limitby=(0, 10) ) def create_comment(url, author_name, author_site, author_gravatar, message): - created = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - comment = Comment( + row = db().comment.insert( url=url, author_name=author_name, author_site=author_site, author_gravatar=author_gravatar, content=message, - created=created, + created=datetime.now(), notified=None, published=None, ) - comment.save() - return comment + db().commit() + return Comment( + id=row.id, + url=row.url, + author_name=row.author_name, + author_site=row.author_site, + author_gravatar=row.author_gravatar, + content=row.content, + created=row.created, + notified=row.notified, + published=row.published, + ) diff --git a/stacosys/db/database.py b/stacosys/db/database.py deleted file mode 100644 index 08a7580..0000000 --- a/stacosys/db/database.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/python -# -*- coding: UTF-8 -*- -# pylint: disable=import-outside-toplevel - -from peewee import Model -from playhouse.db_url import SqliteDatabase - -db = SqliteDatabase(None) - - -class BaseModel(Model): - class Meta: - database = db - - -def setup(db_url): - db.init(db_url) - db.connect() - - from stacosys.model.comment import Comment - - db.create_tables([Comment], safe=True) - - -def get_db(): - return db diff --git a/stacosys/model/comment.py b/stacosys/model/comment.py index a6f3324..41688a5 100644 --- a/stacosys/model/comment.py +++ b/stacosys/model/comment.py @@ -1,17 +1,19 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- -from peewee import CharField, DateTimeField, TextField - -from stacosys.db.database import BaseModel +from dataclasses import dataclass +from datetime import datetime +from typing import Optional -class Comment(BaseModel): - url = CharField() - created = DateTimeField() - notified = DateTimeField(null=True, default=None) - published = DateTimeField(null=True, default=None) - author_name = CharField() - author_site = CharField(default="") - author_gravatar = CharField(default="") - content = TextField() +@dataclass +class Comment: + id: int = 0 + url: str = "" + created: Optional[datetime] = None + notified: Optional[datetime] = None + published: Optional[datetime] = None + author_name: str = "" + author_site: str = "" + author_gravatar: str = "" + content: str = "" diff --git a/stacosys/run.py b/stacosys/run.py index 8bd26ad..9cf26cd 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -43,14 +43,8 @@ def stacosys_server(config_pathname): sys.exit(1) logger.info(config) - # check database file exists (prevents from creating a fresh db) - db_pathname = config.get(ConfigParameter.DB_SQLITE_FILE) - if not db_pathname or not os.path.isfile(db_pathname): - logger.error("Database file '%s' not found.", db_pathname) - sys.exit(1) - # initialize database - database.setup(db_pathname) + database.configure(config.get(ConfigParameter.DB)) logger.info("Start Stacosys application") diff --git a/stacosys/service/configuration.py b/stacosys/service/configuration.py index 85b3db8..d21dc87 100644 --- a/stacosys/service/configuration.py +++ b/stacosys/service/configuration.py @@ -6,7 +6,7 @@ from enum import Enum class ConfigParameter(Enum): - DB_SQLITE_FILE = "main.db_sqlite_file" + DB = "main.db" LANG = "main.lang" HTTP_HOST = "http.host" diff --git a/stacosys/service/rssfeed.py b/stacosys/service/rssfeed.py index 3e81389..80461a1 100644 --- a/stacosys/service/rssfeed.py +++ b/stacosys/service/rssfeed.py @@ -6,7 +6,7 @@ from datetime import datetime import markdown import PyRSS2Gen -from stacosys.model.comment import Comment +from stacosys.db import dao class Rss: @@ -32,12 +32,7 @@ class Rss: markdownizer = markdown.Markdown() items = [] - for row in ( - Comment.select() - .where(Comment.published) - .order_by(-Comment.published) - .limit(10) - ): + for row in dao.find_recent_published_comments(): item_link = f"{self._site_proto}://{self._site_url}{row.url}" items.append( PyRSS2Gen.RSSItem( diff --git a/tests/test_api.py b/tests/test_api.py index 8efd052..0d84a0c 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -23,7 +23,7 @@ def init_test_db(): @pytest.fixture def client(): logger = logging.getLogger(__name__) - database.setup(":memory:") + database.configure("sqlite:memory://db.sqlite") init_test_db() logger.info(f"start interface {api}") return app.test_client() diff --git a/tests/test_config.py b/tests/test_config.py index db884c8..fe44ef2 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -6,26 +6,26 @@ import pytest from stacosys.service import config from stacosys.service.configuration import ConfigParameter -EXPECTED_DB_SQLITE_FILE = "db.sqlite" +EXPECTED_DB_SQLITE_FILE = "sqlite://db.sqlite" EXPECTED_HTTP_PORT = 8080 EXPECTED_LANG = "fr" @pytest.fixture def init_config(): - config.put(ConfigParameter.DB_SQLITE_FILE, EXPECTED_DB_SQLITE_FILE) + config.put(ConfigParameter.DB, EXPECTED_DB_SQLITE_FILE) config.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) def test_exists(init_config): - assert config.exists(ConfigParameter.DB_SQLITE_FILE) + assert config.exists(ConfigParameter.DB) def test_get(init_config): - assert config.get(ConfigParameter.DB_SQLITE_FILE) == EXPECTED_DB_SQLITE_FILE + assert config.get(ConfigParameter.DB) == EXPECTED_DB_SQLITE_FILE assert config.get(ConfigParameter.HTTP_HOST) == "" assert config.get(ConfigParameter.HTTP_PORT) == str(EXPECTED_HTTP_PORT) assert config.get_int(ConfigParameter.HTTP_PORT) == EXPECTED_HTTP_PORT with pytest.raises(AssertionError): - config.get_bool(ConfigParameter.DB_SQLITE_FILE) + config.get_bool(ConfigParameter.DB) def test_put(init_config): assert not config.exists(ConfigParameter.LANG) diff --git a/tests/test_db.py b/tests/test_db.py index 649c5e7..d53133c 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -8,7 +8,7 @@ from stacosys.db import database @pytest.fixture def setup_db(): - database.setup(":memory:") + database.configure("sqlite:memory://db.sqlite") def test_dao_published(setup_db): diff --git a/tests/test_form.py b/tests/test_form.py index dedef3a..1ddd4ae 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -13,7 +13,7 @@ from stacosys.interface import form @pytest.fixture def client(): logger = logging.getLogger(__name__) - database.setup(":memory:") + database.configure("sqlite:memory://db.sqlite") logger.info(f"start interface {form}") return app.test_client() From 5cd86a42bf769ad1c1413a7cb7235bbcd6e52f1a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Thu, 1 Dec 2022 20:41:02 +0100 Subject: [PATCH 086/182] DB migration for test case --- stacosys/db/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stacosys/db/__init__.py b/stacosys/db/__init__.py index dcd1ef8..01b2a36 100644 --- a/stacosys/db/__init__.py +++ b/stacosys/db/__init__.py @@ -9,7 +9,7 @@ class Database: db_dal = DAL() def configure(self, db_uri): - self.db_dal = DAL(db_uri, migrate=False) + self.db_dal = DAL(db_uri, migrate=db_uri.startswith("sqlite:memory")) self.db_dal.define_table( "comment", Field("url"), From 172039d7ab2c7fe87112a5fddb18b60ccf96529c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 2 Dec 2022 08:58:44 +0100 Subject: [PATCH 087/182] format tests --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 2eb9197..6c11464 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ all: black test typehint lint black: - poetry run isort --multi-line 3 --profile black stacosys/ - poetry run black stacosys/ + poetry run isort --multi-line 3 --profile black stacosys/ tests/ + poetry run black --target-version py311 stacosys/ tests/ test: poetry run coverage run -m --source=stacosys pytest From 5ef4acf396374df35ef395382fd67feec18bf8d8 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 2 Dec 2022 08:59:09 +0100 Subject: [PATCH 088/182] reinstall black formatter --- poetry.lock | 75 +- pyproject.toml | 3 +- stacosys.sublime-workspace | 8363 +++++++++++++----------------------- 3 files changed, 2923 insertions(+), 5518 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2bb08e3..fc0d83d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -136,35 +136,6 @@ category = "dev" optional = false python-versions = "*" -[[package]] -name = "flake8" -version = "6.0.0" -description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" -optional = false -python-versions = ">=3.8.1" - -[package.dependencies] -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.10.0,<2.11.0" -pyflakes = ">=3.0.0,<3.1.0" - -[[package]] -name = "flake8-black" -version = "0.3.5" -description = "flake8 plugin to call black as a code style validator" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -black = ">=22.1.0" -flake8 = ">=3" -tomli = "*" - -[package.extras] -develop = ["build", "twine"] - [[package]] name = "flask" version = "2.2.2" @@ -339,14 +310,6 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "pycodestyle" -version = "2.10.0" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = ">=3.6" - [[package]] name = "pydal" version = "20221110.1" @@ -355,14 +318,6 @@ category = "main" optional = false python-versions = "*" -[[package]] -name = "pyflakes" -version = "3.0.1" -description = "passive checker of Python programs" -category = "dev" -optional = false -python-versions = ">=3.6" - [[package]] name = "pylint" version = "2.15.7" @@ -454,14 +409,6 @@ urllib3 = ">=1.21.1,<1.27" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -category = "dev" -optional = false -python-versions = ">=3.7" - [[package]] name = "tomlkit" version = "0.11.6" @@ -524,7 +471,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [metadata] lock-version = "1.1" python-versions = "~3.11" -content-hash = "eae5d8539c8fd2e80b005124c5439a61310128f7427bdc20affa92dec85085ee" +content-hash = "7ee7b17fa42c245160e4e376453b3d6cea354551dd40342ee57d59b6d71ea31d" [metadata.files] astroid = [ @@ -641,14 +588,6 @@ dill = [ docopt = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, ] -flake8 = [ - {file = "flake8-6.0.0-py2.py3-none-any.whl", hash = "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7"}, - {file = "flake8-6.0.0.tar.gz", hash = "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"}, -] -flake8-black = [ - {file = "flake8-black-0.3.5.tar.gz", hash = "sha256:9e93252b1314a8eb3c2f55dec54a07239e502b12f57567f2c105f2202714b15e"}, - {file = "flake8_black-0.3.5-py3-none-any.whl", hash = "sha256:4948a579fdddd98fbf935fd94255dfcfce560c4ddc1ceee08e3f12d6114c8619"}, -] flask = [ {file = "Flask-2.2.2-py3-none-any.whl", hash = "sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526"}, {file = "Flask-2.2.2.tar.gz", hash = "sha256:642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b"}, @@ -796,17 +735,9 @@ pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -pycodestyle = [ - {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"}, - {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"}, -] pydal = [ {file = "pydal-20221110.1.tar.gz", hash = "sha256:7c3e891c70f8d8918e36276f210a1959bb7badf3b276f47191986ffcf5b6a390"}, ] -pyflakes = [ - {file = "pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"}, - {file = "pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"}, -] pylint = [ {file = "pylint-2.15.7-py3-none-any.whl", hash = "sha256:1d561d1d3e8be9dd880edc685162fbdaa0409c88b9b7400873c0cf345602e326"}, {file = "pylint-2.15.7.tar.gz", hash = "sha256:91e4776dbcb4b4d921a3e4b6fec669551107ba11f29d9199154a01622e460a57"}, @@ -830,10 +761,6 @@ requests = [ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, ] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] tomlkit = [ {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, diff --git a/pyproject.toml b/pyproject.toml index 3eff290..f8e7c83 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,6 @@ version = "3.3" description = "STAtic COmmenting SYStem" authors = ["Yax"] readme = "README.md" -include = ["run.py"] [tool.poetry.dependencies] python = "~3.11" @@ -22,8 +21,8 @@ pylint = "^2.15" mypy = "^0.991" pytest = "^7.2.0" coveralls = "^3.3.1" -flake8-black = "^0.3.4" pytest-cov = "^4.0.0" +black = "^22.10.0" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace index 00ac913..3bf70a7 100644 --- a/stacosys.sublime-workspace +++ b/stacosys.sublime-workspace @@ -71,7 +71,7 @@ "file": "stacosys/db/__init__.py", "settings": { - "buffer_size": 672, + "buffer_size": 701, "encoding": "UTF-8", "line_ending": "Unix" }, @@ -83,7 +83,7 @@ "paste", null, "AQAAAAAAAAAAAAAALQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/" ], [ 3, @@ -93,7 +93,7 @@ "characters": "\n\nd" }, "AwAAAC0AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAADAAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAAPC/" ], [ 4, @@ -103,7 +103,7 @@ "characters": "b" }, "AQAAADAAAAAAAAAAMQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAPC/" ], [ 5, @@ -113,7 +113,7 @@ "characters": " =" }, "AgAAADEAAAAAAAAAMgAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAxAAAAAAAAADEAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMQAAAAAAAAAxAAAAAAAAAAAAAAAAAPC/" ], [ 6, @@ -123,7 +123,7 @@ "characters": " None" }, "BQAAADMAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADYAAAAAAAAAAAAAADYAAAAAAAAANwAAAAAAAAAAAAAANwAAAAAAAAA4AAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMwAAAAAAAAAzAAAAAAAAAAAAAAAAAPC/" ], [ 11, @@ -133,7 +133,7 @@ "characters": "\n" }, "AQAAAC4AAAAAAAAALwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAuAAAAAAAAAC4AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAAPC/" ], [ 12, @@ -141,7 +141,7 @@ "paste", null, "AQAAAC8AAAAAAAAASwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAvAAAAAAAAAC8AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALwAAAAAAAAAvAAAAAAAAAAAAAAAAAPC/" ], [ 13, @@ -151,7 +151,7 @@ "characters": "\n" }, "AQAAAEsAAAAAAAAATAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLAAAAAAAAAEsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASwAAAAAAAABLAAAAAAAAAAAAAAAAAPC/" ], [ 15, @@ -161,7 +161,7 @@ "characters": "\n\n" }, "AgAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABWAAAAAAAAAFYAAAAAAAAAAAAAAAAAAAA" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAAAA" ], [ 16, @@ -169,7 +169,7 @@ "paste", null, "AQAAAFgAAAAAAAAA6wAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABYAAAAAAAAAFgAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWAAAAAAAAABYAAAAAAAAAAAAAAAAAPC/" ], [ 21, @@ -179,7 +179,7 @@ "characters": "i" }, "AgAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABoAAAAAAAAAAEAAABs", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABoAAAAAAAAAGcAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaAAAAAAAAABnAAAAAAAAAAAAAAAAAPC/" ], [ 29, @@ -189,7 +189,7 @@ "characters": "db" }, "AwAAAG8AAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAA8AAABkYi5pbml0KGRiX3VybClwAAAAAAAAAHEAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABvAAAAAAAAAH4AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbwAAAAAAAAB+AAAAAAAAAAAAAAAAAPC/" ], [ 30, @@ -199,7 +199,7 @@ "characters": " " }, "AgAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABxAAAAAAAAAHEAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcQAAAAAAAABxAAAAAAAAAAAAAAAAAPC/" ], [ 31, @@ -207,7 +207,7 @@ "left_delete", null, "AQAAAHIAAAAAAAAAcgAAAAAAAAABAAAAIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABzAAAAAAAAAHMAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" ], [ 32, @@ -217,7 +217,7 @@ "characters": "=" }, "AQAAAHIAAAAAAAAAcwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByAAAAAAAAAHIAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcgAAAAAAAAByAAAAAAAAAAAAAAAAAPC/" ], [ 33, @@ -227,7 +227,7 @@ "characters": " " }, "AQAAAHMAAAAAAAAAdAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABzAAAAAAAAAHMAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" ], [ 35, @@ -235,7 +235,7 @@ "", null, "AQAAAHQAAAAAAAAAjgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdAAAAAAAAAB0AAAAAAAAAAAAAAAAAPC/" ], [ 39, @@ -245,7 +245,7 @@ "characters": "db_" }, "BAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAAAB5AAAAAAAAABUAAAAnc3FsaXRlOi8vc3RvcmFnZS5kYid5AAAAAAAAAHoAAAAAAAAAAAAAAHoAAAAAAAAAewAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACNAAAAAAAAAHgAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjQAAAAAAAAB4AAAAAAAAAAAAAAAAAPC/" ], [ 42, @@ -259,7 +259,7 @@ "trigger": "db_uri" }, "AgAAAHgAAAAAAAAAeAAAAAAAAAADAAAAZGJfeAAAAAAAAAB+AAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB7AAAAAAAAAHsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" ], [ 46, @@ -269,7 +269,7 @@ "characters": "\n" }, "AgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACEAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AAAAAAAAAH8AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" ], [ 48, @@ -277,7 +277,7 @@ "trim_trailing_white_space", null, "AQAAAIAAAAAAAAAAgAAAAAAAAAAEAAAAICAgIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACEAAAAAAAAAIQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAAPC/" ], [ 55, @@ -285,7 +285,7 @@ "reindent", null, "AQAAAIAAAAAAAAAAhAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" ], [ 56, @@ -295,7 +295,7 @@ "characters": "db." }, "AwAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAACGAAAAAAAAAIcAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACEAAAAAAAAAIQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAAPC/" ], [ 57, @@ -305,7 +305,7 @@ "characters": "defi" }, "BAAAAIcAAAAAAAAAiAAAAAAAAAAAAAAAiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACHAAAAAAAAAIcAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" ], [ 58, @@ -319,7 +319,7 @@ "trigger": "define_table" }, "AgAAAIcAAAAAAAAAhwAAAAAAAAAEAAAAZGVmaYcAAAAAAAAAkwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACLAAAAAAAAAIsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAPC/" ], [ 59, @@ -329,7 +329,7 @@ "contents": "($0)" }, "AQAAAJMAAAAAAAAAlQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACTAAAAAAAAAJMAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAkwAAAAAAAACTAAAAAAAAAAAAAAAAAPC/" ], [ 60, @@ -339,7 +339,7 @@ "contents": "\"$0\"" }, "AQAAAJQAAAAAAAAAlgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACUAAAAAAAAAJQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAlAAAAAAAAACUAAAAAAAAAAAAAAAAAPC/" ], [ 61, @@ -349,7 +349,7 @@ "characters": "comment" }, "BwAAAJUAAAAAAAAAlgAAAAAAAAAAAAAAlgAAAAAAAACXAAAAAAAAAAAAAACXAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAmQAAAAAAAAAAAAAAmQAAAAAAAACaAAAAAAAAAAAAAACaAAAAAAAAAJsAAAAAAAAAAAAAAJsAAAAAAAAAnAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACVAAAAAAAAAJUAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAlQAAAAAAAACVAAAAAAAAAAAAAAAAAPC/" ], [ 67, @@ -357,7 +357,7 @@ "left_delete", null, "AQAAAJ8AAAAAAAAAnwAAAAAAAABsAAAAICAgIGRiLmNvbm5lY3QoKQoKICAgIGZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKICAgIGRiLmNyZWF0ZV90YWJsZXMoW0NvbW1lbnRdLCBzYWZlPVRydWUp", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAQAAAAAAAJ8AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwEAAAAAAACfAAAAAAAAAAAAAAAAAPC/" ], [ 70, @@ -367,7 +367,7 @@ "characters": ";" }, "AQAAAJ0AAAAAAAAAngAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdAAAAAAAAAJ0AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnQAAAAAAAACdAAAAAAAAAAAAAAAAAPC/" ], [ 71, @@ -375,7 +375,7 @@ "left_delete", null, "AQAAAJ0AAAAAAAAAnQAAAAAAAAABAAAAOw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeAAAAAAAAAJ4AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAngAAAAAAAACeAAAAAAAAAAAAAAAAAPC/" ], [ 72, @@ -385,7 +385,7 @@ "characters": "," }, "AQAAAJ0AAAAAAAAAngAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACdAAAAAAAAAJ0AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnQAAAAAAAACdAAAAAAAAAAAAAAAAAPC/" ], [ 73, @@ -395,7 +395,7 @@ "characters": " " }, "AQAAAJ4AAAAAAAAAnwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeAAAAAAAAAJ4AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAngAAAAAAAACeAAAAAAAAAAAAAAAAAPC/" ], [ 74, @@ -405,7 +405,7 @@ "characters": "Field" }, "BQAAAJ8AAAAAAAAAoAAAAAAAAAAAAAAAoAAAAAAAAAChAAAAAAAAAAAAAAChAAAAAAAAAKIAAAAAAAAAAAAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACkAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACfAAAAAAAAAJ8AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnwAAAAAAAACfAAAAAAAAAAAAAAAAAPC/" ], [ 75, @@ -415,7 +415,7 @@ "contents": "($0)" }, "AQAAAKQAAAAAAAAApgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACkAAAAAAAAAKQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApAAAAAAAAACkAAAAAAAAAAAAAAAAAPC/" ], [ 76, @@ -425,7 +425,7 @@ "contents": "\"$0\"" }, "AQAAAKUAAAAAAAAApwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApQAAAAAAAAClAAAAAAAAAAAAAAAAAPC/" ], [ 77, @@ -433,7 +433,7 @@ "paste", null, "AQAAAKYAAAAAAAAAqQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACmAAAAAAAAAKYAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApgAAAAAAAACmAAAAAAAAAAAAAAAAAPC/" ], [ 81, @@ -443,7 +443,7 @@ "characters": "," }, "AQAAAKsAAAAAAAAArAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAAAAAAAAAKsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAqwAAAAAAAACrAAAAAAAAAAAAAAAAAPC/" ], [ 82, @@ -453,7 +453,7 @@ "characters": " F" }, "AgAAAKwAAAAAAAAArQAAAAAAAAAAAAAArQAAAAAAAACuAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsAAAAAAAAAKwAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArAAAAAAAAACsAAAAAAAAAAAAAAAAAPC/" ], [ 83, @@ -463,7 +463,7 @@ "characters": "ield" }, "BAAAAK4AAAAAAAAArwAAAAAAAAAAAAAArwAAAAAAAACwAAAAAAAAAAAAAACwAAAAAAAAALEAAAAAAAAAAAAAALEAAAAAAAAAsgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACuAAAAAAAAAK4AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArgAAAAAAAACuAAAAAAAAAAAAAAAAAPC/" ], [ 84, @@ -473,7 +473,7 @@ "contents": "($0)" }, "AQAAALIAAAAAAAAAtAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACyAAAAAAAAALIAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsgAAAAAAAACyAAAAAAAAAAAAAAAAAPC/" ], [ 85, @@ -483,7 +483,7 @@ "contents": "\"$0\"" }, "AQAAALMAAAAAAAAAtQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACzAAAAAAAAALMAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAswAAAAAAAACzAAAAAAAAAAAAAAAAAPC/" ], [ 86, @@ -491,7 +491,7 @@ "paste", null, "AQAAALQAAAAAAAAAuwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC0AAAAAAAAALQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAAPC/" ], [ 88, @@ -501,7 +501,7 @@ "characters": "," }, "AQAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC8AAAAAAAAALwAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvAAAAAAAAAC8AAAAAAAAAAAAAAAAAPC/" ], [ 89, @@ -511,7 +511,7 @@ "characters": " type=" }, "BgAAAL0AAAAAAAAAvgAAAAAAAAAAAAAAvgAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwQAAAAAAAAAAAAAAwQAAAAAAAADCAAAAAAAAAAAAAADCAAAAAAAAAMMAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC9AAAAAAAAAL0AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvQAAAAAAAAC9AAAAAAAAAAAAAAAAAPC/" ], [ 90, @@ -521,7 +521,7 @@ "contents": "\"$0\"" }, "AQAAAMMAAAAAAAAAxQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADDAAAAAAAAAMMAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwwAAAAAAAADDAAAAAAAAAAAAAAAAAPC/" ], [ 91, @@ -531,7 +531,7 @@ "characters": "date" }, "BAAAAMQAAAAAAAAAxQAAAAAAAAAAAAAAxQAAAAAAAADGAAAAAAAAAAAAAADGAAAAAAAAAMcAAAAAAAAAAAAAAMcAAAAAAAAAyAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADEAAAAAAAAAMQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAxAAAAAAAAADEAAAAAAAAAAAAAAAAAPC/" ], [ 95, @@ -541,7 +541,7 @@ "characters": ";" }, "AQAAAMoAAAAAAAAAywAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADKAAAAAAAAAMoAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" ], [ 96, @@ -551,7 +551,7 @@ "characters": " " }, "AQAAAMsAAAAAAAAAzAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLAAAAAAAAAMsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAywAAAAAAAADLAAAAAAAAAAAAAAAAAPC/" ], [ 97, @@ -559,7 +559,7 @@ "left_delete", null, "AgAAAMsAAAAAAAAAywAAAAAAAAABAAAAIMoAAAAAAAAAygAAAAAAAAABAAAAOw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADMAAAAAAAAAMwAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" ], [ 98, @@ -569,7 +569,7 @@ "characters": "," }, "AQAAAMoAAAAAAAAAywAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADKAAAAAAAAAMoAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" ], [ 99, @@ -579,7 +579,7 @@ "characters": " " }, "AQAAAMsAAAAAAAAAzAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLAAAAAAAAAMsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAywAAAAAAAADLAAAAAAAAAAAAAAAAAPC/" ], [ 104, @@ -587,7 +587,7 @@ "paste", null, "AQAAAMwAAAAAAAAA6QAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADMAAAAAAAAAMwAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" ], [ 110, @@ -595,7 +595,7 @@ "paste", null, "AgAAANMAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADbAAAAAAAAAAcAAABjcmVhdGVk", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTAAAAAAAAANoAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0wAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" ], [ 114, @@ -605,7 +605,7 @@ "characters": "," }, "AQAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpAAAAAAAAAOkAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6QAAAAAAAADpAAAAAAAAAAAAAAAAAPC/" ], [ 115, @@ -615,7 +615,7 @@ "characters": " de" }, "AwAAAOoAAAAAAAAA6wAAAAAAAAAAAAAA6wAAAAAAAADsAAAAAAAAAAAAAADsAAAAAAAAAO0AAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqAAAAAAAAAOoAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6gAAAAAAAADqAAAAAAAAAAAAAAAAAPC/" ], [ 116, @@ -629,7 +629,7 @@ "trigger": "default=" }, "AgAAAOsAAAAAAAAA6wAAAAAAAAACAAAAZGXrAAAAAAAAAPMAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADtAAAAAAAAAO0AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA7QAAAAAAAADtAAAAAAAAAAAAAAAAAPC/" ], [ 117, @@ -639,7 +639,7 @@ "characters": "None" }, "BAAAAPMAAAAAAAAA9AAAAAAAAAAAAAAA9AAAAAAAAAD1AAAAAAAAAAAAAAD1AAAAAAAAAPYAAAAAAAAAAAAAAPYAAAAAAAAA9wAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADzAAAAAAAAAPMAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8wAAAAAAAADzAAAAAAAAAAAAAAAAAPC/" ], [ 127, @@ -647,7 +647,7 @@ "", null, "AgAAAPMAAAAAAAAA+gAAAAAAAAAAAAAA+gAAAAAAAAD6AAAAAAAAAAQAAABOb25l", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADzAAAAAAAAAPcAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8wAAAAAAAAD3AAAAAAAAAAAAAAAAAPC/" ], [ 133, @@ -655,7 +655,7 @@ "left_delete", null, "AgAAAOoAAAAAAAAA6gAAAAAAAAARAAAAIGRlZmF1bHQ9REVGQVVMVCnpAAAAAAAAAOkAAAAAAAAAAQAAACw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqAAAAAAAAAPsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6gAAAAAAAAD7AAAAAAAAAAAAAAAAAPC/" ], [ 135, @@ -665,7 +665,7 @@ "characters": "," }, "AQAAAOoAAAAAAAAA6wAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqAAAAAAAAAOoAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6gAAAAAAAADqAAAAAAAAAAAAAAAAAPC/" ], [ 136, @@ -675,7 +675,7 @@ "characters": " " }, "AQAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrAAAAAAAAAOsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" ], [ 141, @@ -683,7 +683,7 @@ "paste", null, "AQAAAOsAAAAAAAAACQEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrAAAAAAAAAOsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" ], [ 148, @@ -691,7 +691,7 @@ "paste", null, "AgAAAPIAAAAAAAAA+wAAAAAAAAAAAAAA+wAAAAAAAAD7AAAAAAAAAAgAAABub3RpZmllZA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADyAAAAAAAAAPoAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8gAAAAAAAAD6AAAAAAAAAAAAAAAAAPC/" ], [ 153, @@ -701,7 +701,7 @@ "characters": "," }, "AQAAAAoBAAAAAAAACwEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAKAQAAAAAAAAoBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACgEAAAAAAAAKAQAAAAAAAAAAAAAAAPC/" ], [ 154, @@ -711,7 +711,7 @@ "characters": " " }, "AQAAAAsBAAAAAAAADAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAQAAAAAAAAsBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwEAAAAAAAALAQAAAAAAAAAAAAAAAPC/" ], [ 155, @@ -721,7 +721,7 @@ "contents": "\"$0\"" }, "AQAAAAwBAAAAAAAADgEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAMAQAAAAAAAAwBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAEAAAAAAAAMAQAAAAAAAAAAAAAAAPC/" ], [ 156, @@ -731,7 +731,7 @@ "file": "res://Packages/Default/Delete Left Right.sublime-macro" }, "AgAAAAwBAAAAAAAADAEAAAAAAAABAAAAIgwBAAAAAAAADAEAAAAAAAABAAAAIg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAANAQAAAAAAAA0BAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADQEAAAAAAAANAQAAAAAAAAAAAAAAAPC/" ], [ 157, @@ -741,7 +741,7 @@ "characters": "Field" }, "BQAAAAwBAAAAAAAADQEAAAAAAAAAAAAADQEAAAAAAAAOAQAAAAAAAAAAAAAOAQAAAAAAAA8BAAAAAAAAAAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAMAQAAAAAAAAwBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAEAAAAAAAAMAQAAAAAAAAAAAAAAAPC/" ], [ 158, @@ -751,7 +751,7 @@ "characters": "-" }, "AQAAABEBAAAAAAAAEgEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAARAQAAAAAAABEBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" ], [ 159, @@ -759,7 +759,7 @@ "left_delete", null, "AQAAABEBAAAAAAAAEQEAAAAAAAABAAAALQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAASAQAAAAAAABIBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" ], [ 160, @@ -769,7 +769,7 @@ "contents": "($0)" }, "AQAAABEBAAAAAAAAEwEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAARAQAAAAAAABEBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" ], [ 161, @@ -779,7 +779,7 @@ "contents": "\"$0\"" }, "AQAAABIBAAAAAAAAFAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAASAQAAAAAAABIBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" ], [ 166, @@ -787,7 +787,7 @@ "paste", null, "AQAAABMBAAAAAAAAHgEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAATAQAAAAAAABMBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" ], [ 171, @@ -797,7 +797,7 @@ "characters": "," }, "AQAAACABAAAAAAAAIQEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgAQAAAAAAACABAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIAEAAAAAAAAgAQAAAAAAAAAAAAAAAPC/" ], [ 172, @@ -807,7 +807,7 @@ "characters": " " }, "AQAAACEBAAAAAAAAIgEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAhAQAAAAAAACEBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIQEAAAAAAAAhAQAAAAAAAAAAAAAAAPC/" ], [ 173, @@ -815,7 +815,7 @@ "paste", null, "AQAAACIBAAAAAAAANgEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAiAQAAAAAAACIBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIgEAAAAAAAAiAQAAAAAAAAAAAAAAAPC/" ], [ 176, @@ -825,7 +825,7 @@ "characters": "site" }, "BQAAADABAAAAAAAAMQEAAAAAAAAAAAAAMQEAAAAAAAAxAQAAAAAAAAQAAABuYW1lMQEAAAAAAAAyAQAAAAAAAAAAAAAyAQAAAAAAADMBAAAAAAAAAAAAADMBAAAAAAAANAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA0AQAAAAAAADABAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANAEAAAAAAAAwAQAAAAAAAAAAAAAAAPC/" ], [ 178, @@ -835,7 +835,7 @@ "characters": ";" }, "AQAAADYBAAAAAAAANwEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA2AQAAAAAAADYBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAAPC/" ], [ 179, @@ -843,7 +843,7 @@ "left_delete", null, "AQAAADYBAAAAAAAANgEAAAAAAAABAAAAOw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3AQAAAAAAADcBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" ], [ 180, @@ -853,7 +853,7 @@ "characters": "," }, "AQAAADYBAAAAAAAANwEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA2AQAAAAAAADYBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAAPC/" ], [ 181, @@ -863,7 +863,7 @@ "characters": " " }, "AQAAADcBAAAAAAAAOAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3AQAAAAAAADcBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" ], [ 182, @@ -871,7 +871,7 @@ "paste", null, "AQAAADgBAAAAAAAARwEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA4AQAAAAAAADgBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" ], [ 190, @@ -879,7 +879,7 @@ "paste", null, "AQAAADgBAAAAAAAATAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA4AQAAAAAAADgBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" ], [ 192, @@ -887,7 +887,7 @@ "cut", null, "AQAAAEwBAAAAAAAATAEAAAAAAAAPAAAAYXV0aG9yX2dyYXZhdGFy", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABMAQAAAAAAAFsBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATAEAAAAAAABbAQAAAAAAAAAAAAAAAPC/" ], [ 197, @@ -895,7 +895,7 @@ "paste", null, "AgAAAD8BAAAAAAAATgEAAAAAAAAAAAAATgEAAAAAAABOAQAAAAAAAAsAAABhdXRob3Jfc2l0ZQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA/AQAAAAAAAEoBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAPwEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" ], [ 201, @@ -905,7 +905,7 @@ "characters": "," }, "AQAAADUBAAAAAAAANgEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA1AQAAAAAAADUBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAAPC/" ], [ 202, @@ -915,7 +915,7 @@ "characters": " ef" }, "AwAAADYBAAAAAAAANwEAAAAAAAAAAAAANwEAAAAAAAA4AQAAAAAAAAAAAAA4AQAAAAAAADkBAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA2AQAAAAAAADYBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAAPC/" ], [ 203, @@ -923,7 +923,7 @@ "left_delete", null, "AgAAADgBAAAAAAAAOAEAAAAAAAABAAAAZjcBAAAAAAAANwEAAAAAAAABAAAAZQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA5AQAAAAAAADkBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOQEAAAAAAAA5AQAAAAAAAAAAAAAAAPC/" ], [ 204, @@ -933,7 +933,7 @@ "characters": "default=" }, "CAAAADcBAAAAAAAAOAEAAAAAAAAAAAAAOAEAAAAAAAA5AQAAAAAAAAAAAAA5AQAAAAAAADoBAAAAAAAAAAAAADoBAAAAAAAAOwEAAAAAAAAAAAAAOwEAAAAAAAA8AQAAAAAAAAAAAAA8AQAAAAAAAD0BAAAAAAAAAAAAAD0BAAAAAAAAPgEAAAAAAAAAAAAAPgEAAAAAAAA/AQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA3AQAAAAAAADcBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" ], [ 205, @@ -943,7 +943,7 @@ "contents": "\"$0\"" }, "AQAAAD8BAAAAAAAAQQEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA/AQAAAAAAAD8BAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAPwEAAAAAAAA/AQAAAAAAAAAAAAAAAPC/" ], [ 208, @@ -951,7 +951,7 @@ "trim_trailing_white_space", null, "AQAAAFwBAAAAAAAAXAEAAAAAAAABAAAAIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABBAQAAAAAAAEEBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQQEAAAAAAABBAQAAAAAAAAAAAAAAAPC/" ], [ 219, @@ -961,7 +961,7 @@ "characters": "\ndef" }, "BAAAAFcAAAAAAAAAWAAAAAAAAAAAAAAAWAAAAAAAAABZAAAAAAAAAAAAAABZAAAAAAAAAFoAAAAAAAAAAAAAAFoAAAAAAAAAWwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABXAAAAAAAAAFcAAAAAAAAAAAAAAACAZkA" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAVwAAAAAAAABXAAAAAAAAAAAAAAAAgGZA" ], [ 220, @@ -971,7 +971,7 @@ "characters": " _" }, "AgAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABbAAAAAAAAAFsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWwAAAAAAAABbAAAAAAAAAAAAAAAAAPC/" ], [ 221, @@ -981,7 +981,7 @@ "characters": "null" }, "BAAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdAAAAAAAAAF0AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" ], [ 222, @@ -989,7 +989,7 @@ "left_delete", null, "BAAAAGAAAAAAAAAAYAAAAAAAAAABAAAAbF8AAAAAAAAAXwAAAAAAAAABAAAAbF4AAAAAAAAAXgAAAAAAAAABAAAAdV0AAAAAAAAAXQAAAAAAAAABAAAAbg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABhAAAAAAAAAGEAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAYQAAAAAAAABhAAAAAAAAAAAAAAAAAPC/" ], [ 223, @@ -999,7 +999,7 @@ "characters": "empty_s" }, "BwAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdAAAAAAAAAF0AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" ], [ 224, @@ -1009,7 +1009,7 @@ "characters": "tring" }, "BQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABpAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkAAAAAAAAAGQAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAPC/" ], [ 225, @@ -1019,7 +1019,7 @@ "contents": "($0)" }, "AQAAAGkAAAAAAAAAawAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABpAAAAAAAAAGkAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" ], [ 227, @@ -1029,7 +1029,7 @@ "characters": ":" }, "AQAAAGsAAAAAAAAAbAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABrAAAAAAAAAGsAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" ], [ 228, @@ -1039,7 +1039,7 @@ "characters": "\nreturn" }, "CAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABxAAAAAAAAAAAAAABxAAAAAAAAAHIAAAAAAAAAAAAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABsAAAAAAAAAGwAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbAAAAAAAAABsAAAAAAAAAAAAAAAAAPC/" ], [ 229, @@ -1049,7 +1049,7 @@ "characters": " " }, "AQAAAHcAAAAAAAAAeAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB3AAAAAAAAAHcAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdwAAAAAAAAB3AAAAAAAAAAAAAAAAAPC/" ], [ 230, @@ -1059,7 +1059,7 @@ "contents": "\"$0\"" }, "AQAAAHgAAAAAAAAAegAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB4AAAAAAAAAHgAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAeAAAAAAAAAB4AAAAAAAAAAAAAAAAAPC/" ], [ 232, @@ -1069,7 +1069,7 @@ "characters": "\n" }, "AgAAAHoAAAAAAAAAewAAAAAAAAAAAAAAewAAAAAAAAB/AAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB6AAAAAAAAAHoAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAegAAAAAAAAB6AAAAAAAAAAAAAAAAAPC/" ], [ 234, @@ -1077,7 +1077,7 @@ "trim_trailing_white_space", null, "AQAAAHsAAAAAAAAAewAAAAAAAAAEAAAAICAgIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AAAAAAAAAH8AAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" ], [ 242, @@ -1087,7 +1087,7 @@ "characters": "\n" }, "BAAAAPAAAAAAAAAA8QAAAAAAAAAAAAAA8QAAAAAAAAD1AAAAAAAAAAAAAADxAAAAAAAAAPEAAAAAAAAABAAAACAgICDxAAAAAAAAAPkAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADwAAAAAAAAAPAAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8AAAAAAAAADwAAAAAAAAAAAAAAAAAPC/" ], [ 245, @@ -1097,7 +1097,7 @@ "characters": "\n" }, "AgAAADkBAAAAAAAAOgEAAAAAAAAAAAAAOgEAAAAAAABCAQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA5AQAAAAAAADkBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOQEAAAAAAAA5AQAAAAAAAAAAAAAAAPC/" ], [ 250, @@ -1105,7 +1105,7 @@ "paste", null, "AgAAAHUBAAAAAAAAggEAAAAAAAAAAAAAggEAAAAAAACCAQAAAAAAAAIAAAAiIg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB1AQAAAAAAAHcBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdQEAAAAAAAB3AQAAAAAAAAAAAAAAAPC/" ], [ 252, @@ -1113,7 +1113,7 @@ "trim_trailing_white_space", null, "AgAAADgBAAAAAAAAOAEAAAAAAAABAAAAIO8AAAAAAAAA7wAAAAAAAAABAAAAIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAQAAAAAAAIIBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAggEAAAAAAACCAQAAAAAAAAAAAAAAAPC/" ], [ 269, @@ -1123,7 +1123,7 @@ "characters": "," }, "AQAAAJoBAAAAAAAAmwEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAQAAAAAAAJoBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAmgEAAAAAAACaAQAAAAAAAAAAAAAAAPC/" ], [ 270, @@ -1133,7 +1133,7 @@ "characters": " " }, "AQAAAJsBAAAAAAAAnAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAQAAAAAAAJsBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAmwEAAAAAAACbAQAAAAAAAAAAAAAAAPC/" ], [ 271, @@ -1141,7 +1141,7 @@ "paste", null, "AQAAAJwBAAAAAAAAsQEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAQAAAAAAAJwBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnAEAAAAAAACcAQAAAAAAAAAAAAAAAPC/" ], [ 273, @@ -1151,7 +1151,7 @@ "characters": "," }, "AQAAALIBAAAAAAAAswEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACyAQAAAAAAALIBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsgEAAAAAAACyAQAAAAAAAAAAAAAAAPC/" ], [ 274, @@ -1161,7 +1161,7 @@ "characters": "\n" }, "AgAAALMBAAAAAAAAtAEAAAAAAAAAAAAAtAEAAAAAAAC8AQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACzAQAAAAAAALMBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAswEAAAAAAACzAQAAAAAAAAAAAAAAAPC/" ], [ 275, @@ -1171,7 +1171,7 @@ "characters": "Field" }, "BQAAALwBAAAAAAAAvQEAAAAAAAAAAAAAvQEAAAAAAAC+AQAAAAAAAAAAAAC+AQAAAAAAAL8BAAAAAAAAAAAAAL8BAAAAAAAAwAEAAAAAAAAAAAAAwAEAAAAAAADBAQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC8AQAAAAAAALwBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvAEAAAAAAAC8AQAAAAAAAAAAAAAAAPC/" ], [ 276, @@ -1181,7 +1181,7 @@ "contents": "($0)" }, "AQAAAMEBAAAAAAAAwwEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADBAQAAAAAAAMEBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwQEAAAAAAADBAQAAAAAAAAAAAAAAAPC/" ], [ 277, @@ -1191,7 +1191,7 @@ "contents": "\"$0\"" }, "AQAAAMIBAAAAAAAAxAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADCAQAAAAAAAMIBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwgEAAAAAAADCAQAAAAAAAAAAAAAAAPC/" ], [ 278, @@ -1201,7 +1201,7 @@ "characters": "content" }, "BwAAAMMBAAAAAAAAxAEAAAAAAAAAAAAAxAEAAAAAAADFAQAAAAAAAAAAAADFAQAAAAAAAMYBAAAAAAAAAAAAAMYBAAAAAAAAxwEAAAAAAAAAAAAAxwEAAAAAAADIAQAAAAAAAAAAAADIAQAAAAAAAMkBAAAAAAAAAAAAAMkBAAAAAAAAygEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADDAQAAAAAAAMMBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwwEAAAAAAADDAQAAAAAAAAAAAAAAAPC/" ], [ 280, @@ -1211,7 +1211,7 @@ "characters": "," }, "AQAAAMsBAAAAAAAAzAEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADLAQAAAAAAAMsBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAywEAAAAAAADLAQAAAAAAAAAAAAAAAPC/" ], [ 281, @@ -1221,7 +1221,7 @@ "characters": " type\"\"" }, "BwAAAMwBAAAAAAAAzQEAAAAAAAAAAAAAzQEAAAAAAADOAQAAAAAAAAAAAADOAQAAAAAAAM8BAAAAAAAAAAAAAM8BAAAAAAAA0AEAAAAAAAAAAAAA0AEAAAAAAADRAQAAAAAAAAAAAADRAQAAAAAAANIBAAAAAAAAAAAAANIBAAAAAAAA0wEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADMAQAAAAAAAMwBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzAEAAAAAAADMAQAAAAAAAAAAAAAAAPC/" ], [ 283, @@ -1231,7 +1231,7 @@ "characters": "=" }, "AQAAANEBAAAAAAAA0gEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADRAQAAAAAAANEBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0QEAAAAAAADRAQAAAAAAAAAAAAAAAPC/" ], [ 287, @@ -1241,7 +1241,7 @@ "characters": ")" }, "AQAAANUBAAAAAAAA1gEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADVAQAAAAAAANUBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA1QEAAAAAAADVAQAAAAAAAAAAAAAAAPC/" ], [ 290, @@ -1251,7 +1251,7 @@ "characters": "text" }, "BAAAANMBAAAAAAAA1AEAAAAAAAAAAAAA1AEAAAAAAADVAQAAAAAAAAAAAADVAQAAAAAAANYBAAAAAAAAAAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTAQAAAAAAANMBAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0wEAAAAAAADTAQAAAAAAAAAAAAAAAPC/" ], [ 305, @@ -1261,7 +1261,7 @@ "characters": "confiu" }, "BwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACBAAAAAAAAAAUAAABzZXR1cIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAACDAAAAAAAAAIQAAAAAAAAAAAAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhQAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" ], [ 306, @@ -1269,7 +1269,7 @@ "left_delete", null, "AQAAAIUAAAAAAAAAhQAAAAAAAAABAAAAdQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACGAAAAAAAAAIYAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" ], [ 307, @@ -1279,7 +1279,7 @@ "characters": "gure" }, "BAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAiQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFAAAAAAAAAIUAAAAAAAAAAAAAAAAA8L8" + "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" ], [ 5, @@ -1287,7 +1287,7 @@ "left_delete", null, "AQAAAG0BAAAAAAAAbQEAAAAAAAAXAAAALCBkZWZhdWx0PV9lbXB0eV9zdHJpbmc", - "AQAAAAAAAAABAAAAbQEAAAAAAACEAQAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG0BAAAAAAAAhAEAAAAAAAAAAAAAAADwvw" ], [ 8, @@ -1295,7 +1295,7 @@ "left_delete", null, "AQAAAIcBAAAAAAAAhwEAAAAAAAAXAAAALCBkZWZhdWx0PV9lbXB0eV9zdHJpbmc", - "AQAAAAAAAAABAAAAhwEAAAAAAACeAQAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcBAAAAAAAAngEAAAAAAAAAAAAAAADwvw" ], [ 13, @@ -1303,7 +1303,7 @@ "left_delete", null, "AwAAAFgAAAAAAAAAWAAAAAAAAAAiAAAAZGVmIF9lbXB0eV9zdHJpbmcoKToKICAgIHJldHVybiAiIlcAAAAAAAAAVwAAAAAAAAABAAAAClYAAAAAAAAAVgAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAegAAAAAAAABYAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHoAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" ], [ 20, @@ -1313,7 +1313,7 @@ "characters": "time" }, "BAAAAMwAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADOAAAAAAAAAAAAAADOAAAAAAAAAM8AAAAAAAAAAAAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMwAAAAAAAAAzAAAAAAAAAAAAAAAAADwvw" ], [ 23, @@ -1323,7 +1323,7 @@ "characters": "time" }, "BAAAABgBAAAAAAAAGQEAAAAAAAAAAAAAGQEAAAAAAAAaAQAAAAAAAAAAAAAaAQAAAAAAABsBAAAAAAAAAAAAABsBAAAAAAAAHAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGAEAAAAAAAAYAQAAAAAAAAAAAAAAIINA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABgBAAAAAAAAGAEAAAAAAAAAAAAAACCDQA" ], [ 26, @@ -1333,7 +1333,7 @@ "characters": "time" }, "BAAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAAAAAAD6AAAAAAAAAPsAAAAAAAAAAAAAAPsAAAAAAAAA/AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPgAAAAAAAAA+AAAAAAAAAAAAAAAAADwvw" ], [ 29, @@ -1341,7 +1341,7 @@ "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAACZAQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpkYiA9IE5vbmUKCmRlZiBjb25maWd1cmUoZGJfdXJpKToKICAgIGRiID0gREFMKGRiX3VyaSkKICAgIGRiLmRlZmluZV90YWJsZSgiY29tbWVudCIsIEZpZWxkKCJ1cmwiKSwgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJub3RpZmllZCIsIHR5cGU9ImRhdGV0aW1lIiksRmllbGQoInB1Ymxpc2hlZCIsIHR5cGU9ImRhdGV0aW1lIiksCiAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLCBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgRmllbGQoImNvbnRlbnQiLCB0eXBlPSJ0ZXh0IikpCgAAAAAAAAAA0gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/AAAAAAAAAD8AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPwAAAAAAAAA/AAAAAAAAAAAAAAAAADwvw" ], [ 36, @@ -1351,7 +1351,7 @@ "characters": "dal" }, "BAAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABTAAAAAAAAAAQAAABOb25lUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" ], [ 37, @@ -1359,7 +1359,7 @@ "left_delete", null, "AwAAAFQAAAAAAAAAVAAAAAAAAAABAAAAbFMAAAAAAAAAUwAAAAAAAAABAAAAYVIAAAAAAAAAUgAAAAAAAAABAAAAZA", - "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" ], [ 38, @@ -1369,7 +1369,7 @@ "characters": "dal" }, "AwAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUgAAAAAAAABSAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAUgAAAAAAAAAAAAAAAADwvw" ], [ 39, @@ -1377,7 +1377,7 @@ "left_delete", null, "AwAAAFQAAAAAAAAAVAAAAAAAAAABAAAAbFMAAAAAAAAAUwAAAAAAAAABAAAAYVIAAAAAAAAAUgAAAAAAAAABAAAAZA", - "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" ], [ 40, @@ -1387,7 +1387,7 @@ "characters": "DAL)" }, "BAAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAFUAAAAAAAAAVgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUgAAAAAAAABSAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAUgAAAAAAAAAAAAAAAADwvw" ], [ 41, @@ -1395,7 +1395,7 @@ "left_delete", null, "AQAAAFUAAAAAAAAAVQAAAAAAAAABAAAAKQ", - "AQAAAAAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" ], [ 42, @@ -1405,7 +1405,7 @@ "contents": "($0)" }, "AQAAAFUAAAAAAAAAVwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" ], [ 56, @@ -1415,7 +1415,7 @@ "characters": "\ndb." }, "BQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACKAAAAAAAAAAAAAACKAAAAAAAAAIsAAAAAAAAAAAAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAjAAAAAAAAACNAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" ], [ 57, @@ -1425,7 +1425,7 @@ "characters": "c" }, "AQAAAI0AAAAAAAAAjgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0AAAAAAAAAjQAAAAAAAAAAAAAAAADwvw" ], [ 58, @@ -1435,7 +1435,7 @@ "characters": "on" }, "AgAAAI4AAAAAAAAAjwAAAAAAAAAAAAAAjwAAAAAAAACQAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjgAAAAAAAACOAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI4AAAAAAAAAjgAAAAAAAAAAAAAAAADwvw" ], [ 59, @@ -1443,7 +1443,7 @@ "left_delete", null, "AgAAAI8AAAAAAAAAjwAAAAAAAAABAAAAbo4AAAAAAAAAjgAAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJAAAAAAAAAAkAAAAAAAAAAAAAAAAADwvw" ], [ 62, @@ -1451,7 +1451,7 @@ "left_delete", null, "AQAAAE4AAAAAAAAATgAAAAAAAAABAAAAYg", - "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" ], [ 63, @@ -1461,7 +1461,7 @@ "characters": "atabase" }, "BwAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATgAAAAAAAABOAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAATgAAAAAAAAAAAAAAAADwvw" ], [ 71, @@ -1469,7 +1469,7 @@ "paste", null, "AgAAAHsAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACDAAAAAAAAAAIAAABkYg", - "AQAAAAAAAAABAAAAewAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsAAAAAAAAAfQAAAAAAAAAAAAAAAADwvw" ], [ 75, @@ -1477,7 +1477,7 @@ "paste", null, "AgAAAJ8AAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACnAAAAAAAAAAIAAABkYg", - "AQAAAAAAAAABAAAAoQAAAAAAAACfAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKEAAAAAAAAAnwAAAAAAAAAAAAAAAADwvw" ], [ 79, @@ -1487,7 +1487,7 @@ "characters": "None" }, "BQAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABZAAAAAAAAAAUAAABEQUwoKVkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWAAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAXQAAAAAAAAAAAAAAAADwvw" ], [ 83, @@ -1497,7 +1497,7 @@ "characters": "db_dal" }, "BwAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABOAAAAAAAAAAgAAABkYXRhYmFzZU4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAATQAAAAAAAAAAAAAAAADwvw" ], [ 94, @@ -1505,7 +1505,7 @@ "paste", null, "AgAAAHgAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAB+AAAAAAAAAAgAAABkYXRhYmFzZQ", - "AQAAAAAAAAABAAAAeAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHgAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" ], [ 98, @@ -1513,7 +1513,7 @@ "right_delete", null, "AQAAAJEAAAAAAAAAkQAAAAAAAAAEAAAAZGIuYw", - "AQAAAAAAAAABAAAAlQAAAAAAAACRAAAAAAAAAAAAAAAAAEJA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAkQAAAAAAAAAAAAAAAABCQA" ], [ 100, @@ -1521,7 +1521,7 @@ "left_delete", null, "AQAAAIwAAAAAAAAAjAAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0AAAAAAAAAjQAAAAAAAAAAAAAAAAAAAA" ], [ 104, @@ -1529,7 +1529,7 @@ "paste", null, "AgAAAJUAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACbAAAAAAAAAAgAAABkYXRhYmFzZQ", - "AQAAAAAAAAABAAAAlQAAAAAAAACdAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAnQAAAAAAAAAAAAAAAADwvw" ], [ 106, @@ -1537,7 +1537,7 @@ "trim_trailing_white_space", null, "AQAAAIwAAAAAAAAAjAAAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAmwAAAAAAAACbAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJsAAAAAAAAAmwAAAAAAAAAAAAAAAADwvw" ], [ 114, @@ -1547,7 +1547,7 @@ "characters": "\ndb_dal." }, "CQAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHMAAAAAAAAAcwAAAAAAAAAAAAAAAADwvw" ], [ 122, @@ -1557,7 +1557,7 @@ "characters": "DAL" }, "BAAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABXAAAAAAAAAAQAAABOb25lVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVgAAAAAAAABaAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAWgAAAAAAAAAAAAAAAADwvw" ], [ 123, @@ -1567,7 +1567,7 @@ "contents": "($0)" }, "AQAAAFkAAAAAAAAAWwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWQAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" ], [ 130, @@ -1575,7 +1575,7 @@ "left_delete", null, "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" ], [ 131, @@ -1585,7 +1585,7 @@ "characters": "." }, "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 135, @@ -1593,7 +1593,7 @@ "right_delete", null, "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAgAAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 136, @@ -1603,7 +1603,7 @@ "characters": "." }, "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 142, @@ -1613,7 +1613,7 @@ "characters": "#" }, "AQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" ], [ 152, @@ -1621,7 +1621,7 @@ "left_delete", null, "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" ], [ 153, @@ -1631,7 +1631,7 @@ "characters": "." }, "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 154, @@ -1641,7 +1641,7 @@ "characters": "set" }, "AwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" ], [ 155, @@ -1649,7 +1649,7 @@ "left_delete", null, "AwAAAIIAAAAAAAAAggAAAAAAAAABAAAAdIEAAAAAAAAAgQAAAAAAAAABAAAAZYAAAAAAAAAAgAAAAAAAAAABAAAAcw", - "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAgwAAAAAAAAAAAAAAAADwvw" ], [ 156, @@ -1659,7 +1659,7 @@ "characters": "ur" }, "AgAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" ], [ 157, @@ -1667,7 +1667,7 @@ "left_delete", null, "AwAAAIEAAAAAAAAAgQAAAAAAAAABAAAAcoAAAAAAAAAAgAAAAAAAAAABAAAAdX8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAggAAAAAAAACCAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIIAAAAAAAAAggAAAAAAAAAAAAAAAADwvw" ], [ 158, @@ -1677,7 +1677,7 @@ "characters": ".co" }, "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 159, @@ -1687,7 +1687,7 @@ "characters": "n" }, "AQAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAggAAAAAAAACCAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIIAAAAAAAAAggAAAAAAAAAAAAAAAADwvw" ], [ 171, @@ -1697,7 +1697,7 @@ "characters": "None" }, "BAAAAFoAAAAAAAAAWwAAAAAAAAAAAAAAWwAAAAAAAABcAAAAAAAAAAAAAABcAAAAAAAAAF0AAAAAAAAAAAAAAF0AAAAAAAAAXgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWgAAAAAAAABaAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoAAAAAAAAAWgAAAAAAAAAAAAAAAADwvw" ], [ 181, @@ -1705,7 +1705,7 @@ "left_delete", null, "AQAAAFoAAAAAAAAAWgAAAAAAAAAEAAAATm9uZQ", - "AQAAAAAAAAABAAAAWgAAAAAAAABeAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoAAAAAAAAAXgAAAAAAAAAAAAAAAADwvw" ], [ 189, @@ -1715,7 +1715,7 @@ "characters": "global" }, "BwAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB6AAAAAAAAAAoAAABkYl9kYWwuY29uegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgwAAAAAAAAB5AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAeQAAAAAAAAAAAAAAAADwvw" ], [ 190, @@ -1725,7 +1725,7 @@ "characters": " db_dal" }, "BwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 193, @@ -1733,7 +1733,7 @@ "right_delete", null, "AQAAAIsAAAAAAAAAiwAAAAAAAAABAAAAIw", - "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAEJA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsAAAAAAAAAiwAAAAAAAAAAAAAAAABCQA" ], [ 203, @@ -1741,7 +1741,7 @@ "right_delete", null, "AwAAAE0AAAAAAAAATQAAAAAAAAAPAAAAZGJfZGFsID0gREFMKCkKTQAAAAAAAABNAAAAAAAAAAEAAAAKTQAAAAAAAABNAAAAAAAAAAEAAAAK", - "AQAAAAAAAAABAAAAXAAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFwAAAAAAAAATQAAAAAAAAAAAAAAAADwvw" ], [ 206, @@ -1749,7 +1749,7 @@ "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAADgAQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpkZWYgY29uZmlndXJlKGRiX3VyaSk6CiAgICBnbG9iYWwgZGJfZGFsCiAgICBkYl9kYWwgPSBEQUwoZGJfdXJpKQogICAgZGJfZGFsLmRlZmluZV90YWJsZSgKICAgICAgICAiY29tbWVudCIsCiAgICAgICAgRmllbGQoInVybCIpLAogICAgICAgIEZpZWxkKCJjcmVhdGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJwdWJsaXNoZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3JfbmFtZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3JfZ3JhdmF0YXIiKSwKICAgICAgICBGaWVsZCgiY29udGVudCIsIHR5cGU9InRleHQiKSwKICAgICkKAAAAAAAAAADhAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0AAAAAAAAATQAAAAAAAAAAAAAAAADwvw" ], [ 214, @@ -1759,7 +1759,7 @@ "characters": "db" }, "AgAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0AAAAAAAAATQAAAAAAAAAAAAAAAADwvw" ], [ 215, @@ -1769,7 +1769,7 @@ "characters": " =" }, "AgAAAE8AAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAABRAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" ], [ 216, @@ -1777,7 +1777,7 @@ "left_delete", null, "AwAAAFAAAAAAAAAAUAAAAAAAAAABAAAAPU8AAAAAAAAATwAAAAAAAAABAAAAIE4AAAAAAAAATgAAAAAAAAABAAAAYg", - "AQAAAAAAAAABAAAAUQAAAAAAAABRAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFEAAAAAAAAAUQAAAAAAAAAAAAAAAADwvw" ], [ 217, @@ -1787,7 +1787,7 @@ "characters": "a" }, "AQAAAE4AAAAAAAAATwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATgAAAAAAAABOAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAATgAAAAAAAAAAAAAAAADwvw" ], [ 218, @@ -1795,7 +1795,7 @@ "left_delete", null, "AQAAAE4AAAAAAAAATgAAAAAAAAABAAAAYQ", - "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" ], [ 219, @@ -1805,7 +1805,7 @@ "characters": "atabase" }, "BwAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATgAAAAAAAABOAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAATgAAAAAAAAAAAAAAAADwvw" ], [ 220, @@ -1815,7 +1815,7 @@ "characters": " =" }, "AgAAAFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVQAAAAAAAABVAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" ], [ 221, @@ -1825,7 +1825,7 @@ "characters": " " }, "AQAAAFcAAAAAAAAAWAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVwAAAAAAAABXAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFcAAAAAAAAAVwAAAAAAAAAAAAAAAADwvw" ], [ 223, @@ -1835,7 +1835,7 @@ "characters": "Databas" }, "BwAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAAAAAAF4AAAAAAAAAXwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWAAAAAAAAABYAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" ], [ 224, @@ -1845,7 +1845,7 @@ "characters": "e" }, "AQAAAF8AAAAAAAAAYAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXwAAAAAAAABfAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8AAAAAAAAAXwAAAAAAAAAAAAAAAADwvw" ], [ 225, @@ -1855,7 +1855,7 @@ "contents": "($0)" }, "AQAAAGAAAAAAAAAAYgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGAAAAAAAAAAYAAAAAAAAAAAAAAAAADwvw" ], [ 227, @@ -1865,7 +1865,7 @@ "characters": "\n" }, "AQAAAGIAAAAAAAAAYwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYgAAAAAAAABiAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGIAAAAAAAAAYgAAAAAAAAAAAAAAAADwvw" ], [ 230, @@ -1875,7 +1875,7 @@ "characters": "\nclass" }, "BgAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAGYAAAAAAAAAZwAAAAAAAAAAAAAAZwAAAAAAAABoAAAAAAAAAAAAAABoAAAAAAAAAGkAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGMAAAAAAAAAYwAAAAAAAAAAAAAAAAAAAA" ], [ 231, @@ -1885,7 +1885,7 @@ "characters": " Database" }, "CQAAAGkAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAG8AAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAABxAAAAAAAAAAAAAABxAAAAAAAAAHIAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGkAAAAAAAAAaQAAAAAAAAAAAAAAAADwvw" ], [ 232, @@ -1895,7 +1895,7 @@ "contents": "($0)" }, "AQAAAHIAAAAAAAAAdAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcgAAAAAAAAByAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHIAAAAAAAAAcgAAAAAAAAAAAAAAAADwvw" ], [ 234, @@ -1903,7 +1903,7 @@ "left_delete", null, "AgAAAHMAAAAAAAAAcwAAAAAAAAABAAAAKXIAAAAAAAAAcgAAAAAAAAABAAAAKA", - "AQAAAAAAAAABAAAAdAAAAAAAAAB0AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHQAAAAAAAAAdAAAAAAAAAAAAAAAAADwvw" ], [ 235, @@ -1913,7 +1913,7 @@ "characters": ":" }, "AQAAAHIAAAAAAAAAcwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcgAAAAAAAAByAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHIAAAAAAAAAcgAAAAAAAAAAAAAAAADwvw" ], [ 236, @@ -1923,7 +1923,7 @@ "characters": "\n" }, "AgAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHMAAAAAAAAAcwAAAAAAAAAAAAAAAADwvw" ], [ 243, @@ -1931,7 +1931,7 @@ "indent", null, "DgAAAHkAAAAAAAAAfQAAAAAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAAAAAACqAAAAAAAAAK4AAAAAAAAAAAAAAMcAAAAAAAAAywAAAAAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAAAAAAD7AAAAAAAAAP8AAAAAAAAAAAAAABUBAAAAAAAAGQEAAAAAAAAAAAAARAEAAAAAAABIAQAAAAAAAAAAAAB0AQAAAAAAAHgBAAAAAAAAAAAAAKUBAAAAAAAAqQEAAAAAAAAAAAAAxwEAAAAAAADLAQAAAAAAAAAAAADpAQAAAAAAAO0BAAAAAAAAAAAAAA8CAAAAAAAAEwIAAAAAAAAAAAAAOgIAAAAAAAA+AgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAeQAAAAAAAAAMAgAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHkAAAAAAAAADAIAAAAAAAAAAAAAAAAAAA" ], [ 250, @@ -1941,7 +1941,7 @@ "characters": "self," }, "BgAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAdAAAAAAAAAB0AAAAAAAAAAQAAAAgICAgiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsAAAAAAAAAiwAAAAAAAAAAAAAAAADwvw" ], [ 254, @@ -1951,7 +1951,7 @@ "characters": "\n\ndef" }, "CAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAfQAAAAAAAAAAAAAAdAAAAAAAAAB0AAAAAAAAAAQAAAAgICAgeQAAAAAAAAB6AAAAAAAAAAAAAAB6AAAAAAAAAHsAAAAAAAAAAAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHMAAAAAAAAAcwAAAAAAAAAAAAAAAADwvw" ], [ 255, @@ -1961,7 +1961,7 @@ "characters": " __init" }, "BwAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHwAAAAAAAAAfAAAAAAAAAAAAAAAAADwvw" ], [ 256, @@ -1971,7 +1971,7 @@ "characters": "__" }, "AgAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAgwAAAAAAAAAAAAAAAADwvw" ], [ 257, @@ -1981,7 +1981,7 @@ "contents": "($0)" }, "AQAAAIUAAAAAAAAAhwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" ], [ 259, @@ -1991,7 +1991,7 @@ "characters": ":" }, "AQAAAIcAAAAAAAAAiAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcAAAAAAAAAhwAAAAAAAAAAAAAAAADwvw" ], [ 260, @@ -2001,7 +2001,7 @@ "characters": "\n" }, "AwAAAIgAAAAAAAAAiQAAAAAAAAAAAAAAiQAAAAAAAACNAAAAAAAAAAAAAACNAAAAAAAAAJEAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIgAAAAAAAAAiAAAAAAAAAAAAAAAAADwvw" ], [ 261, @@ -2011,7 +2011,7 @@ "characters": "slef" }, "BAAAAJEAAAAAAAAAkgAAAAAAAAAAAAAAkgAAAAAAAACTAAAAAAAAAAAAAACTAAAAAAAAAJQAAAAAAAAAAAAAAJQAAAAAAAAAlQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJEAAAAAAAAAkQAAAAAAAAAAAAAAAADwvw" ], [ 262, @@ -2019,7 +2019,7 @@ "left_delete", null, "AwAAAJQAAAAAAAAAlAAAAAAAAAABAAAAZpMAAAAAAAAAkwAAAAAAAAABAAAAZZIAAAAAAAAAkgAAAAAAAAABAAAAbA", - "AQAAAAAAAAABAAAAlQAAAAAAAACVAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAlQAAAAAAAAAAAAAAAADwvw" ], [ 263, @@ -2029,7 +2029,7 @@ "characters": "elf" }, "AwAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJUAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkgAAAAAAAACSAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJIAAAAAAAAAkgAAAAAAAAAAAAAAAADwvw" ], [ 267, @@ -2037,7 +2037,7 @@ "right_delete", null, "AQAAAHUAAAAAAAAAdQAAAAAAAAAhAAAAICAgIGRlZiBfX2luaXRfXygpOgogICAgICAgIHNlbGYK", - "AQAAAAAAAAABAAAAdQAAAAAAAACWAAAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHUAAAAAAAAAlgAAAAAAAAAAAAAAAAAAAA" ], [ 270, @@ -2045,7 +2045,7 @@ "reindent", null, "AQAAAHUAAAAAAAAAeQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdQAAAAAAAAB1AAAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHUAAAAAAAAAdQAAAAAAAAAAAAAAAAAAAA" ], [ 271, @@ -2055,7 +2055,7 @@ "characters": "db" }, "AgAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAeQAAAAAAAAB5AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHkAAAAAAAAAeQAAAAAAAAAAAAAAAADwvw" ], [ 272, @@ -2065,7 +2065,7 @@ "characters": " =" }, "AgAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsAAAAAAAAAewAAAAAAAAAAAAAAAADwvw" ], [ 273, @@ -2073,7 +2073,7 @@ "left_delete", null, "AgAAAHwAAAAAAAAAfAAAAAAAAAABAAAAPXsAAAAAAAAAewAAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAfQAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH0AAAAAAAAAfQAAAAAAAAAAAAAAAADwvw" ], [ 274, @@ -2083,7 +2083,7 @@ "characters": "_dal" }, "BAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsAAAAAAAAAewAAAAAAAAAAAAAAAADwvw" ], [ 275, @@ -2091,7 +2091,7 @@ "left_delete", null, "AQAAAH4AAAAAAAAAfgAAAAAAAAABAAAAbA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 276, @@ -2101,7 +2101,7 @@ "characters": "l" }, "AQAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfgAAAAAAAAB+AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH4AAAAAAAAAfgAAAAAAAAAAAAAAAADwvw" ], [ 277, @@ -2115,7 +2115,7 @@ "trigger": "db_dal" }, "AgAAAHkAAAAAAAAAeQAAAAAAAAAGAAAAZGJfZGFseQAAAAAAAAB/AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 278, @@ -2125,7 +2125,7 @@ "characters": "\n" }, "AgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACEAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 281, @@ -2135,7 +2135,7 @@ "characters": " =" }, "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAAACBAAAAAAAAAAQAAAAgICAggAAAAAAAAACBAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" ], [ 282, @@ -2145,7 +2145,7 @@ "characters": " None" }, "BQAAAIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAACDAAAAAAAAAIQAAAAAAAAAAAAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgQAAAAAAAACBAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIEAAAAAAAAAgQAAAAAAAAAAAAAAAADwvw" ], [ 291, @@ -2153,7 +2153,7 @@ "right_delete", null, "AQAAALAAAAAAAAAAsAAAAAAAAAANAAAAZ2xvYmFsIGRiX2RhbA", - "AQAAAAAAAAABAAAAsAAAAAAAAAC9AAAAAAAAAP///////+9/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALAAAAAAAAAAvQAAAAAAAAD////////vfw" ], [ 293, @@ -2161,7 +2161,7 @@ "left_delete", null, "AQAAAKcAAAAAAAAApwAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAqAAAAAAAAACoAAAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKgAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAA" ], [ 296, @@ -2171,7 +2171,7 @@ "characters": "sl" }, "AgAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAuAAAAAAAAAC4AAAAAAAAAAAAAAAAAFJA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAABSQA" ], [ 297, @@ -2179,7 +2179,7 @@ "left_delete", null, "AQAAALkAAAAAAAAAuQAAAAAAAAABAAAAbA", - "AQAAAAAAAAABAAAAugAAAAAAAAC6AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALoAAAAAAAAAugAAAAAAAAAAAAAAAADwvw" ], [ 298, @@ -2189,7 +2189,7 @@ "characters": "elf." }, "BAAAALkAAAAAAAAAugAAAAAAAAAAAAAAugAAAAAAAAC7AAAAAAAAAAAAAAC7AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAuQAAAAAAAAC5AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALkAAAAAAAAAuQAAAAAAAAAAAAAAAADwvw" ], [ 301, @@ -2199,7 +2199,7 @@ "characters": "self." }, "BQAAANoAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADcAAAAAAAAAAAAAADcAAAAAAAAAN0AAAAAAAAAAAAAAN0AAAAAAAAA3gAAAAAAAAAAAAAA3gAAAAAAAADfAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2gAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANoAAAAAAAAA2gAAAAAAAAAAAAAAAADwvw" ], [ 303, @@ -2207,7 +2207,7 @@ "trim_trailing_white_space", null, "AQAAAKcAAAAAAAAApwAAAAAAAAAIAAAAICAgICAgICA", - "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAN8AAAAAAAAA3wAAAAAAAAAAAAAAAADwvw" ], [ 309, @@ -2215,7 +2215,7 @@ "cut", null, "AQAAAE0AAAAAAAAATQAAAAAAAAAVAAAAZGF0YWJhc2UgPSBEYXRhYmFzZSgp", - "AQAAAAAAAAABAAAAYgAAAAAAAABNAAAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGIAAAAAAAAATQAAAAAAAAAAAAAAAAAAAA" ], [ 310, @@ -2223,7 +2223,7 @@ "right_delete", null, "AgAAAE0AAAAAAAAATQAAAAAAAAABAAAACk0AAAAAAAAATQAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0AAAAAAAAATQAAAAAAAAAAAAAAAADwvw" ], [ 316, @@ -2233,7 +2233,7 @@ "characters": "\n" }, "AQAAADUCAAAAAAAANgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAAAAA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADUCAAAAAAAANQIAAAAAAAAAAAAAAAAAAA" ], [ 317, @@ -2241,7 +2241,7 @@ "paste", null, "AQAAADYCAAAAAAAASwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANgIAAAAAAAA2AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADYCAAAAAAAANgIAAAAAAAAAAAAAAADwvw" ], [ 321, @@ -2249,7 +2249,7 @@ "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAABLAgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpjbGFzcyBEYXRhYmFzZToKCiAgICBkYl9kYWwgPSBOb25lCgogICAgZGVmIGNvbmZpZ3VyZShzZWxmLGRiX3VyaSk6CiAgICAgICAgc2VsZi5kYl9kYWwgPSBEQUwoZGJfdXJpKQogICAgICAgIHNlbGYuZGJfZGFsLmRlZmluZV90YWJsZSgKICAgICAgICAgICAgImNvbW1lbnQiLAogICAgICAgICAgICBGaWVsZCgidXJsIiksCiAgICAgICAgICAgIEZpZWxkKCJjcmVhdGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoIm5vdGlmaWVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoInB1Ymxpc2hlZCIsIHR5cGU9ImRhdGV0aW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3JfbmFtZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX3NpdGUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9ncmF2YXRhciIpLAogICAgICAgICAgICBGaWVsZCgiY29udGVudCIsIHR5cGU9InRleHQiKSwKICAgICAgICApCgpkYXRhYmFzZSA9IERhdGFiYXNlKCkAAAAAAAAAAE8CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAoGdA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADUCAAAAAAAANQIAAAAAAAAAAAAAAKBnQA" ], [ 336, @@ -2259,7 +2259,7 @@ "characters": "Dal" }, "BAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAgAAABEYXRhYmFzZVUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVAAAAAAAAABcAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFQAAAAAAAAAXAAAAAAAAAAAAAAAAADwvw" ], [ 340, @@ -2269,7 +2269,7 @@ "characters": "Db" }, "AwAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAMAAABEYWxVAAAAAAAAAFYAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVwAAAAAAAABUAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFcAAAAAAAAAVAAAAAAAAAAAAAAAAADwvw" ], [ 341, @@ -2277,7 +2277,7 @@ "left_delete", null, "AgAAAFUAAAAAAAAAVQAAAAAAAAABAAAAYlQAAAAAAAAAVAAAAAAAAAABAAAARA", - "AQAAAAAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" ], [ 342, @@ -2287,7 +2287,7 @@ "characters": "Db" }, "AgAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABWAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVAAAAAAAAABUAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFQAAAAAAAAAVAAAAAAAAAAAAAAAAADwvw" ], [ 343, @@ -2297,7 +2297,7 @@ "characters": "Dal" }, "AwAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" ], [ 355, @@ -2305,7 +2305,7 @@ "paste", null, "AgAAAEECAAAAAAAARgIAAAAAAAAAAAAARgIAAAAAAABGAgAAAAAAAAgAAABEYXRhYmFzZQ", - "AQAAAAAAAAABAAAAQQIAAAAAAABJAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAASQIAAAAAAAAAAAAAAADwvw" ], [ 369, @@ -2315,7 +2315,7 @@ "characters": "Databse" }, "CAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAUAAABEYkRhbFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAABXAAAAAAAAAFgAAAAAAAAAAAAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVAAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFQAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" ], [ 370, @@ -2323,7 +2323,7 @@ "left_delete", null, "AgAAAFoAAAAAAAAAWgAAAAAAAAABAAAAZVkAAAAAAAAAWQAAAAAAAAABAAAAcw", - "AQAAAAAAAAABAAAAWwAAAAAAAABbAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFsAAAAAAAAAWwAAAAAAAAAAAAAAAADwvw" ], [ 371, @@ -2333,7 +2333,7 @@ "characters": "ase" }, "AwAAAFkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWQAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" ], [ 381, @@ -2341,7 +2341,7 @@ "paste", null, "AgAAAEQCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABMAgAAAAAAAAUAAABEYkRhbA", - "AQAAAAAAAAABAAAARAIAAAAAAABJAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEQCAAAAAAAASQIAAAAAAAAAAAAAAADwvw" ], [ 386, @@ -2351,7 +2351,7 @@ "characters": "db" }, "AwAAADkCAAAAAAAAOgIAAAAAAAAAAAAAOgIAAAAAAAA6AgAAAAAAAAgAAABkYXRhYmFzZToCAAAAAAAAOwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQQIAAAAAAAA5AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAAOQIAAAAAAAAAAAAAAADwvw" ], [ 401, @@ -2361,7 +2361,7 @@ "characters": "\n" }, "AQAAADcCAAAAAAAAOAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADcCAAAAAAAANwIAAAAAAAAAAAAAAADwvw" ], [ 402, @@ -2369,7 +2369,7 @@ "reindent", null, "AQAAADgCAAAAAAAAQAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOAIAAAAAAAA4AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADgCAAAAAAAAOAIAAAAAAAAAAAAAAADwvw" ], [ 403, @@ -2377,7 +2377,7 @@ "left_delete", null, "AQAAADwCAAAAAAAAPAIAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEACAAAAAAAAQAIAAAAAAAAAAAAAAADwvw" ], [ 404, @@ -2387,7 +2387,7 @@ "characters": "def" }, "AwAAADwCAAAAAAAAPQIAAAAAAAAAAAAAPQIAAAAAAAA+AgAAAAAAAAAAAAA+AgAAAAAAAD8CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAPAIAAAAAAAA8AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADwCAAAAAAAAPAIAAAAAAAAAAAAAAADwvw" ], [ 405, @@ -2397,7 +2397,7 @@ "characters": " " }, "AQAAAD8CAAAAAAAAQAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAPwIAAAAAAAA/AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD8CAAAAAAAAPwIAAAAAAAAAAAAAAADwvw" ], [ 406, @@ -2407,7 +2407,7 @@ "characters": "dal" }, "AwAAAEACAAAAAAAAQQIAAAAAAAAAAAAAQQIAAAAAAABCAgAAAAAAAAAAAABCAgAAAAAAAEMCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEACAAAAAAAAQAIAAAAAAAAAAAAAAADwvw" ], [ 407, @@ -2417,7 +2417,7 @@ "contents": "($0)" }, "AQAAAEMCAAAAAAAARQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQwIAAAAAAABDAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEMCAAAAAAAAQwIAAAAAAAAAAAAAAADwvw" ], [ 410, @@ -2427,7 +2427,7 @@ "characters": "self" }, "BAAAAEQCAAAAAAAARQIAAAAAAAAAAAAARQIAAAAAAABGAgAAAAAAAAAAAABGAgAAAAAAAEcCAAAAAAAAAAAAAEcCAAAAAAAASAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAARAIAAAAAAABEAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEQCAAAAAAAARAIAAAAAAAAAAAAAAADwvw" ], [ 412, @@ -2437,7 +2437,7 @@ "characters": ":" }, "AQAAAEkCAAAAAAAASgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASQIAAAAAAABJAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEkCAAAAAAAASQIAAAAAAAAAAAAAAADwvw" ], [ 413, @@ -2447,7 +2447,7 @@ "characters": "\nreturn" }, "CQAAAEoCAAAAAAAASwIAAAAAAAAAAAAASwIAAAAAAABPAgAAAAAAAAAAAABPAgAAAAAAAFMCAAAAAAAAAAAAAFMCAAAAAAAAVAIAAAAAAAAAAAAAVAIAAAAAAABVAgAAAAAAAAAAAABVAgAAAAAAAFYCAAAAAAAAAAAAAFYCAAAAAAAAVwIAAAAAAAAAAAAAVwIAAAAAAABYAgAAAAAAAAAAAABYAgAAAAAAAFkCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASgIAAAAAAABKAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEoCAAAAAAAASgIAAAAAAAAAAAAAAADwvw" ], [ 414, @@ -2457,7 +2457,7 @@ "characters": " self." }, "BgAAAFkCAAAAAAAAWgIAAAAAAAAAAAAAWgIAAAAAAABbAgAAAAAAAAAAAABbAgAAAAAAAFwCAAAAAAAAAAAAAFwCAAAAAAAAXQIAAAAAAAAAAAAAXQIAAAAAAABeAgAAAAAAAAAAAABeAgAAAAAAAF8CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWQIAAAAAAABZAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkCAAAAAAAAWQIAAAAAAAAAAAAAAADwvw" ], [ 415, @@ -2471,7 +2471,7 @@ "trigger": "db_dal" }, "AQAAAF8CAAAAAAAAZQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXwIAAAAAAABfAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8CAAAAAAAAXwIAAAAAAAAAAAAAAADwvw" ], [ 420, @@ -2479,7 +2479,7 @@ "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAAB3AgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgoKY2xhc3MgRGF0YWJhc2U6CgogICAgZGJfZGFsID0gTm9uZQoKICAgIGRlZiBjb25maWd1cmUoc2VsZiwgZGJfdXJpKToKICAgICAgICBzZWxmLmRiX2RhbCA9IERBTChkYl91cmkpCiAgICAgICAgc2VsZi5kYl9kYWwuZGVmaW5lX3RhYmxlKAogICAgICAgICAgICAiY29tbWVudCIsCiAgICAgICAgICAgIEZpZWxkKCJ1cmwiKSwKICAgICAgICAgICAgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgicHVibGlzaGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgICAgIEZpZWxkKCJjb250ZW50IiwgdHlwZT0idGV4dCIpLAogICAgICAgICkKCiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbAoKZGIgPSBEYXRhYmFzZSgpCgAAAAAAAAAAeAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAZgIAAAAAAABmAgAAAAAAAAAAAAAAQG1A" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYCAAAAAAAAZgIAAAAAAAAAAAAAAEBtQA" ], [ 437, @@ -2489,7 +2489,7 @@ "characters": "database" }, "CQAAAGgCAAAAAAAAaQIAAAAAAAAAAAAAaQIAAAAAAABpAgAAAAAAAAIAAABkYmkCAAAAAAAAagIAAAAAAAAAAAAAagIAAAAAAABrAgAAAAAAAAAAAABrAgAAAAAAAGwCAAAAAAAAAAAAAGwCAAAAAAAAbQIAAAAAAAAAAAAAbQIAAAAAAABuAgAAAAAAAAAAAABuAgAAAAAAAG8CAAAAAAAAAAAAAG8CAAAAAAAAcAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaAIAAAAAAABqAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGgCAAAAAAAAagIAAAAAAAAAAAAAAADwvw" ], [ 439, @@ -2499,7 +2499,7 @@ "characters": "db" }, "AgAAAH4CAAAAAAAAfwIAAAAAAAAAAAAAfwIAAAAAAACAAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfgIAAAAAAAB+AgAAAAAAAAAAAAAAAFJA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH4CAAAAAAAAfgIAAAAAAAAAAAAAAABSQA" ], [ 440, @@ -2509,7 +2509,7 @@ "characters": " =" }, "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACCAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIACAAAAAAAAgAIAAAAAAAAAAAAAAADwvw" ], [ 441, @@ -2519,7 +2519,7 @@ "characters": " data" }, "BQAAAIICAAAAAAAAgwIAAAAAAAAAAAAAgwIAAAAAAACEAgAAAAAAAAAAAACEAgAAAAAAAIUCAAAAAAAAAAAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACHAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAggIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIICAAAAAAAAggIAAAAAAAAAAAAAAADwvw" ], [ 442, @@ -2529,7 +2529,7 @@ "characters": "base" }, "BAAAAIcCAAAAAAAAiAIAAAAAAAAAAAAAiAIAAAAAAACJAgAAAAAAAAAAAACJAgAAAAAAAIoCAAAAAAAAAAAAAIoCAAAAAAAAiwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhwIAAAAAAACHAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcCAAAAAAAAhwIAAAAAAAAAAAAAAADwvw" ], [ 443, @@ -2539,7 +2539,7 @@ "characters": "." }, "AQAAAIsCAAAAAAAAjAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsCAAAAAAAAiwIAAAAAAAAAAAAAAADwvw" ], [ 444, @@ -2553,7 +2553,7 @@ "trigger": "db_dal" }, "AQAAAIwCAAAAAAAAkgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjAIAAAAAAACMAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwCAAAAAAAAjAIAAAAAAAAAAAAAAADwvw" ], [ 460, @@ -2561,7 +2561,7 @@ "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAACSAgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgoKY2xhc3MgRGF0YWJhc2U6CgogICAgZGJfZGFsID0gTm9uZQoKICAgIGRlZiBjb25maWd1cmUoc2VsZiwgZGJfdXJpKToKICAgICAgICBzZWxmLmRiX2RhbCA9IERBTChkYl91cmkpCiAgICAgICAgc2VsZi5kYl9kYWwuZGVmaW5lX3RhYmxlKAogICAgICAgICAgICAiY29tbWVudCIsCiAgICAgICAgICAgIEZpZWxkKCJ1cmwiKSwKICAgICAgICAgICAgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgicHVibGlzaGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgICAgIEZpZWxkKCJjb250ZW50IiwgdHlwZT0idGV4dCIpLAogICAgICAgICkKCiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbAoKCmRhdGFiYXNlID0gRGF0YWJhc2UoKQpkYiA9IGRhdGFiYXNlLmRiX2RhbAAAAAAAAAAAkwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkgIAAAAAAACSAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJICAAAAAAAAkgIAAAAAAAAAAAAAAADwvw" ], [ 469, @@ -2571,7 +2571,7 @@ "characters": "DAL" }, "BAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABtAAAAAAAAAAQAAABOb25lbQAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbAAAAAAAAABwAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGwAAAAAAAAAcAAAAAAAAAAAAAAAAADwvw" ], [ 470, @@ -2581,7 +2581,7 @@ "contents": "($0)" }, "AQAAAG8AAAAAAAAAcQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbwAAAAAAAABvAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8AAAAAAAAAbwAAAAAAAAAAAAAAAADwvw" ], [ 482, @@ -2589,7 +2589,7 @@ "left_delete", null, "AgAAADgCAAAAAAAAOAIAAAAAAAAuAAAACiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbDcCAAAAAAAANwIAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAZgIAAAAAAAA4AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYCAAAAAAAAOAIAAAAAAAAAAAAAAADwvw" ], [ 503, @@ -2599,7 +2599,7 @@ "characters": "\n\n" }, "BQAAADcCAAAAAAAAOAIAAAAAAAAAAAAAOAIAAAAAAABAAgAAAAAAAAAAAABAAgAAAAAAAEECAAAAAAAAAAAAAEECAAAAAAAASQIAAAAAAAAAAAAAOAIAAAAAAAA4AgAAAAAAAAgAAAAgICAgICAgIA", - "AQAAAAAAAAABAAAANwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADcCAAAAAAAANwIAAAAAAAAAAAAAAADwvw" ], [ 504, @@ -2607,7 +2607,7 @@ "left_delete", null, "AQAAAD0CAAAAAAAAPQIAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAQQIAAAAAAABBAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAAQQIAAAAAAAAAAAAAAADwvw" ], [ 505, @@ -2617,7 +2617,7 @@ "characters": "def" }, "AwAAAD0CAAAAAAAAPgIAAAAAAAAAAAAAPgIAAAAAAAA/AgAAAAAAAAAAAAA/AgAAAAAAAEACAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAPQIAAAAAAAA9AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD0CAAAAAAAAPQIAAAAAAAAAAAAAAADwvw" ], [ 506, @@ -2627,7 +2627,7 @@ "characters": " " }, "AQAAAEACAAAAAAAAQQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEACAAAAAAAAQAIAAAAAAAAAAAAAAADwvw" ], [ 507, @@ -2637,7 +2637,7 @@ "characters": "get" }, "AwAAAEECAAAAAAAAQgIAAAAAAAAAAAAAQgIAAAAAAABDAgAAAAAAAAAAAABDAgAAAAAAAEQCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQQIAAAAAAABBAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAAQQIAAAAAAAAAAAAAAADwvw" ], [ 508, @@ -2647,7 +2647,7 @@ "contents": "($0)" }, "AQAAAEQCAAAAAAAARgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAARAIAAAAAAABEAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEQCAAAAAAAARAIAAAAAAAAAAAAAAADwvw" ], [ 509, @@ -2657,7 +2657,7 @@ "characters": "self" }, "BAAAAEUCAAAAAAAARgIAAAAAAAAAAAAARgIAAAAAAABHAgAAAAAAAAAAAABHAgAAAAAAAEgCAAAAAAAAAAAAAEgCAAAAAAAASQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAARQIAAAAAAABFAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEUCAAAAAAAARQIAAAAAAAAAAAAAAADwvw" ], [ 511, @@ -2667,7 +2667,7 @@ "characters": ":" }, "AQAAAEoCAAAAAAAASwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASgIAAAAAAABKAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEoCAAAAAAAASgIAAAAAAAAAAAAAAADwvw" ], [ 512, @@ -2677,7 +2677,7 @@ "characters": "\nreturn" }, "CQAAAEsCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABQAgAAAAAAAAAAAABQAgAAAAAAAFQCAAAAAAAAAAAAAFQCAAAAAAAAVQIAAAAAAAAAAAAAVQIAAAAAAABWAgAAAAAAAAAAAABWAgAAAAAAAFcCAAAAAAAAAAAAAFcCAAAAAAAAWAIAAAAAAAAAAAAAWAIAAAAAAABZAgAAAAAAAAAAAABZAgAAAAAAAFoCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASwIAAAAAAABLAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEsCAAAAAAAASwIAAAAAAAAAAAAAAADwvw" ], [ 513, @@ -2687,7 +2687,7 @@ "characters": " sek" }, "BAAAAFoCAAAAAAAAWwIAAAAAAAAAAAAAWwIAAAAAAABcAgAAAAAAAAAAAABcAgAAAAAAAF0CAAAAAAAAAAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWgIAAAAAAABaAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoCAAAAAAAAWgIAAAAAAAAAAAAAAADwvw" ], [ 514, @@ -2697,7 +2697,7 @@ "characters": "f" }, "AQAAAF4CAAAAAAAAXwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXgIAAAAAAABeAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF4CAAAAAAAAXgIAAAAAAAAAAAAAAADwvw" ], [ 515, @@ -2705,7 +2705,7 @@ "left_delete", null, "AgAAAF4CAAAAAAAAXgIAAAAAAAABAAAAZl0CAAAAAAAAXQIAAAAAAAABAAAAaw", - "AQAAAAAAAAABAAAAXwIAAAAAAABfAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8CAAAAAAAAXwIAAAAAAAAAAAAAAADwvw" ], [ 516, @@ -2715,7 +2715,7 @@ "characters": "lf.d" }, "BAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAAXgIAAAAAAABfAgAAAAAAAAAAAABfAgAAAAAAAGACAAAAAAAAAAAAAGACAAAAAAAAYQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXQIAAAAAAABdAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF0CAAAAAAAAXQIAAAAAAAAAAAAAAADwvw" ], [ 517, @@ -2729,7 +2729,7 @@ "trigger": "db_dal" }, "AgAAAGACAAAAAAAAYAIAAAAAAAABAAAAZGACAAAAAAAAZgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYQIAAAAAAABhAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGECAAAAAAAAYQIAAAAAAAAAAAAAAADwvw" ], [ 524, @@ -2739,7 +2739,7 @@ "characters": "get" }, "BAAAAI0CAAAAAAAAjgIAAAAAAAAAAAAAjgIAAAAAAACOAgAAAAAAAAYAAABkYl9kYWyOAgAAAAAAAI8CAAAAAAAAAAAAAI8CAAAAAAAAkAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQIAAAAAAACTAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0CAAAAAAAAkwIAAAAAAAAAAAAAAADwvw" ], [ 525, @@ -2749,7 +2749,7 @@ "contents": "($0)" }, "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkAIAAAAAAACQAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJACAAAAAAAAkAIAAAAAAAAAAAAAAADwvw" ], [ 530, @@ -2757,7 +2757,7 @@ "right_delete", null, "AQAAAJACAAAAAAAAkAIAAAAAAAACAAAAKCk", - "AQAAAAAAAAABAAAAkAIAAAAAAACSAgAAAAAAAP///////+9/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJACAAAAAAAAkgIAAAAAAAD////////vfw" ], [ 537, @@ -2767,7 +2767,7 @@ "contents": "($0)" }, "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkAIAAAAAAACQAgAAAAAAAAAAAAAAIGNA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJACAAAAAAAAkAIAAAAAAAAAAAAAACBjQA" ], [ 549, @@ -2775,7 +2775,7 @@ "left_delete", null, "AQAAAIACAAAAAAAAgAIAAAAAAAABAAAAYg", - "AQAAAAAAAAABAAAAgQIAAAAAAACBAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIECAAAAAAAAgQIAAAAAAAAAAAAAAADwvw" ], [ 550, @@ -2785,7 +2785,7 @@ "characters": "al" }, "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACCAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIACAAAAAAAAgAIAAAAAAAAAAAAAAADwvw" ], [ 552, @@ -2793,7 +2793,7 @@ "right_delete", null, "AgAAAJECAAAAAAAAkQIAAAAAAAABAAAAKJECAAAAAAAAkQIAAAAAAAABAAAAKQ", - "AQAAAAAAAAABAAAAkQIAAAAAAACRAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJECAAAAAAAAkQIAAAAAAAAAAAAAAADwvw" ], [ 559, @@ -2803,7 +2803,7 @@ "characters": "db" }, "AwAAAH8CAAAAAAAAgAIAAAAAAAAAAAAAgAIAAAAAAACAAgAAAAAAAAMAAABkYWyAAgAAAAAAAIECAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfwIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8CAAAAAAAAggIAAAAAAAAAAAAAAADwvw" ], [ 577, @@ -2813,7 +2813,7 @@ "characters": "\n" }, "AQAAAH4CAAAAAAAAfwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfgIAAAAAAAB+AgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH4CAAAAAAAAfgIAAAAAAAAAAAAAAADwvw" ], [ 581, @@ -2823,7 +2823,7 @@ "characters": "al" }, "AwAAAIECAAAAAAAAggIAAAAAAAAAAAAAggIAAAAAAACCAgAAAAAAAAEAAABiggIAAAAAAACDAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgQIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIECAAAAAAAAggIAAAAAAAAAAAAAAADwvw" ], [ 583, @@ -2831,7 +2831,7 @@ "left_delete", null, "AQAAAH4CAAAAAAAAfgIAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAfwIAAAAAAAB/AgAAAAAAAAAAAAAAADtA" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8CAAAAAAAAfwIAAAAAAAAAAAAAAAA7QA" ], [ 590, @@ -2839,7 +2839,7 @@ "left_delete", null, "AgAAAIECAAAAAAAAgQIAAAAAAAABAAAAbIACAAAAAAAAgAIAAAAAAAABAAAAYQ", - "AQAAAAAAAAABAAAAggIAAAAAAACCAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIICAAAAAAAAggIAAAAAAAAAAAAAAADwvw" ], [ 591, @@ -2849,7 +2849,7 @@ "characters": "b" }, "AQAAAIACAAAAAAAAgQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIACAAAAAAAAgAIAAAAAAAAAAAAAAADwvw" ], [ 600, @@ -2857,7 +2857,7 @@ "", null, "AQAAALQAAAAAAAAAwQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" ], [ 602, @@ -2867,7 +2867,7 @@ "characters": "," }, "AQAAALQAAAAAAAAAtQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" ], [ 603, @@ -2877,7 +2877,7 @@ "characters": " " }, "AQAAALUAAAAAAAAAtgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtQAAAAAAAAC1AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALUAAAAAAAAAtQAAAAAAAAAAAAAAAADwvw" ], [ 612, @@ -2887,7 +2887,7 @@ "characters": "True" }, "BQAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAUAAABGYWxzZb8AAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADBAAAAAAAAAAAAAADBAAAAAAAAAMIAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvgAAAAAAAADDAAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL4AAAAAAAAAwwAAAAAAAAAAAAAAAADwvw" ], [ 623, @@ -2897,2716 +2897,1887 @@ "characters": "False" }, "BgAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAQAAABUcnVlvwAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMEAAAAAAAAAAAAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADDAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvgAAAAAAAADCAAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "stacosys/run.py", - "settings": - { - "buffer_size": 2472, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 7, - 1, - "toggle_breakpoint", - null, - "AQAAAIUFAAAAAAAAhQUAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IGI3MDRhOWFjIC8vCg", - "AQAAAAAAAAABAAAAjAUAAAAAAACMBQAAAAAAAAAAAAAAAPC/" - ], - [ - 15, - 1, - "toggle_breakpoint", - null, - "AQAAAIUFAAAAAAAAvwUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkgUAAAAAAACSBQAAAAAAAAAAAAAAAPC/" - ], - [ - 25, - 1, - "toggle_breakpoint", - null, - "AQAAAIUFAAAAAAAAhQUAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IDQwOGIxMTUzIC8vCg", - "AQAAAAAAAAABAAAAnwUAAAAAAACfBQAAAAAAAAAAAAAAAPC/" - ], - [ - 28, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAADQCQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmltcG9ydCBhcmdwYXJzZQppbXBvcnQgbG9nZ2luZwppbXBvcnQgb3MKaW1wb3J0IHN5cwoKZnJvbSBzdGFjb3N5cy5kYiBpbXBvcnQgZGF0YWJhc2UsIGRhbwpmcm9tIHN0YWNvc3lzLmludGVyZmFjZSBpbXBvcnQgYXBpLCBhcHAsIGZvcm0KZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2Uud2ViIGltcG9ydCBhZG1pbgpmcm9tIHN0YWNvc3lzLnNlcnZpY2UgaW1wb3J0IGNvbmZpZywgbWFpbGVyLCByc3MKZnJvbSBzdGFjb3N5cy5zZXJ2aWNlLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ1BhcmFtZXRlcgoKCiMgY29uZmlndXJlIGxvZ2dpbmcKZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKGxldmVsKToKICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgcm9vdF9sb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCiAgICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKICAgIGhhbmRsZXIuc2V0TGV2ZWwobGV2ZWwpCiAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiWyUoYXNjdGltZSlzXSAlKG5hbWUpcyAlKGxldmVsbmFtZSlzICUobWVzc2FnZSlzIikKICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKICAgIHJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKCgpkZWYgc3RhY29zeXNfc2VydmVyKGNvbmZpZ19wYXRobmFtZSk6CiAgICAjIGNvbmZpZ3VyZSBsb2dnaW5nCiAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGxvZ2dpbmcuSU5GTykKICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZXJremV1ZyIpLmxldmVsID0gbG9nZ2luZy5XQVJOSU5HCgogICAgIyBjaGVjayBjb25maWcgZmlsZSBleGlzdHMKICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjb25maWdfcGF0aG5hbWUpOgogICAgICAgIGxvZ2dlci5lcnJvcigiQ29uZmlndXJhdGlvbiBmaWxlICclcycgbm90IGZvdW5kLiIsIGNvbmZpZ19wYXRobmFtZSkKICAgICAgICBzeXMuZXhpdCgxKQoKICAgICMgbG9hZCBhbmQgY2hlY2sgY29uZmlnCiAgICBjb25maWcubG9hZChjb25maWdfcGF0aG5hbWUpCiAgICBpc19jb25maWdfb2ssIGVycmV1cl9jb25maWcgPSBjb25maWcuY2hlY2soKQogICAgaWYgbm90IGlzX2NvbmZpZ19vazoKICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbmZpZ3VyYXRpb24gaW5jb3JyZWN0ZSAnJXMnIiwgZXJyZXVyX2NvbmZpZykKICAgICAgICBzeXMuZXhpdCgxKQogICAgbG9nZ2VyLmluZm8oY29uZmlnKQoKICAgICMgaW5pdGlhbGl6ZSBkYXRhYmFzZQogICAgZGF0YWJhc2UuY29uZmlndXJlKGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLkRCKSkKCiAgICByID0gZGFvLmZpbmRfY29tbWVudF9ieV9pZCgxKQoKICAgIGxvZ2dlci5pbmZvKCJTdGFydCBTdGFjb3N5cyBhcHBsaWNhdGlvbiIpCgogICAgIyBnZW5lcmF0ZSBSU1MKICAgIHJzcy5jb25maWd1cmUoCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuUlNTX0ZJTEUpLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNJVEVfTkFNRSksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9QUk9UTyksCiAgICAgICAgY29uZmlnLmdldChDb25maWdQYXJhbWV0ZXIuU0lURV9VUkwpLAogICAgKQogICAgcnNzLmdlbmVyYXRlKCkKCiAgICAjIGNvbmZpZ3VyZSBtYWlsZXIKICAgIG1haWxlci5jb25maWd1cmVfc210cCgKICAgICAgICBjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5TTVRQX0hPU1QpLAogICAgICAgIGNvbmZpZy5nZXRfaW50KENvbmZpZ1BhcmFtZXRlci5TTVRQX1BPUlQpLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfTE9HSU4pLAogICAgICAgIGNvbmZpZy5nZXQoQ29uZmlnUGFyYW1ldGVyLlNNVFBfUEFTU1dPUkQpLAogICAgKQogICAgbWFpbGVyLmNvbmZpZ3VyZV9kZXN0aW5hdGlvbihjb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5TSVRFX0FETUlOX0VNQUlMKSkKICAgIG1haWxlci5jaGVjaygpCgogICAgbG9nZ2VyLmluZm8oInN0YXJ0IGludGVyZmFjZXMgJXMgJXMgJXMiLCBhcGksIGZvcm0sIGFkbWluKQoKICAgICMgc3RhcnQgRmxhc2sKICAgIGFwcC5ydW4oCiAgICAgICAgaG9zdD1jb25maWcuZ2V0KENvbmZpZ1BhcmFtZXRlci5IVFRQX0hPU1QpLAogICAgICAgIHBvcnQ9Y29uZmlnLmdldF9pbnQoQ29uZmlnUGFyYW1ldGVyLkhUVFBfUE9SVCksCiAgICAgICAgZGVidWc9RmFsc2UsCiAgICAgICAgdXNlX3JlbG9hZGVyPUZhbHNlLAogICAgKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJjb25maWciLCBoZWxwPSJjb25maWcgcGF0aCBuYW1lIikKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAgICBzdGFjb3N5c19zZXJ2ZXIoYXJncy5jb25maWcpCgAAAAAAAAAA0AkAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQUAAAAAAACFBQAAAAAAAAAAAAAAAPC/" - ], - [ - 33, - 1, - "right_delete", - null, - "AQAAAGEFAAAAAAAAYQUAAAAAAAAjAAAACiAgICByID0gZGFvLmZpbmRfY29tbWVudF9ieV9pZCgxKQo", - "AQAAAAAAAAABAAAAYQUAAAAAAACEBQAAAAAAAAAAAAAAkHJA" - ], - [ - 43, - 1, - "right_delete", - null, - "AQAAAHgAAAAAAAAAeAAAAAAAAAAFAAAAZGFvLCA", - "AQAAAAAAAAABAAAAeAAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "config-dev.ini", - "settings": - { - "buffer_size": 657, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 5, - 1, - "insert", - { - "characters": "\nsq" - }, - "AwAAAEUAAAAAAAAARgAAAAAAAAAAAAAARgAAAAAAAABHAAAAAAAAAAAAAABHAAAAAAAAAEgAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABFAAAAAAAAAEUAAAAAAAAAAAAAAAAA8L8" - ], - [ - 6, - 2, - "left_delete", - null, - "AgAAAEcAAAAAAAAARwAAAAAAAAABAAAAcUYAAAAAAAAARgAAAAAAAAABAAAAcw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAAAAAAAAAEgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 7, - 1, - "insert", - { - "characters": "dbçsq" - }, - "BQAAAEYAAAAAAAAARwAAAAAAAAAAAAAARwAAAAAAAABIAAAAAAAAAAAAAABIAAAAAAAAAEkAAAAAAAAAAAAAAEkAAAAAAAAASgAAAAAAAAAAAAAASgAAAAAAAABLAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABGAAAAAAAAAEYAAAAAAAAAAAAAAAAA8L8" - ], - [ - 8, - 3, - "left_delete", - null, - "AwAAAEoAAAAAAAAASgAAAAAAAAABAAAAcUkAAAAAAAAASQAAAAAAAAABAAAAc0gAAAAAAAAASAAAAAAAAAACAAAAw6c", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLAAAAAAAAAEsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 9, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAEgAAAAAAAAASQAAAAAAAAAAAAAASQAAAAAAAABKAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAAAAAAAAAEgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 10, - 1, - "insert", - { - "characters": " " - }, - "AQAAAEoAAAAAAAAASwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABKAAAAAAAAAEoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 12, - 1, - "", - null, - "AQAAAEsAAAAAAAAAXgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLAAAAAAAAAEsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 18, - 1, - "paste", - null, - "AgAAAFQAAAAAAAAAXQAAAAAAAAAAAAAAXQAAAAAAAABdAAAAAAAAAAoAAABzdG9yYWdlLmRi", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABUAAAAAAAAAF4AAAAAAAAAAAAAAAAA8L8" - ], - [ - 25, - 1, - "insert", - { - "characters": "2" - }, - "AQAAAFYAAAAAAAAAVwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABWAAAAAAAAAFYAAAAAAAAAAAAAAAAA8L8" - ], - [ - 5, - 1, - "left_delete", - null, - "AQAAAFYAAAAAAAAAVgAAAAAAAAABAAAAMg", - "AQAAAAAAAAABAAAAVwAAAAAAAABXAAAAAAAAAAAAAAAAAPC/" - ], - [ - 9, - 1, - "right_delete", - null, - "AQAAACsAAAAAAAAAKwAAAAAAAAAaAAAAZGJfc3FsaXRlX2ZpbGUgPSBkYi5zcWxpdGU", - "AQAAAAAAAAABAAAARQAAAAAAAAArAAAAAAAAAAAAAAAAAAAA" - ], - [ - 10, - 1, - "left_delete", - null, - "AQAAACoAAAAAAAAAKgAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAKwAAAAAAAAArAAAAAAAAAAAAAAAAAPC/" - ], - [ - 13, - 1, - "insert", - { - "characters": "2" - }, - "AQAAADsAAAAAAAAAPAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOwAAAAAAAAA7AAAAAAAAAAAAAAAAAPC/" + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL4AAAAAAAAAwgAAAAAAAAAAAAAAAADwvw" ], [ 14, 1, - "left_delete", - null, - "AQAAADsAAAAAAAAAOwAAAAAAAAABAAAAMg", - "AQAAAAAAAAABAAAAPAAAAAAAAAA8AAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "dbmigration/migrate_from_3.3_to_4.0.py", - "settings": - { - "buffer_size": 1022, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ + "insert", + { + "characters": "," + }, + "AQAAAJEAAAAAAAAAkgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACRAAAAAAAAAJEAAAAAAAAAAAAAAAAA8L8" + ], [ - 12, + 15, 1, - "right_delete", - null, - "AQAAAPMBAAAAAAAA8wEAAAAAAAADAAAAVkFS", - "AQAAAAAAAAABAAAA8wEAAAAAAAD2AQAAAAAAAAAAAAAAAPC/" + "insert", + { + "characters": " migra" + }, + "BgAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJUAAAAAAAAAAAAAAJUAAAAAAAAAlgAAAAAAAAAAAAAAlgAAAAAAAACXAAAAAAAAAAAAAACXAAAAAAAAAJgAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACSAAAAAAAAAJIAAAAAAAAAAAAAAAAA8L8" ], [ 16, 1, "insert", { - "characters": "512" + "characters": "te" }, - "BAAAAPgBAAAAAAAA+QEAAAAAAAAAAAAA+QEAAAAAAAD5AQAAAAAAAAMAAAAyNTX5AQAAAAAAAPoBAAAAAAAAAAAAAPoBAAAAAAAA+wEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA+AEAAAAAAAD7AQAAAAAAAAAAAAAAAPC/" + "AgAAAJgAAAAAAAAAmQAAAAAAAAAAAAAAmQAAAAAAAACaAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACYAAAAAAAAAJgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 17, + 1, + "insert", + { + "characters": "=False" + }, + "BgAAAJoAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACcAAAAAAAAAAAAAACcAAAAAAAAAJ0AAAAAAAAAAAAAAJ0AAAAAAAAAngAAAAAAAAAAAAAAngAAAAAAAACfAAAAAAAAAAAAAACfAAAAAAAAAKAAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 19, + 1, + "left_delete", + null, + "AQAAAJkAAAAAAAAAmQAAAAAAAAABAAAAZQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 20, + 1, + "insert", + { + "characters": "ion" + }, + "AwAAAJkAAAAAAAAAmgAAAAAAAAAAAAAAmgAAAAAAAACbAAAAAAAAAAAAAACbAAAAAAAAAJwAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJkAAAAAAAAAAAAAAAAA8L8" ], [ 21, - 1, - "right_delete", + 2, + "left_delete", null, - "AQAAAP0BAAAAAAAA/QEAAAAAAAAIAAAATk9UIE5VTEw", - "AQAAAAAAAAABAAAA/QEAAAAAAAAFAgAAAAAAAAAAAAAAAPC/" + "AgAAAJsAAAAAAAAAmwAAAAAAAAABAAAAbpoAAAAAAAAAmgAAAAAAAAABAAAAbw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 22, + 1, + "insert", + { + "characters": "e" + }, + "AQAAAJoAAAAAAAAAmwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" ], [ 23, - 1, - "right_delete", + 2, + "left_delete", null, - "AQAAAPwBAAAAAAAA/AEAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAA/AEAAAAAAAD8AQAAAAAAAAAAAAAAAPC/" + "AgAAAJoAAAAAAAAAmgAAAAAAAAABAAAAZZkAAAAAAAAAmQAAAAAAAAABAAAAaQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAAAAAAAAAJsAAAAAAAAAAAAAAAAA8L8" ], [ - 27, + 24, 1, "insert", { - "characters": "TIMESTAM" + "characters": "e" }, - "CQAAAAsCAAAAAAAADAIAAAAAAAAAAAAADAIAAAAAAAAMAgAAAAAAAAgAAABEQVRFVElNRQwCAAAAAAAADQIAAAAAAAAAAAAADQIAAAAAAAAOAgAAAAAAAAAAAAAOAgAAAAAAAA8CAAAAAAAAAAAAAA8CAAAAAAAAEAIAAAAAAAAAAAAAEAIAAAAAAAARAgAAAAAAAAAAAAARAgAAAAAAABICAAAAAAAAAAAAABICAAAAAAAAEwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACwIAAAAAAAATAgAAAAAAAAAAAAAAAPC/" + "AQAAAJkAAAAAAAAAmgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJkAAAAAAAAAAAAAAAAA8L8" ], [ 28, 1, "insert", { - "characters": "P" + "characters": "mir" }, - "AQAAABMCAAAAAAAAFAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEwIAAAAAAAATAgAAAAAAAAAAAAAAAPC/" - ], - [ - 35, - 1, - "paste", - null, - "AgAAACICAAAAAAAAKwIAAAAAAAAAAAAAKwIAAAAAAAArAgAAAAAAABEAAABEQVRFVElNRSBOT1QgTlVMTA", - "AQAAAAAAAAABAAAAIgIAAAAAAAAzAgAAAAAAAAAAAAAAAPC/" - ], - [ - 40, - 1, - "paste", - null, - "AgAAADsCAAAAAAAARAIAAAAAAAAAAAAARAIAAAAAAABEAgAAAAAAAAgAAABEQVRFVElNRQ", - "AQAAAAAAAAABAAAAOwIAAAAAAABDAgAAAAAAAAAAAAAAAPC/" - ], - [ - 49, - 1, - "paste", - null, - "AgAAAFYCAAAAAAAAXwIAAAAAAAAAAAAAXwIAAAAAAABfAgAAAAAAABUAAABWQVJDSEFSKDI1NSkgTk9UIE5VTEw", - "AQAAAAAAAAABAAAAVgIAAAAAAABrAgAAAAAAAAAAAAAAAPC/" - ], - [ - 52, - 1, - "paste", - null, - "AgAAAHECAAAAAAAAegIAAAAAAAAAAAAAegIAAAAAAAB6AgAAAAAAABUAAABWQVJDSEFSKDI1NSkgTk9UIE5VTEw", - "AQAAAAAAAAABAAAAcQIAAAAAAACGAgAAAAAAAAAAAAAAAPC/" - ], - [ - 55, - 1, - "paste", - null, - "AgAAAJACAAAAAAAAmQIAAAAAAAAAAAAAmQIAAAAAAACZAgAAAAAAAAwAAAB2YXJjaGFyKDI1NSk", - "AQAAAAAAAAABAAAAkAIAAAAAAACcAgAAAAAAAAAAAAAAAPC/" - ], - [ - 60, - 1, - "left_delete", - null, - "AQAAAKsCAAAAAAAAqwIAAAAAAAAJAAAAIE5PVCBOVUxM", - "AQAAAAAAAAABAAAAqwIAAAAAAAC0AgAAAAAAAAAAAAAAAPC/" - ], - [ - 66, - 1, - "right_delete", - null, - "AQAAAHIBAAAAAAAAcgEAAAAAAAAQAAAARFJPUCBUQUJMRSBzaXRlOw", - "AQAAAAAAAAABAAAAggEAAAAAAAByAQAAAAAAAAAAAAAAAAAA" - ], - [ - 67, - 1, - "left_delete", - null, - "AQAAAHEBAAAAAAAAcQEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAcgEAAAAAAAByAQAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "stacosys/db/dao.py", - "settings": - { - "buffer_size": 2026, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 4, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAALwAAAAAAAAAvQAAAAAAAAAAAAAAvQAAAAAAAADBAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvAAAAAAAAAC8AAAAAAAAAAAAAAAAAPC/" - ], - [ - 7, - 1, - "insert", - { - "characters": "\nfrom" - }, - "BgAAAEgAAAAAAAAASQAAAAAAAAAAAAAAvgAAAAAAAAC+AAAAAAAAAAQAAAAgICAgSQAAAAAAAABKAAAAAAAAAAAAAABKAAAAAAAAAEsAAAAAAAAAAAAAAEsAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAABNAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASAAAAAAAAABIAAAAAAAAAAAAAAAAAPC/" - ], - [ - 8, - 1, - "insert", - { - "characters": " stacosys.db" - }, - "DAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAAAAAABSAAAAAAAAAFMAAAAAAAAAAAAAAFMAAAAAAAAAVAAAAAAAAAAAAAAAVAAAAAAAAABVAAAAAAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAAAAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" - ], - [ - 9, - 1, - "insert", - { - "characters": " imo" - }, - "BAAAAFkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAFwAAAAAAAAAXQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWQAAAAAAAABZAAAAAAAAAAAAAAAAAPC/" - ], - [ - 10, - 1, - "left_delete", - null, - "AQAAAFwAAAAAAAAAXAAAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" - ], - [ - 11, - 1, - "insert", - { - "characters": "port" - }, - "BAAAAFwAAAAAAAAAXQAAAAAAAAAAAAAAXQAAAAAAAABeAAAAAAAAAAAAAABeAAAAAAAAAF8AAAAAAAAAAAAAAF8AAAAAAAAAYAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXAAAAAAAAABcAAAAAAAAAAAAAAAAAPC/" - ], - [ - 12, - 1, - "insert", - { - "characters": " " - }, - "AQAAAGAAAAAAAAAAYQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAPC/" - ], - [ - 18, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"09.9999.db\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":4,\"character\":24},\"symbolLabel\":\"db\",\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "db" - }, - "AQAAAGEAAAAAAAAAYwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYQAAAAAAAABhAAAAAAAAAAAAAAAAAPC/" - ], - [ - 27, - 1, - "reindent", - null, - "AQAAANgAAAAAAAAA3AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2AAAAAAAAADYAAAAAAAAAAAAAAAAAPC/" - ], - [ - 28, - 1, - "insert", - { - "characters": "db." - }, - "AwAAANwAAAAAAAAA3QAAAAAAAAAAAAAA3QAAAAAAAADeAAAAAAAAAAAAAADeAAAAAAAAAN8AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3AAAAAAAAADcAAAAAAAAAAAAAAAAAPC/" + "BAAAAM0AAAAAAAAAzgAAAAAAAAAAAAAAzgAAAAAAAADOAAAAAAAAAAUAAABGYWxzZc4AAAAAAAAAzwAAAAAAAAAAAAAAzwAAAAAAAADQAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADNAAAAAAAAANIAAAAAAAAAAAAAAAAA8L8" ], [ 29, 1, "left_delete", null, - "AQAAAN4AAAAAAAAA3gAAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" + "AQAAAM8AAAAAAAAAzwAAAAAAAAABAAAAcg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADQAAAAAAAAANAAAAAAAAAAAAAAAAAA8L8" ], [ 30, 1, - "insert_snippet", + "insert", { - "contents": "($0)" + "characters": "rgation" }, - "AQAAAN4AAAAAAAAA4AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3gAAAAAAAADeAAAAAAAAAAAAAAAAAPC/" + "BwAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA0AAAAAAAAADRAAAAAAAAAAAAAADRAAAAAAAAANIAAAAAAAAAAAAAANIAAAAAAAAA0wAAAAAAAAAAAAAA0wAAAAAAAADUAAAAAAAAAAAAAADUAAAAAAAAANUAAAAAAAAAAAAAANUAAAAAAAAA1gAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADPAAAAAAAAAM8AAAAAAAAAAAAAAAAA8L8" ], [ - 33, + 32, 1, - "right_delete", + "left_delete", null, - "AQAAAN4AAAAAAAAA3gAAAAAAAAACAAAAKCk", - "AQAAAAAAAAABAAAA3gAAAAAAAADgAAAAAAAAAP///////+9/" + "AQAAAM8AAAAAAAAAzwAAAAAAAAABAAAAcg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADQAAAAAAAAANAAAAAAAAAAAAAAAAAA8L8" ], [ 34, 1, "insert", { - "characters": "." + "characters": "r" }, - "AQAAAN4AAAAAAAAA3wAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3gAAAAAAAADeAAAAAAAAAAAAAAAAAPC/" + "AQAAANAAAAAAAAAA0QAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADQAAAAAAAAANAAAAAAAAAAAAAAAAAA8L8" ], [ - 35, + 43, 1, "insert", { - "characters": "com" + "characters": "ion" }, - "AwAAAN8AAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAADhAAAAAAAAAAAAAADhAAAAAAAAAOIAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" + "BAAAAJkAAAAAAAAAmgAAAAAAAAAAAAAAmgAAAAAAAACaAAAAAAAAAAEAAABlmgAAAAAAAACbAAAAAAAAAAAAAACbAAAAAAAAAJwAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" ], [ - 36, - 1, - "insert", - { - "characters": "m" - }, - "AQAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" - ], - [ - 37, - 1, - "insert", - { - "characters": "ent." - }, - "BAAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" - ], - [ - 38, - 1, + 44, + 3, "left_delete", null, - "AQAAAOYAAAAAAAAA5gAAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAA5wAAAAAAAADnAAAAAAAAAAAAAAAAAPC/" + "AwAAAJsAAAAAAAAAmwAAAAAAAAABAAAAbpoAAAAAAAAAmgAAAAAAAAABAAAAb5kAAAAAAAAAmQAAAAAAAAABAAAAaQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAA8L8" ], [ - 39, + 45, 1, - "insert_snippet", + "insert", { - "contents": "($0)" + "characters": "e" }, - "AQAAAOYAAAAAAAAA6AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5gAAAAAAAADmAAAAAAAAAAAAAAAAAPC/" + "AQAAAJkAAAAAAAAAmgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJkAAAAAAAAAAAAAAAAA8L8" ], [ - 47, + 49, + 1, + "insert", + { + "characters": "e" + }, + "AgAAANMAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADUAAAAAAAAAAMAAABpb24", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTAAAAAAAAANYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 59, + 1, + "right_delete", + null, + "AQAAAJEAAAAAAAAAkQAAAAAAAAAPAAAALCBtaWdyYXRlPUZhbHNl", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACRAAAAAAAAAKAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 63, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAAJMAAAAAAAAAlAAAAAAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACTAAAAAAAAAJMAAAAAAAAAAAAAAAAAckA" + ], + [ + 64, 1, "paste", null, - "AQAAAOcAAAAAAAAA8QAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5wAAAAAAAADnAAAAAAAAAAAAAAAAAPC/" - ], - [ - 65, - 1, - "insert", - { - "characters": "return" - }, - "BgAAANwAAAAAAAAA3QAAAAAAAAAAAAAA3QAAAAAAAADeAAAAAAAAAAAAAADeAAAAAAAAAN8AAAAAAAAAAAAAAN8AAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAADhAAAAAAAAAAAAAADhAAAAAAAAAOIAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3AAAAAAAAADcAAAAAAAAAAAAAAAAAPC/" + "AQAAAJwAAAAAAAAAqQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAA8L8" ], [ 66, 1, "insert", { - "characters": " " + "characters": "if" }, - "AQAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" + "AgAAAJwAAAAAAAAAnQAAAAAAAAAAAAAAnQAAAAAAAACeAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAAUkA" + ], + [ + 67, + 1, + "insert", + { + "characters": " db" + }, + "AwAAAJ4AAAAAAAAAnwAAAAAAAAAAAAAAnwAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAAKEAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeAAAAAAAAAJ4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 68, + 1, + "insert", + { + "characters": "_uri" + }, + "BAAAAKEAAAAAAAAAogAAAAAAAAAAAAAAogAAAAAAAACjAAAAAAAAAAAAAACjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAChAAAAAAAAAKEAAAAAAAAAAAAAAAAA8L8" ], [ 69, 1, "insert", { - "characters": "#" + "characters": ".st" }, - "AQAAAP4AAAAAAAAA/wAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/gAAAAAAAAD+AAAAAAAAAAAAAAAAAEJA" + "AwAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAACnAAAAAAAAAKgAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 70, + 1, + "insert", + { + "characters": " " + }, + "AQAAAKgAAAAAAAAAqQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" ], [ 72, 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAACvBgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRiCmZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKVElNRV9GT1JNQVQgPSAiJVktJW0tJWQgJUg6JU06JVMiCgoKZGVmIGZpbmRfY29tbWVudF9ieV9pZChjb21tZW50X2lkKToKICAgIHJldHVybiBkYi5jb21tZW50KGNvbW1lbnRfaWQpCiAgICAjcmV0dXJuIENvbW1lbnQuZ2V0X2J5X2lkKGNvbW1lbnRfaWQpCgoKZGVmIG5vdGlmeV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5ub3RpZmllZCA9IGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKFRJTUVfRk9STUFUKQogICAgY29tbWVudC5zYXZlKCkKCgpkZWYgcHVibGlzaF9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5wdWJsaXNoZWQgPSBkYXRldGltZS5ub3coKS5zdHJmdGltZShUSU1FX0ZPUk1BVCkKICAgIGNvbW1lbnQuc2F2ZSgpCgoKZGVmIGRlbGV0ZV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5kZWxldGVfaW5zdGFuY2UoKQoKCmRlZiBmaW5kX25vdF9ub3RpZmllZF9jb21tZW50cygpOgogICAgcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5ub3RpZmllZC5pc19udWxsKCkpCgoKZGVmIGZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpOgogICAgcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbCgpKQoKCmRlZiBmaW5kX3B1Ymxpc2hlZF9jb21tZW50c19ieV91cmwodXJsKToKICAgIHJldHVybiAoCiAgICAgICAgQ29tbWVudC5zZWxlY3QoQ29tbWVudCkKICAgICAgICAud2hlcmUoKENvbW1lbnQudXJsID09IHVybCkgJiAoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbChGYWxzZSkpKQogICAgICAgIC5vcmRlcl9ieSgrQ29tbWVudC5wdWJsaXNoZWQpCiAgICApCgoKZGVmIGNvdW50X3B1Ymxpc2hlZF9jb21tZW50cyh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBDb21tZW50LnNlbGVjdChDb21tZW50KQogICAgICAgIC53aGVyZSgoQ29tbWVudC51cmwgPT0gdXJsKSAmIChDb21tZW50LnB1Ymxpc2hlZC5pc19udWxsKEZhbHNlKSkpCiAgICAgICAgLmNvdW50KCkKICAgICAgICBpZiB1cmwKICAgICAgICBlbHNlIENvbW1lbnQuc2VsZWN0KENvbW1lbnQpLndoZXJlKENvbW1lbnQucHVibGlzaGVkLmlzX251bGwoRmFsc2UpKS5jb3VudCgpCiAgICApCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgY3JlYXRlZCA9IGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIpCiAgICBjb21tZW50ID0gQ29tbWVudCgKICAgICAgICB1cmw9dXJsLAogICAgICAgIGF1dGhvcl9uYW1lPWF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPWF1dGhvcl9zaXRlLAogICAgICAgIGF1dGhvcl9ncmF2YXRhcj1hdXRob3JfZ3JhdmF0YXIsCiAgICAgICAgY29udGVudD1tZXNzYWdlLAogICAgICAgIGNyZWF0ZWQ9Y3JlYXRlZCwKICAgICAgICBub3RpZmllZD1Ob25lLAogICAgICAgIHB1Ymxpc2hlZD1Ob25lLAogICAgKQogICAgY29tbWVudC5zYXZlKCkKICAgIHJldHVybiBjb21tZW50CgAAAAAAAAAAsAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" + "insert", + { + "characters": "arts" + }, + "BAAAAKgAAAAAAAAAqQAAAAAAAAAAAAAAqQAAAAAAAACqAAAAAAAAAAAAAACqAAAAAAAAAKsAAAAAAAAAAAAAAKsAAAAAAAAArAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" ], [ - 77, + 73, + 1, + "left_delete", + null, + "AQAAAKsAAAAAAAAAqwAAAAAAAAABAAAAcw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsAAAAAAAAAKwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 74, + 1, + "insert", + { + "characters": "w" + }, + "AQAAAKsAAAAAAAAArAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAAAAAAAAAKsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 75, + 3, + "left_delete", + null, + "AwAAAKsAAAAAAAAAqwAAAAAAAAABAAAAd6oAAAAAAAAAqgAAAAAAAAABAAAAdKkAAAAAAAAAqQAAAAAAAAABAAAAcg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsAAAAAAAAAKwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 78, + 1, + "insert", + { + "characters": "\n\"" + }, + "AwAAAKoAAAAAAAAAqwAAAAAAAAAAAAAAqwAAAAAAAACzAAAAAAAAAAAAAACzAAAAAAAAALQAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACqAAAAAAAAAKoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 79, + 1, + "left_delete", + null, + "AQAAALMAAAAAAAAAswAAAAAAAAABAAAAIg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC0AAAAAAAAALQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 80, 1, "insert", { "characters": "#" }, - "AQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAAAA" + "AQAAALMAAAAAAAAAtAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACzAAAAAAAAALMAAAAAAAAAAAAAAAAA8L8" ], [ - 93, + 83, + 4, + "left_delete", + null, + "BAAAAKgAAAAAAAAAqAAAAAAAAAABAAAAYacAAAAAAAAApwAAAAAAAAABAAAAdKYAAAAAAAAApgAAAAAAAAABAAAAc6UAAAAAAAAApQAAAAAAAAABAAAALg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACpAAAAAAAAAKkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 84, + 1, + "insert", + { + "characters": ".st" + }, + "AwAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAACnAAAAAAAAAKgAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 85, + 1, + "insert", + { + "characters": "art" + }, + "AwAAAKgAAAAAAAAAqQAAAAAAAAAAAAAAqQAAAAAAAACqAAAAAAAAAAAAAACqAAAAAAAAAKsAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 86, + 6, + "left_delete", + null, + "BgAAAKoAAAAAAAAAqgAAAAAAAAABAAAAdKkAAAAAAAAAqQAAAAAAAAABAAAAcqgAAAAAAAAAqAAAAAAAAAABAAAAYacAAAAAAAAApwAAAAAAAAABAAAAdKYAAAAAAAAApgAAAAAAAAABAAAAc6UAAAAAAAAApQAAAAAAAAABAAAALg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAAAAAAAAAKsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 87, + 1, + "insert_snippet", + { + "contents": "[$0]" + }, + "AQAAAKUAAAAAAAAApwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 94, + 1, + "insert", + { + "characters": ".startswith" + }, + "DAAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACmAAAAAAAAAAIAAABbXaYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAArQAAAAAAAACuAAAAAAAAAAAAAACuAAAAAAAAAK8AAAAAAAAAAAAAAK8AAAAAAAAAsAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 95, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAALAAAAAAAAAAsgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACwAAAAAAAAALAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 102, + 1, + "insert_snippet", + { + "contents": "\"$0\"" + }, + "AQAAALEAAAAAAAAAswAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACxAAAAAAAAALEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 103, + 1, + "paste", + null, + "AQAAALIAAAAAAAAAvwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACyAAAAAAAAALIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 106, + 1, + "cut", + null, + "AQAAAJ8AAAAAAAAAnwAAAAAAAAAiAAAAZGJfdXJpLnN0YXJ0c3dpdGgoInNxbGl0ZTptZW1vcnkiKQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADBAAAAAAAAAJ8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 111, + 1, + "paste", + null, + "AgAAAOIAAAAAAAAABAEAAAAAAAAAAAAABAEAAAAAAAAEAQAAAAAAAAcAAABtaWdyYXRl", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpAAAAAAAAAOIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 115, 1, "right_delete", null, - "AQAAAGQAAAAAAAAAZAAAAAAAAAABAAAAIw", - "AQAAAAAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAAAA" + "AQAAAJQAAAAAAAAAlAAAAAAAAAAkAAAAICAgICAgICBpZiAgCiAgICAgICAgI3NxbGl0ZTptZW1vcnkK", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACUAAAAAAAAALgAAAAAAAAAAAAAAAAAAAA" + ] + ] + }, + { + "file": "tests/test_api.py", + "settings": + { + "buffer_size": 1625, + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 3, + 1, + "insert", + { + "characters": "," + }, + "AQAAAH4CAAAAAAAAfwIAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB+AgAAAAAAAH4CAAAAAAAAAAAAAAAA8L8" ], [ - 99, + 4, 1, - "toggle_breakpoint", + "insert", + { + "characters": " " + }, + "AQAAAH8CAAAAAAAAgAIAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AgAAAAAAAH8CAAAAAAAAAAAAAAAA8L8" + ], + [ + 5, + 2, + "left_delete", null, - "AQAAANgAAAAAAAAAEgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" + "AgAAAH8CAAAAAAAAfwIAAAAAAAABAAAAIH4CAAAAAAAAfgIAAAAAAAABAAAALA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAgAAAAAAAIACAAAAAAAAAAAAAAAA8L8" + ], + [ + 6, + 1, + "revert", + null, + "AgAAAAAAAAAAAAAAAAAAAAAAAAB3BgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmltcG9ydCBqc29uCmltcG9ydCBsb2dnaW5nCgppbXBvcnQgcHl0ZXN0Cgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYXRhYmFzZSwgZGFvCmZyb20gc3RhY29zeXMuaW50ZXJmYWNlIGltcG9ydCBhcGkKZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKCmRlZiBpbml0X3Rlc3RfZGIoKToKICAgIGMxID0gZGFvLmNyZWF0ZV9jb21tZW50KCIvc2l0ZTEiLCAiQm9iIiwgIi9ib2Iuc2l0ZSIsICIiLCAiY29tbWVudCAxIikKICAgIGMyID0gZGFvLmNyZWF0ZV9jb21tZW50KCIvc2l0ZTIiLCAiQmlsbCIsICIvYmlsbC5zaXRlIiwgIiIsICJjb21tZW50IDIiKQogICAgYzMgPSBkYW8uY3JlYXRlX2NvbW1lbnQoIi9zaXRlMyIsICJKYWNrIiwgIi9qYWNrLnNpdGUiLCAiIiwgImNvbW1lbnQgMyIpCiAgICBkYW8ucHVibGlzaF9jb21tZW50KGMxKQogICAgZGFvLnB1Ymxpc2hfY29tbWVudChjMykKICAgIGFzc2VydCBjMgoKCkBweXRlc3QuZml4dHVyZQpkZWYgY2xpZW50KCk6CiAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKICAgIGRhdGFiYXNlLmNvbmZpZ3VyZSgic3FsaXRlOm1lbW9yeTovL2RiLnNxbGl0ZSIpCiAgICBpbml0X3Rlc3RfZGIoKQogICAgbG9nZ2VyLmluZm8oZiJzdGFydCBpbnRlcmZhY2Uge2FwaX0iKQogICAgcmV0dXJuIGFwcC50ZXN0X2NsaWVudCgpCgoKZGVmIHRlc3RfYXBpX3BpbmcoY2xpZW50KToKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL3BpbmciKQogICAgYXNzZXJ0IHJlc3AuZGF0YSA9PSBiIk9LIgoKCmRlZiB0ZXN0X2FwaV9jb3VudF9nbG9iYWwoY2xpZW50KToKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL2NvbW1lbnRzL2NvdW50IikKICAgIGQgPSBqc29uLmxvYWRzKHJlc3AuZGF0YSkKICAgIGFzc2VydCBkIGFuZCBkWyJjb3VudCJdID09IDIKCgpkZWYgdGVzdF9hcGlfY291bnRfdXJsKGNsaWVudCk6CiAgICByZXNwID0gY2xpZW50LmdldCgiL2FwaS9jb21tZW50cy9jb3VudD91cmw9L3NpdGUxIikKICAgIGQgPSBqc29uLmxvYWRzKHJlc3AuZGF0YSkKICAgIGFzc2VydCBkIGFuZCBkWyJjb3VudCJdID09IDEKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL2NvbW1lbnRzL2NvdW50P3VybD0vc2l0ZTIiKQogICAgZCA9IGpzb24ubG9hZHMocmVzcC5kYXRhKQogICAgYXNzZXJ0IGQgYW5kIGRbImNvdW50Il0gPT0gMAoKCmRlZiB0ZXN0X2FwaV9jb21tZW50KGNsaWVudCk6CiAgICByZXNwID0gY2xpZW50LmdldCgiL2FwaS9jb21tZW50cz91cmw9L3NpdGUxIikKICAgIGQgPSBqc29uLmxvYWRzKHJlc3AuZGF0YSkKICAgIGFzc2VydCBkIGFuZCBsZW4oZFsiZGF0YSJdKSA9PSAxCiAgICBjb21tZW50ID0gZFsiZGF0YSJdWzBdCiAgICBhc3NlcnQgY29tbWVudFsiYXV0aG9yIl0gPT0gIkJvYiIKICAgIGFzc2VydCBjb21tZW50WyJjb250ZW50Il0gPT0gImNvbW1lbnQgMSIKCgpkZWYgdGVzdF9hcGlfY29tbWVudF9ub3RfZm91bmQoY2xpZW50KToKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL2NvbW1lbnRzP3VybD0vc2l0ZTIiKQogICAgZCA9IGpzb24ubG9hZHMocmVzcC5kYXRhKQogICAgYXNzZXJ0IGQgYW5kIGRbImRhdGEiXSA9PSBbXQoAAAAAAAAAAFkGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAuwIAAAAAAAC7AgAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "tests/test_db.py", + "settings": + { + "buffer_size": 2740, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 7, + 1, + "insert", + { + "characters": " " + }, + "AQAAAHcAAAAAAAAAeAAAAAAAAAAAAAAA", + "AQAAAA" + ], + [ + 10, + 1, + "trim_trailing_white_space", + null, + "AQAAAHcAAAAAAAAAdwAAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAlQAAAAAAAACVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 23, + 1, + "insert", + { + "characters": "\ndef" + }, + "BQAAAMwAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADNAAAAAAAAAAEAAAAKzQAAAAAAAADOAAAAAAAAAAAAAADOAAAAAAAAAM8AAAAAAAAAAAAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzQAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" + ], + [ + 24, + 1, + "insert", + { + "characters": " test" + }, + "BQAAANAAAAAAAAAA0QAAAAAAAAAAAAAA0QAAAAAAAADSAAAAAAAAAAAAAADSAAAAAAAAANMAAAAAAAAAAAAAANMAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADVAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0AAAAAAAAADQAAAAAAAAAAAAAAAAAPC/" + ], + [ + 25, + 1, + "insert", + { + "characters": "_findc" + }, + "BgAAANUAAAAAAAAA1gAAAAAAAAAAAAAA1gAAAAAAAADXAAAAAAAAAAAAAADXAAAAAAAAANgAAAAAAAAAAAAAANgAAAAAAAAA2QAAAAAAAAAAAAAA2QAAAAAAAADaAAAAAAAAAAAAAADaAAAAAAAAANsAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1QAAAAAAAADVAAAAAAAAAAAAAAAAAPC/" + ], + [ + 26, + 1, + "left_delete", + null, + "AQAAANoAAAAAAAAA2gAAAAAAAAABAAAAYw", + "AQAAAAAAAAABAAAA2wAAAAAAAADbAAAAAAAAAAAAAAAAAPC/" + ], + [ + 27, + 1, + "insert", + { + "characters": "_comment_" + }, + "CQAAANoAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADcAAAAAAAAAAAAAADcAAAAAAAAAN0AAAAAAAAAAAAAAN0AAAAAAAAA3gAAAAAAAAAAAAAA3gAAAAAAAADfAAAAAAAAAAAAAADfAAAAAAAAAOAAAAAAAAAAAAAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADiAAAAAAAAAAAAAADiAAAAAAAAAOMAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2gAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" + ], + [ + 28, + 1, + "insert", + { + "characters": "by_id" + }, + "BQAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA5wAAAAAAAADoAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" + ], + [ + 29, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAOgAAAAAAAAA6gAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6AAAAAAAAADoAAAAAAAAAAAAAAAAAPC/" + ], + [ + 32, + 1, + "insert", + { + "characters": "sert" + }, + "BAAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA6gAAAAAAAADrAAAAAAAAAAAAAADrAAAAAAAAAOwAAAAAAAAAAAAAAOwAAAAAAAAA7QAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6QAAAAAAAADpAAAAAAAAAAAAAAAAAPC/" + ], + [ + 33, + 2, + "left_delete", + null, + "AgAAAOwAAAAAAAAA7AAAAAAAAAABAAAAdOsAAAAAAAAA6wAAAAAAAAABAAAAcg", + "AQAAAAAAAAABAAAA7QAAAAAAAADtAAAAAAAAAAAAAAAAAPC/" + ], + [ + 34, + 1, + "insert", + { + "characters": "t" + }, + "AQAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" + ], + [ + 35, + 1, + "insert_completion", + { + "completion": "setup_db", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "setup_db" + }, + "AgAAAOkAAAAAAAAA6QAAAAAAAAADAAAAc2V06QAAAAAAAADxAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA7AAAAAAAAADsAAAAAAAAAAAAAAAAAPC/" + ], + [ + 37, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAPIAAAAAAAAA8wAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA8gAAAAAAAADyAAAAAAAAAAAAAAAAAPC/" + ], + [ + 38, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAPMAAAAAAAAA9AAAAAAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA8wAAAAAAAADzAAAAAAAAAAAAAAAAAPC/" + ], + [ + 48, + 1, + "insert", + { + "characters": "," + }, + "AgAAAPEAAAAAAAAA8gAAAAAAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAAQAAAAgICAg", + "AQAAAAAAAAABAAAA8QAAAAAAAADxAAAAAAAAAAAAAAAAAPC/" + ], + [ + 49, + 1, + "insert", + { + "characters": " f" + }, + "AgAAAPIAAAAAAAAA8wAAAAAAAAAAAAAA8wAAAAAAAAD0AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA8gAAAAAAAADyAAAAAAAAAAAAAAAAAPC/" + ], + [ + 50, + 1, + "left_delete", + null, + "AQAAAPMAAAAAAAAA8wAAAAAAAAABAAAAZg", + "AQAAAAAAAAABAAAA9AAAAAAAAAD0AAAAAAAAAAAAAAAAAPC/" + ], + [ + 51, + 2, + "left_delete", + null, + "AgAAAPIAAAAAAAAA8gAAAAAAAAABAAAAIPEAAAAAAAAA8QAAAAAAAAABAAAALA", + "AQAAAAAAAAABAAAA8wAAAAAAAADzAAAAAAAAAAAAAAAAAPC/" + ], + [ + 53, + 1, + "reindent", + null, + "AQAAAPQAAAAAAAAA+AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA9AAAAAAAAAD0AAAAAAAAAAAAAAAAQHRA" + ], + [ + 54, + 1, + "insert", + { + "characters": "asse" + }, + "BAAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAAAAAAD6AAAAAAAAAPsAAAAAAAAAAAAAAPsAAAAAAAAA/AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAAPC/" + ], + [ + 55, + 1, + "insert", + { + "characters": "rt" + }, + "AgAAAPwAAAAAAAAA/QAAAAAAAAAAAAAA/QAAAAAAAAD+AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/AAAAAAAAAD8AAAAAAAAAAAAAAAAAPC/" + ], + [ + 56, + 1, + "insert", + { + "characters": " " + }, + "AQAAAP4AAAAAAAAA/wAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/gAAAAAAAAD+AAAAAAAAAAAAAAAAAPC/" + ], + [ + 58, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAP8AAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAEAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 61, + 1, + "insert", + { + "characters": " " + }, + "AgAAAP8AAAAAAAAAAAEAAAAAAAAAAAAAAQEAAAAAAAABAQAAAAAAAAQAAAAgICAg", + "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 66, + 1, + "paste", + null, + "AQAAAP8AAAAAAAAAEQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 67, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAABEBAAAAAAAAEwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" + ], + [ + 68, + 1, + "insert", + { + "characters": "1" + }, + "AQAAABIBAAAAAAAAEwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" + ], + [ + 73, + 1, + "insert", + { + "characters": "dao." + }, + "BAAAAP8AAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAABAQAAAAAAAAAAAAABAQAAAAAAAAIBAAAAAAAAAAAAAAIBAAAAAAAAAwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" + ], + [ + 75, + 1, + "trim_trailing_white_space", + null, + "AQAAABgBAAAAAAAAGAEAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAAwEAAAAAAAADAQAAAAAAAAAAAAAAAPC/" + ], + [ + 80, + 1, + "insert", + { + "characters": " is" + }, + "AwAAABgBAAAAAAAAGQEAAAAAAAAAAAAAGQEAAAAAAAAaAQAAAAAAAAAAAAAaAQAAAAAAABsBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGAEAAAAAAAAYAQAAAAAAAAAAAAAAAPC/" + ], + [ + 81, + 1, + "insert", + { + "characters": " None" + }, + "BQAAABsBAAAAAAAAHAEAAAAAAAAAAAAAHAEAAAAAAAAdAQAAAAAAAAAAAAAdAQAAAAAAAB4BAAAAAAAAAAAAAB4BAAAAAAAAHwEAAAAAAAAAAAAAHwEAAAAAAAAgAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGwEAAAAAAAAbAQAAAAAAAAAAAAAAAPC/" + ], + [ + 84, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAACABAAAAAAAAIQEAAAAAAAAAAAAAIQEAAAAAAAAlAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAIAEAAAAAAAAgAQAAAAAAAAAAAAAAAPC/" + ], + [ + 104, + 1, + "paste", + null, + "AQAAACUBAAAAAAAAYgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJQEAAAAAAAAlAQAAAAAAAAAAAAAAAPC/" + ], + [ + 106, + 1, + "insert", + { + "characters": "\nasser" + }, + "BwAAAGIBAAAAAAAAYwEAAAAAAAAAAAAAYwEAAAAAAABnAQAAAAAAAAAAAABnAQAAAAAAAGgBAAAAAAAAAAAAAGgBAAAAAAAAaQEAAAAAAAAAAAAAaQEAAAAAAABqAQAAAAAAAAAAAABqAQAAAAAAAGsBAAAAAAAAAAAAAGsBAAAAAAAAbAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYgEAAAAAAABiAQAAAAAAAAAAAAAAAPC/" + ], + [ + 107, + 1, + "insert", + { + "characters": "t" + }, + "AQAAAGwBAAAAAAAAbQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbAEAAAAAAABsAQAAAAAAAAAAAAAAAPC/" + ], + [ + 108, + 1, + "insert", + { + "characters": " " + }, + "AQAAAG0BAAAAAAAAbgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbQEAAAAAAABtAQAAAAAAAAAAAAAAAPC/" ], [ 109, 1, "insert", { - "characters": "()" + "characters": "c1." }, - "AgAAAB8BAAAAAAAAIAEAAAAAAAAAAAAAIAEAAAAAAAAhAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAHwEAAAAAAAAfAQAAAAAAAAAAAAAAAPC/" + "AwAAAG4BAAAAAAAAbwEAAAAAAAAAAAAAbwEAAAAAAABwAQAAAAAAAAAAAABwAQAAAAAAAHEBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbgEAAAAAAABuAQAAAAAAAAAAAAAAAPC/" + ], + [ + 110, + 1, + "insert", + { + "characters": "id" + }, + "AgAAAHEBAAAAAAAAcgEAAAAAAAAAAAAAcgEAAAAAAABzAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcQEAAAAAAABxAQAAAAAAAAAAAAAAAPC/" + ], + [ + 111, + 1, + "insert", + { + "characters": " is" + }, + "AwAAAHMBAAAAAAAAdAEAAAAAAAAAAAAAdAEAAAAAAAB1AQAAAAAAAAAAAAB1AQAAAAAAAHYBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcwEAAAAAAABzAQAAAAAAAAAAAAAAAPC/" + ], + [ + 112, + 1, + "insert", + { + "characters": " not" + }, + "BAAAAHYBAAAAAAAAdwEAAAAAAAAAAAAAdwEAAAAAAAB4AQAAAAAAAAAAAAB4AQAAAAAAAHkBAAAAAAAAAAAAAHkBAAAAAAAAegEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdgEAAAAAAAB2AQAAAAAAAAAAAAAAAPC/" + ], + [ + 113, + 1, + "insert", + { + "characters": " None" + }, + "BQAAAHoBAAAAAAAAewEAAAAAAAAAAAAAewEAAAAAAAB8AQAAAAAAAAAAAAB8AQAAAAAAAH0BAAAAAAAAAAAAAH0BAAAAAAAAfgEAAAAAAAAAAAAAfgEAAAAAAAB/AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAegEAAAAAAAB6AQAAAAAAAAAAAAAAAPC/" ], [ 117, 1, - "toggle_breakpoint", + "reindent", null, - "AQAAANgAAAAAAAAA2AAAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IDg4MzY3Y2ZlIC8vCg", - "AQAAAAAAAAABAAAACQEAAAAAAAAJAQAAAAAAAAAAAAAAAPC/" + "AQAAAIABAAAAAAAAhAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAEAAAAAAACAAQAAAAAAAAAAAAAAgG9A" ], [ - 133, + 120, 1, "insert", { - "characters": "\n" + "characters": "c2" }, - "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACFAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + "AgAAAIQBAAAAAAAAhQEAAAAAAAAAAAAAhQEAAAAAAACGAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhAEAAAAAAACEAQAAAAAAAAAAAAAAAEJA" ], [ - 134, + 121, + 2, + "left_delete", + null, + "AgAAAIUBAAAAAAAAhQEAAAAAAAABAAAAMoQBAAAAAAAAhAEAAAAAAAABAAAAYw", + "AQAAAAAAAAABAAAAhgEAAAAAAACGAQAAAAAAAAAAAAAAAPC/" + ], + [ + 122, 1, "insert", { - "characters": "returb" + "characters": "rec" }, - "BgAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACHAgAAAAAAAAAAAACHAgAAAAAAAIgCAAAAAAAAAAAAAIgCAAAAAAAAiQIAAAAAAAAAAAAAiQIAAAAAAACKAgAAAAAAAAAAAACKAgAAAAAAAIsCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQIAAAAAAACFAgAAAAAAAAAAAAAAAPC/" + "AwAAAIQBAAAAAAAAhQEAAAAAAAAAAAAAhQEAAAAAAACGAQAAAAAAAAAAAACGAQAAAAAAAIcBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhAEAAAAAAACEAQAAAAAAAAAAAAAAAPC/" ], [ - 135, + 123, + 3, + "left_delete", + null, + "AwAAAIYBAAAAAAAAhgEAAAAAAAABAAAAY4UBAAAAAAAAhQEAAAAAAAABAAAAZYQBAAAAAAAAhAEAAAAAAAABAAAAcg", + "AQAAAAAAAAABAAAAhwEAAAAAAACHAQAAAAAAAAAAAAAAAPC/" + ], + [ + 124, + 1, + "insert", + { + "characters": "find_c1" + }, + "BwAAAIQBAAAAAAAAhQEAAAAAAAAAAAAAhQEAAAAAAACGAQAAAAAAAAAAAACGAQAAAAAAAIcBAAAAAAAAAAAAAIcBAAAAAAAAiAEAAAAAAAAAAAAAiAEAAAAAAACJAQAAAAAAAAAAAACJAQAAAAAAAIoBAAAAAAAAAAAAAIoBAAAAAAAAiwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhAEAAAAAAACEAQAAAAAAAAAAAAAAAPC/" + ], + [ + 125, + 1, + "insert", + { + "characters": " " + }, + "AgAAAIsBAAAAAAAAjAEAAAAAAAAAAAAAjAEAAAAAAACNAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiwEAAAAAAACLAQAAAAAAAAAAAAAAAPC/" + ], + [ + 126, + 1, + "left_delete", + null, + "AQAAAIwBAAAAAAAAjAEAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAAjQEAAAAAAACNAQAAAAAAAAAAAAAAAPC/" + ], + [ + 127, + 1, + "insert", + { + "characters": "=" + }, + "AQAAAIwBAAAAAAAAjQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjAEAAAAAAACMAQAAAAAAAAAAAAAAAPC/" + ], + [ + 128, 1, "insert", { "characters": " " }, - "AQAAAIsCAAAAAAAAjAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" + "AQAAAI0BAAAAAAAAjgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQEAAAAAAACNAQAAAAAAAAAAAAAAAPC/" ], [ 136, - 2, - "left_delete", + 1, + "paste", null, - "AgAAAIsCAAAAAAAAiwIAAAAAAAABAAAAIIoCAAAAAAAAigIAAAAAAAABAAAAYg", - "AQAAAAAAAAABAAAAjAIAAAAAAACMAgAAAAAAAAAAAAAAAPC/" - ], - [ - 137, - 1, - "insert", - { - "characters": "n" - }, - "AQAAAIoCAAAAAAAAiwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAigIAAAAAAACKAgAAAAAAAAAAAAAAAPC/" - ], - [ - 138, - 1, - "insert", - { - "characters": " db" - }, - "AwAAAIsCAAAAAAAAjAIAAAAAAAAAAAAAjAIAAAAAAACNAgAAAAAAAAAAAACNAgAAAAAAAI4CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" + "AQAAAI4BAAAAAAAApwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjgEAAAAAAACOAQAAAAAAAAAAAAAAQHRA" ], [ 139, 1, - "insert_snippet", + "insert", { - "contents": "($0)" + "characters": "c1.id" }, - "AQAAAI4CAAAAAAAAkAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjgIAAAAAAACOAgAAAAAAAAAAAAAAAPC/" + "BgAAAKUBAAAAAAAApgEAAAAAAAAAAAAApgEAAAAAAACmAQAAAAAAAAEAAAAxpgEAAAAAAACnAQAAAAAAAAAAAACnAQAAAAAAAKgBAAAAAAAAAAAAAKgBAAAAAAAAqQEAAAAAAAAAAAAAqQEAAAAAAACqAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAApgEAAAAAAAClAQAAAAAAAAAAAAAAAPC/" ], [ 141, 1, - "insert_snippet", + "insert", { - "contents": "($0)" + "characters": "\nassert" }, - "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkAIAAAAAAACQAgAAAAAAAAAAAAAAAPC/" + "CAAAAKsBAAAAAAAArAEAAAAAAAAAAAAArAEAAAAAAACwAQAAAAAAAAAAAACwAQAAAAAAALEBAAAAAAAAAAAAALEBAAAAAAAAsgEAAAAAAAAAAAAAsgEAAAAAAACzAQAAAAAAAAAAAACzAQAAAAAAALQBAAAAAAAAAAAAALQBAAAAAAAAtQEAAAAAAAAAAAAAtQEAAAAAAAC2AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqwEAAAAAAACrAQAAAAAAAAAAAAAAAPC/" + ], + [ + 142, + 1, + "insert", + { + "characters": " " + }, + "AQAAALYBAAAAAAAAtwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtgEAAAAAAAC2AQAAAAAAAAAAAAAAAPC/" + ], + [ + 143, + 1, + "insert", + { + "characters": "find" + }, + "BAAAALcBAAAAAAAAuAEAAAAAAAAAAAAAuAEAAAAAAAC5AQAAAAAAAAAAAAC5AQAAAAAAALoBAAAAAAAAAAAAALoBAAAAAAAAuwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtwEAAAAAAAC3AQAAAAAAAAAAAAAAAPC/" + ], + [ + 144, + 1, + "insert", + { + "characters": "_c1" + }, + "AwAAALsBAAAAAAAAvAEAAAAAAAAAAAAAvAEAAAAAAAC9AQAAAAAAAAAAAAC9AQAAAAAAAL4BAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAuwEAAAAAAAC7AQAAAAAAAAAAAAAAAPC/" + ], + [ + 145, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"find_c1\",\"position\":{\"line\":17,\"character\":18},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"find_c1\",\"sortText\":\"09.9999.find_c1\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "find_c1" + }, + "AgAAALcBAAAAAAAAtwEAAAAAAAAHAAAAZmluZF9jMbcBAAAAAAAAvgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvgEAAAAAAAC+AQAAAAAAAAAAAAAAAPC/" + ], + [ + 146, + 1, + "insert", + { + "characters": "\n\n" + }, + "BQAAAL4BAAAAAAAAvwEAAAAAAAAAAAAAvwEAAAAAAADDAQAAAAAAAAAAAADDAQAAAAAAAMQBAAAAAAAAAAAAAMQBAAAAAAAAyAEAAAAAAAAAAAAAvwEAAAAAAAC/AQAAAAAAAAQAAAAgICAg", + "AQAAAAAAAAABAAAAvgEAAAAAAAC+AQAAAAAAAAAAAAAAAPC/" + ], + [ + 148, + 1, + "reindent", + null, + "AQAAAL8BAAAAAAAAwwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvwEAAAAAAAC/AQAAAAAAAAAAAAAAAEJA" + ], + [ + 149, + 1, + "insert", + { + "characters": "assert" + }, + "BwAAAMMBAAAAAAAAxAEAAAAAAAAAAAAAxQEAAAAAAADFAQAAAAAAAAQAAAAgICAgxAEAAAAAAADFAQAAAAAAAAAAAADFAQAAAAAAAMYBAAAAAAAAAAAAAMYBAAAAAAAAxwEAAAAAAAAAAAAAxwEAAAAAAADIAQAAAAAAAAAAAADIAQAAAAAAAMkBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwwEAAAAAAADDAQAAAAAAAAAAAAAAAPC/" ], [ 150, 1, - "right_delete", - null, - "AQAAAIUCAAAAAAAAhQIAAAAAAAANAAAAcmV0dXJuIGRiKCkoKQ", - "AQAAAAAAAAABAAAAkgIAAAAAAACFAgAAAAAAAAAAAAAAAEJA" + "insert", + { + "characters": " find_" + }, + "BgAAAMkBAAAAAAAAygEAAAAAAAAAAAAAygEAAAAAAADLAQAAAAAAAAAAAADLAQAAAAAAAMwBAAAAAAAAAAAAAMwBAAAAAAAAzQEAAAAAAAAAAAAAzQEAAAAAAADOAQAAAAAAAAAAAADOAQAAAAAAAM8BAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAyQEAAAAAAADJAQAAAAAAAAAAAAAAAPC/" ], [ - 152, + 157, 1, - "left_delete", - null, - "AQAAAIACAAAAAAAAgAIAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAgQIAAAAAAACBAgAAAAAAAAAAAAAAAAAA" + "insert", + { + "characters": "c1.i" + }, + "BAAAAM8BAAAAAAAA0AEAAAAAAAAAAAAA0AEAAAAAAADRAQAAAAAAAAAAAADRAQAAAAAAANIBAAAAAAAAAAAAANIBAAAAAAAA0wEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzwEAAAAAAADPAQAAAAAAAAAAAAAAAPC/" ], [ - 154, + 158, 1, - "trim_trailing_white_space", - null, - "AQAAAIACAAAAAAAAgAIAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAgAIAAAAAAACAAgAAAAAAAAAAAAAAAPC/" + "insert", + { + "characters": "d" + }, + "AQAAANMBAAAAAAAA1AEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0wEAAAAAAADTAQAAAAAAAAAAAAAAAPC/" + ], + [ + 159, + 1, + "insert", + { + "characters": " " + }, + "AQAAANQBAAAAAAAA1QEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1AEAAAAAAADUAQAAAAAAAAAAAAAAAPC/" ], [ 160, - 1, - "right_delete", + 3, + "left_delete", null, - "AQAAAAABAAAAAAAAAAEAAAAAAAAmAAAAIyByZXR1cm4gQ29tbWVudC5nZXRfYnlfaWQoY29tbWVudF9pZCk", - "AQAAAAAAAAABAAAAJgEAAAAAAAAAAQAAAAAAAAAAAAAAAEJA" + "AwAAANQBAAAAAAAA1AEAAAAAAAABAAAAINMBAAAAAAAA0wEAAAAAAAABAAAAZNIBAAAAAAAA0gEAAAAAAAABAAAAaQ", + "AQAAAAAAAAABAAAA1QEAAAAAAADVAQAAAAAAAAAAAAAAAPC/" ], [ 162, 1, - "left_delete", - null, - "AQAAAPsAAAAAAAAA+wAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAA/AAAAAAAAAD8AAAAAAAAAAAAAAAAAAAA" + "insert", + { + "characters": "id" + }, + "AgAAANIBAAAAAAAA0wEAAAAAAAAAAAAA0wEAAAAAAADUAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0gEAAAAAAADSAQAAAAAAAAAAAAAAAPC/" + ], + [ + 163, + 1, + "insert", + { + "characters": " =" + }, + "AgAAANQBAAAAAAAA1QEAAAAAAAAAAAAA1QEAAAAAAADWAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1AEAAAAAAADUAQAAAAAAAAAAAAAAAPC/" ], [ 164, 1, - "trim_trailing_white_space", - null, - "AQAAAPsAAAAAAAAA+wAAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAA+wAAAAAAAAD7AAAAAAAAAAAAAAAAAPC/" + "insert", + { + "characters": " c1." + }, + "BAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA1wEAAAAAAADYAQAAAAAAAAAAAADYAQAAAAAAANkBAAAAAAAAAAAAANkBAAAAAAAA2gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1gEAAAAAAADWAQAAAAAAAAAAAAAAAPC/" ], [ - 193, + 165, 1, - "right_delete", - null, - "AQAAAEkBAAAAAAAASQEAAAAAAAAWAAAALnN0cmZ0aW1lKFRJTUVfRk9STUFUKQ", - "AQAAAAAAAAABAAAASQEAAAAAAABfAQAAAAAAAP///////+9/" + "insert", + { + "characters": "id" + }, + "AgAAANoBAAAAAAAA2wEAAAAAAAAAAAAA2wEAAAAAAADcAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2gEAAAAAAADaAQAAAAAAAAAAAAAAAPC/" ], [ - 196, + 166, 1, "insert", { "characters": "\n" }, - "AgAAAEkBAAAAAAAASgEAAAAAAAAAAAAASgEAAAAAAABOAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAA0HRA" + "AgAAANwBAAAAAAAA3QEAAAAAAAAAAAAA3QEAAAAAAADhAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3AEAAAAAAADcAQAAAAAAAAAAAAAAAPC/" ], [ - 197, + 168, + 1, + "trim_trailing_white_space", + null, + "AQAAAN0BAAAAAAAA3QEAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAA4QEAAAAAAADhAQAAAAAAAAAAAAAAAPC/" + ], + [ + 172, 1, "insert", { - "characters": "db" + "characters": "=" }, - "AgAAAE4BAAAAAAAATwEAAAAAAAAAAAAATwEAAAAAAABQAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATgEAAAAAAABOAQAAAAAAAAAAAAAAAPC/" + "AQAAANUBAAAAAAAA1gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1QEAAAAAAADVAQAAAAAAAAAAAAAAAPC/" ], [ - 198, + 178, + 1, + "insert", + { + "characters": "\ndef" + }, + "BAAAAMwAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADOAAAAAAAAAAAAAADOAAAAAAAAAM8AAAAAAAAAAAAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAA4GlA" + ], + [ + 179, + 1, + "insert", + { + "characters": " " + }, + "AQAAANAAAAAAAAAA0QAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0AAAAAAAAADQAAAAAAAAAAAAAAAAAPC/" + ], + [ + 180, + 1, + "insert", + { + "characters": "is_" + }, + "AwAAANEAAAAAAAAA0gAAAAAAAAAAAAAA0gAAAAAAAADTAAAAAAAAAAAAAADTAAAAAAAAANQAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0QAAAAAAAADRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 181, + 3, + "left_delete", + null, + "AwAAANMAAAAAAAAA0wAAAAAAAAABAAAAX9IAAAAAAAAA0gAAAAAAAAABAAAAc9EAAAAAAAAA0QAAAAAAAAABAAAAaQ", + "AQAAAAAAAAABAAAA1AAAAAAAAADUAAAAAAAAAAAAAAAAAPC/" + ], + [ + 182, + 1, + "insert", + { + "characters": "equals_" + }, + "BwAAANEAAAAAAAAA0gAAAAAAAAAAAAAA0gAAAAAAAADTAAAAAAAAAAAAAADTAAAAAAAAANQAAAAAAAAAAAAAANQAAAAAAAAA1QAAAAAAAAAAAAAA1QAAAAAAAADWAAAAAAAAAAAAAADWAAAAAAAAANcAAAAAAAAAAAAAANcAAAAAAAAA2AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0QAAAAAAAADRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 183, + 1, + "insert", + { + "characters": "oco" + }, + "AwAAANgAAAAAAAAA2QAAAAAAAAAAAAAA2QAAAAAAAADaAAAAAAAAAAAAAADaAAAAAAAAANsAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2AAAAAAAAADYAAAAAAAAAAAAAAAAAPC/" + ], + [ + 184, + 3, + "left_delete", + null, + "AwAAANoAAAAAAAAA2gAAAAAAAAABAAAAb9kAAAAAAAAA2QAAAAAAAAABAAAAY9gAAAAAAAAA2AAAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAA2wAAAAAAAADbAAAAAAAAAAAAAAAAAPC/" + ], + [ + 185, + 1, + "insert", + { + "characters": "coù" + }, + "AwAAANgAAAAAAAAA2QAAAAAAAAAAAAAA2QAAAAAAAADaAAAAAAAAAAAAAADaAAAAAAAAANsAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2AAAAAAAAADYAAAAAAAAAAAAAAAAAPC/" + ], + [ + 186, + 1, + "left_delete", + null, + "AQAAANoAAAAAAAAA2gAAAAAAAAACAAAAw7k", + "AQAAAAAAAAABAAAA2wAAAAAAAADbAAAAAAAAAAAAAAAAAPC/" + ], + [ + 187, + 1, + "insert", + { + "characters": "mment" + }, + "BQAAANoAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADcAAAAAAAAAAAAAADcAAAAAAAAAN0AAAAAAAAAAAAAAN0AAAAAAAAA3gAAAAAAAAAAAAAA3gAAAAAAAADfAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2gAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" + ], + [ + 188, 1, "insert_snippet", { "contents": "($0)" }, - "AQAAAFABAAAAAAAAUgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUAEAAAAAAABQAQAAAAAAAAAAAAAAAPC/" + "AQAAAN8AAAAAAAAA4QAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" ], [ - 200, + 189, 1, "insert", { - "characters": ".inser" + "characters": "c" }, - "BgAAAFIBAAAAAAAAUwEAAAAAAAAAAAAAUwEAAAAAAABUAQAAAAAAAAAAAABUAQAAAAAAAFUBAAAAAAAAAAAAAFUBAAAAAAAAVgEAAAAAAAAAAAAAVgEAAAAAAABXAQAAAAAAAAAAAABXAQAAAAAAAFgBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUgEAAAAAAABSAQAAAAAAAAAAAAAAAPC/" + "AQAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" ], [ - 201, - 5, - "left_delete", - null, - "BQAAAFcBAAAAAAAAVwEAAAAAAAABAAAAclYBAAAAAAAAVgEAAAAAAAABAAAAZVUBAAAAAAAAVQEAAAAAAAABAAAAc1QBAAAAAAAAVAEAAAAAAAABAAAAblMBAAAAAAAAUwEAAAAAAAABAAAAaQ", - "AQAAAAAAAAABAAAAWAEAAAAAAABYAQAAAAAAAAAAAAAAAPC/" - ], - [ - 202, + 190, 1, "insert", { - "characters": "comment.i" + "characters": ":" }, - "CQAAAFMBAAAAAAAAVAEAAAAAAAAAAAAAVAEAAAAAAABVAQAAAAAAAAAAAABVAQAAAAAAAFYBAAAAAAAAAAAAAFYBAAAAAAAAVwEAAAAAAAAAAAAAVwEAAAAAAABYAQAAAAAAAAAAAABYAQAAAAAAAFkBAAAAAAAAAAAAAFkBAAAAAAAAWgEAAAAAAAAAAAAAWgEAAAAAAABbAQAAAAAAAAAAAABbAQAAAAAAAFwBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUwEAAAAAAABTAQAAAAAAAAAAAAAAAPC/" + "AQAAAOEAAAAAAAAA4gAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4QAAAAAAAADhAAAAAAAAAAAAAAAAAPC/" ], [ - 203, + 191, 1, "insert", { - "characters": "ns" + "characters": " c" }, - "AgAAAFwBAAAAAAAAXQEAAAAAAAAAAAAAXQEAAAAAAABeAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXAEAAAAAAABcAQAAAAAAAAAAAAAAAPC/" + "AgAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA4wAAAAAAAADkAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" ], [ - 204, - 1, - "insert", - { - "characters": "ert-" - }, - "BAAAAF4BAAAAAAAAXwEAAAAAAAAAAAAAXwEAAAAAAABgAQAAAAAAAAAAAABgAQAAAAAAAGEBAAAAAAAAAAAAAGEBAAAAAAAAYgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXgEAAAAAAABeAQAAAAAAAAAAAAAAAPC/" - ], - [ - 205, + 192, 1, "left_delete", null, - "AQAAAGEBAAAAAAAAYQEAAAAAAAABAAAALQ", - "AQAAAAAAAAABAAAAYgEAAAAAAABiAQAAAAAAAAAAAAAAAPC/" + "AQAAAOMAAAAAAAAA4wAAAAAAAAABAAAAYw", + "AQAAAAAAAAABAAAA5AAAAAAAAADkAAAAAAAAAAAAAAAAAPC/" + ], + [ + 193, + 1, + "insert", + { + "characters": "Comment," + }, + "CAAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA5wAAAAAAAADoAAAAAAAAAAAAAADoAAAAAAAAAOkAAAAAAAAAAAAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA6gAAAAAAAADrAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" + ], + [ + 194, + 1, + "insert", + { + "characters": " " + }, + "AQAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" ], [ 206, 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAGEBAAAAAAAAYwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYQEAAAAAAABhAQAAAAAAAAAAAAAAAPC/" - ], - [ - 211, - 1, - "paste", + "right_delete", null, - "AQAAAEgAAAAAAAAAaQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASAAAAAAAAABIAAAAAAAAAAAAAAAAAPC/" + "AQAAAOEAAAAAAAAA4QAAAAAAAAAJAAAAOiBDb21tZW50", + "AQAAAAAAAAABAAAA6gAAAAAAAADhAAAAAAAAAAAAAAAAAPC/" ], [ - 213, + 208, 1, "insert", { - "characters": "asd" + "characters": "c1," }, - "BAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABhAAAAAAAAAAkAAABkYXRhY2xhc3NhAAAAAAAAAGIAAAAAAAAAAAAAAGIAAAAAAAAAYwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaQAAAAAAAABgAAAAAAAAAAAAAAAAAPC/" + "BAAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADhAAAAAAAAAAEAAABj4QAAAAAAAADiAAAAAAAAAAAAAADiAAAAAAAAAOMAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4QAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" ], [ - 214, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":3,\"sortText\":\"05.0000.asdict\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":3,\"character\":27},\"symbolLabel\":\"asdict\",\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"asdict\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "asdict" - }, - "AgAAAGAAAAAAAAAAYAAAAAAAAAADAAAAYXNkYAAAAAAAAABmAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAPC/" - ], - [ - 217, + 209, 1, "insert", { - "characters": "asd" + "characters": " c2" }, - "AwAAAIABAAAAAAAAgQEAAAAAAAAAAAAAgQEAAAAAAACCAQAAAAAAAAAAAACCAQAAAAAAAIMBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAEAAAAAAACAAQAAAAAAAAAAAAAAAPC/" + "AwAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" + ], + [ + 210, + 2, + "right_delete", + null, + "AgAAAOYAAAAAAAAA5gAAAAAAAAABAAAALOYAAAAAAAAA5gAAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAA5gAAAAAAAADmAAAAAAAAAAAAAAAAAPC/" ], [ 218, 1, - "insert_completion", + "insert", { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":3,\"sortText\":\"05.0000.asdict\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":16,\"character\":27},\"symbolLabel\":\"asdict\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"asdict\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "asdict" + "characters": "com" }, - "AgAAAIABAAAAAAAAgAEAAAAAAAADAAAAYXNkgAEAAAAAAACGAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgwEAAAAAAACDAQAAAAAAAAAAAAAAAPC/" + "BAAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADhAAAAAAAAAAIAAABjMeEAAAAAAAAA4gAAAAAAAAAAAAAA4gAAAAAAAADjAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4gAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" ], [ 219, 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAIYBAAAAAAAAiAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhgEAAAAAAACGAQAAAAAAAAAAAAAAAPC/" + "left_delete", + null, + "AQAAAOIAAAAAAAAA4gAAAAAAAAABAAAAbQ", + "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" ], [ 220, 1, "insert", { - "characters": "comment" + "characters": "mment" }, - "BwAAAIcBAAAAAAAAiAEAAAAAAAAAAAAAiAEAAAAAAACJAQAAAAAAAAAAAACJAQAAAAAAAIoBAAAAAAAAAAAAAIoBAAAAAAAAiwEAAAAAAAAAAAAAiwEAAAAAAACMAQAAAAAAAAAAAACMAQAAAAAAAI0BAAAAAAAAAAAAAI0BAAAAAAAAjgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhwEAAAAAAACHAQAAAAAAAAAAAAAAAPC/" - ], - [ - 225, - 1, - "right_delete", - null, - "AQAAAJUBAAAAAAAAlQEAAAAAAAAOAAAAY29tbWVudC5zYXZlKCk", - "AQAAAAAAAAABAAAAowEAAAAAAACVAQAAAAAAAAAAAAAAAEJA" + "BQAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA4wAAAAAAAADkAAAAAAAAAAAAAADkAAAAAAAAAOUAAAAAAAAAAAAAAOUAAAAAAAAA5gAAAAAAAAAAAAAA5gAAAAAAAADnAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" ], [ 227, 1, - "left_delete", - null, - "AQAAAJABAAAAAAAAkAEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAkQEAAAAAAACRAQAAAAAAAAAAAAAAAAAA" + "insert", + { + "characters": "other" + }, + "BgAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA6gAAAAAAAADqAAAAAAAAAAIAAABjMuoAAAAAAAAA6wAAAAAAAAAAAAAA6wAAAAAAAADsAAAAAAAAAAAAAADsAAAAAAAAAO0AAAAAAAAAAAAAAO0AAAAAAAAA7gAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6QAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" + ], + [ + 229, + 1, + "insert", + { + "characters": ":" + }, + "AQAAAO8AAAAAAAAA8AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA7wAAAAAAAADvAAAAAAAAAAAAAAAAAPC/" ], [ 230, 1, - "trim_trailing_white_space", - null, - "AQAAAJABAAAAAAAAkAEAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAlQEAAAAAAACVAQAAAAAAAAAAAAAAgHZA" - ], - [ - 235, - 1, - "right_delete", - null, - "AQAAAOABAAAAAAAA4AEAAAAAAAAWAAAALnN0cmZ0aW1lKFRJTUVfRk9STUFUKQ", - "AQAAAAAAAAABAAAA4AEAAAAAAAD2AQAAAAAAAP///////+9/" - ], - [ - 239, - 1, - "right_delete", - null, - "AQAAAK4AAAAAAAAArgAAAAAAAAAhAAAAVElNRV9GT1JNQVQgPSAiJVktJW0tJWQgJUg6JU06JVMi", - "AQAAAAAAAAABAAAAzwAAAAAAAACuAAAAAAAAAAAAAAAAAAAA" - ], - [ - 240, - 2, - "left_delete", - null, - "AgAAAK0AAAAAAAAArQAAAAAAAAABAAAACqwAAAAAAAAArAAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAArgAAAAAAAACuAAAAAAAAAAAAAAAAAPC/" - ], - [ - 251, - 1, - "paste", - null, - "AgAAAMIBAAAAAAAA5gEAAAAAAAAAAAAA5gEAAAAAAADmAQAAAAAAAA4AAABjb21tZW50LnNhdmUoKQ", - "AQAAAAAAAAABAAAAwgEAAAAAAADQAQAAAAAAAAAAAAAAAPC/" - ], - [ - 261, - 1, - "insert", - { - "characters": "\ndb" - }, - "BAAAAA4CAAAAAAAADwIAAAAAAAAAAAAADwIAAAAAAAATAgAAAAAAAAAAAAATAgAAAAAAABQCAAAAAAAAAAAAABQCAAAAAAAAFQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADgIAAAAAAAAOAgAAAAAAAAAAAAAAAPC/" - ], - [ - 262, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAABUCAAAAAAAAFwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFQIAAAAAAAAVAgAAAAAAAAAAAAAAAPC/" - ], - [ - 264, - 1, - "insert", - { - "characters": "." - }, - "AQAAABcCAAAAAAAAGAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFwIAAAAAAAAXAgAAAAAAAAAAAAAAAPC/" - ], - [ - 265, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAABgCAAAAAAAAGgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGAIAAAAAAAAYAgAAAAAAAAAAAAAAAPC/" - ], - [ - 266, - 1, - "run_macro_file", - { - "file": "res://Packages/Default/Delete Left Right.sublime-macro" - }, - "AgAAABgCAAAAAAAAGAIAAAAAAAABAAAAKBgCAAAAAAAAGAIAAAAAAAABAAAAKQ", - "AQAAAAAAAAABAAAAGQIAAAAAAAAZAgAAAAAAAAAAAAAAAPC/" - ], - [ - 267, - 1, - "left_delete", - null, - "AQAAABcCAAAAAAAAFwIAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAGAIAAAAAAAAYAgAAAAAAAAAAAAAAAPC/" - ], - [ - 268, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAABcCAAAAAAAAGQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFwIAAAAAAAAXAgAAAAAAAAAAAAAAAPC/" - ], - [ - 269, - 1, - "insert", - { - "characters": "db" - }, - "AgAAABgCAAAAAAAAGQIAAAAAAAAAAAAAGQIAAAAAAAAaAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGAIAAAAAAAAYAgAAAAAAAAAAAAAAAPC/" - ], - [ - 270, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAABoCAAAAAAAAHAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGgIAAAAAAAAaAgAAAAAAAAAAAAAAAPC/" - ], - [ - 272, - 1, - "insert", - { - "characters": ".comment." - }, - "CQAAABwCAAAAAAAAHQIAAAAAAAAAAAAAHQIAAAAAAAAeAgAAAAAAAAAAAAAeAgAAAAAAAB8CAAAAAAAAAAAAAB8CAAAAAAAAIAIAAAAAAAAAAAAAIAIAAAAAAAAhAgAAAAAAAAAAAAAhAgAAAAAAACICAAAAAAAAAAAAACICAAAAAAAAIwIAAAAAAAAAAAAAIwIAAAAAAAAkAgAAAAAAAAAAAAAkAgAAAAAAACUCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAHAIAAAAAAAAcAgAAAAAAAAAAAAAAAPC/" - ], - [ - 273, - 1, - "insert", - { - "characters": "id" - }, - "AgAAACUCAAAAAAAAJgIAAAAAAAAAAAAAJgIAAAAAAAAnAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJQIAAAAAAAAlAgAAAAAAAAAAAAAAAPC/" - ], - [ - 275, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAACcCAAAAAAAAKAIAAAAAAAAAAAAAKAIAAAAAAAApAgAAAAAAAAAAAAApAgAAAAAAACoCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJwIAAAAAAAAnAgAAAAAAAAAAAAAAAPC/" - ], - [ - 276, - 1, - "insert", - { - "characters": " comment." - }, - "CQAAACoCAAAAAAAAKwIAAAAAAAAAAAAAKwIAAAAAAAAsAgAAAAAAAAAAAAAsAgAAAAAAAC0CAAAAAAAAAAAAAC0CAAAAAAAALgIAAAAAAAAAAAAALgIAAAAAAAAvAgAAAAAAAAAAAAAvAgAAAAAAADACAAAAAAAAAAAAADACAAAAAAAAMQIAAAAAAAAAAAAAMQIAAAAAAAAyAgAAAAAAAAAAAAAyAgAAAAAAADMCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKgIAAAAAAAAqAgAAAAAAAAAAAAAAAPC/" - ], - [ - 277, - 1, - "insert", - { - "characters": "id" - }, - "AgAAADMCAAAAAAAANAIAAAAAAAAAAAAANAIAAAAAAAA1AgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMwIAAAAAAAAzAgAAAAAAAAAAAAAAAPC/" - ], - [ - 278, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"09.9999.id\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":23,\"character\":38},\"symbolLabel\":\"id\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"id\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "id" - }, - "AgAAADMCAAAAAAAAMwIAAAAAAAACAAAAaWQzAgAAAAAAADUCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAAPC/" - ], - [ - 282, - 1, - "insert", - { - "characters": ".de" - }, - "AwAAADYCAAAAAAAANwIAAAAAAAAAAAAANwIAAAAAAAA4AgAAAAAAAAAAAAA4AgAAAAAAADkCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANgIAAAAAAAA2AgAAAAAAAAAAAAAA8HVA" - ], - [ - 283, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":2,\"sortText\":\"09.9999.delete\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":23,\"character\":42},\"symbolLabel\":\"delete\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"delete\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "delete" - }, - "AgAAADcCAAAAAAAANwIAAAAAAAACAAAAZGU3AgAAAAAAAD0CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOQIAAAAAAAA5AgAAAAAAAAAAAAAAAPC/" - ], - [ - 284, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAD0CAAAAAAAAPwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAPQIAAAAAAAA9AgAAAAAAAAAAAAAAAPC/" - ], - [ - 287, - 1, - "insert", - { - "characters": "_" - }, - "AQAAADcCAAAAAAAAOAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" - ], - [ - 295, - 1, - "left_delete", - null, - "AQAAADcCAAAAAAAANwIAAAAAAAABAAAAXw", - "AQAAAAAAAAABAAAAOAIAAAAAAAA4AgAAAAAAAAAAAAAAEHdA" - ], - [ - 298, - 1, - "right_delete", - null, - "AQAAAEQCAAAAAAAARAIAAAAAAAAZAAAAY29tbWVudC5kZWxldGVfaW5zdGFuY2UoKQ", - "AQAAAAAAAAABAAAAXQIAAAAAAABEAgAAAAAAAAAAAAAAAEJA" - ], - [ - 300, - 1, - "left_delete", - null, - "AQAAAD8CAAAAAAAAPwIAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAQAIAAAAAAABAAgAAAAAAAAAAAAAAAAAA" - ], - [ - 302, - 1, - "trim_trailing_white_space", - null, - "AQAAAD8CAAAAAAAAPwIAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAPwIAAAAAAAA/AgAAAAAAAAAAAAAAAPC/" - ], - [ - 309, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAGMCAAAAAAAAZAIAAAAAAAAAAAAAZAIAAAAAAABoAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYwIAAAAAAABjAgAAAAAAAAAAAAAAAPC/" - ], - [ - 310, - 1, - "paste", - null, - "AQAAAGgCAAAAAAAAiwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaAIAAAAAAABoAgAAAAAAAAAAAAAAAPC/" - ], - [ - 312, - 1, - "insert", - { - "characters": "return" - }, - "BgAAAGgCAAAAAAAAaQIAAAAAAAAAAAAAaQIAAAAAAABqAgAAAAAAAAAAAABqAgAAAAAAAGsCAAAAAAAAAAAAAGsCAAAAAAAAbAIAAAAAAAAAAAAAbAIAAAAAAABtAgAAAAAAAAAAAABtAgAAAAAAAG4CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaAIAAAAAAABoAgAAAAAAAAAAAAAAAEJA" - ], - [ - 313, - 1, - "insert", - { - "characters": " " - }, - "AQAAAG4CAAAAAAAAbwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbgIAAAAAAABuAgAAAAAAAAAAAAAAAPC/" - ], - [ - 319, - 1, - "insert", - { - "characters": "notified" - }, - "CQAAAIECAAAAAAAAggIAAAAAAAAAAAAAggIAAAAAAACCAgAAAAAAAAIAAABpZIICAAAAAAAAgwIAAAAAAAAAAAAAgwIAAAAAAACEAgAAAAAAAAAAAACEAgAAAAAAAIUCAAAAAAAAAAAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACHAgAAAAAAAAAAAACHAgAAAAAAAIgCAAAAAAAAAAAAAIgCAAAAAAAAiQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgQIAAAAAAACDAgAAAAAAAAAAAAAAAPC/" - ], - [ - 322, - 1, - "insert", - { - "characters": "None" - }, - "BQAAAI0CAAAAAAAAjgIAAAAAAAAAAAAAjgIAAAAAAACOAgAAAAAAAAcAAABjb21tZW50jgIAAAAAAACPAgAAAAAAAAAAAACPAgAAAAAAAJACAAAAAAAAAAAAAJACAAAAAAAAkQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQIAAAAAAACUAgAAAAAAAAAAAAAAAPC/" - ], - [ - 324, - 1, - "right_delete", - null, - "AQAAAJECAAAAAAAAkQIAAAAAAAADAAAALmlk", - "AQAAAAAAAAABAAAAkQIAAAAAAACUAgAAAAAAAAAAAAAAAPC/" - ], - [ - 326, - 1, - "insert", - { - "characters": ".se" - }, - "AwAAAJICAAAAAAAAkwIAAAAAAAAAAAAAkwIAAAAAAACUAgAAAAAAAAAAAACUAgAAAAAAAJUCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkgIAAAAAAACSAgAAAAAAAAAAAAAAAPC/" - ], - [ - 327, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":2,\"sortText\":\"09.9999.select\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":27,\"character\":49},\"symbolLabel\":\"select\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"select\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "select" - }, - "AgAAAJMCAAAAAAAAkwIAAAAAAAACAAAAc2WTAgAAAAAAAJkCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlQIAAAAAAACVAgAAAAAAAAAAAAAAAPC/" - ], - [ - 328, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAJkCAAAAAAAAmwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAmQIAAAAAAACZAgAAAAAAAAAAAAAAAPC/" - ], - [ - 333, - 1, - "right_delete", - null, - "AQAAAKACAAAAAAAAoAIAAAAAAAA5AAAAcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5ub3RpZmllZC5pc19udWxsKCkp", - "AQAAAAAAAAABAAAAoAIAAAAAAADZAgAAAAAAAP///////+9/" - ], - [ - 335, - 1, - "left_delete", - null, - "AQAAAJsCAAAAAAAAmwIAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAnAIAAAAAAACcAgAAAAAAAAAAAAAAAAAA" - ], - [ - 337, - 1, - "trim_trailing_white_space", - null, - "AQAAAJsCAAAAAAAAmwIAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAmwIAAAAAAACbAgAAAAAAAAAAAAAAAPC/" - ], - [ - 344, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAMACAAAAAAAAwQIAAAAAAAAAAAAAwQIAAAAAAADFAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwAIAAAAAAADAAgAAAAAAAP///////+9/" - ], - [ - 345, - 1, - "paste", - null, - "AQAAAMUCAAAAAAAA+AIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxQIAAAAAAADFAgAAAAAAAAAAAAAAAPC/" - ], - [ - 351, - 1, - "insert", - { - "characters": "published" - }, - "CgAAAN4CAAAAAAAA3wIAAAAAAAAAAAAA3wIAAAAAAADfAgAAAAAAAAgAAABub3RpZmllZN8CAAAAAAAA4AIAAAAAAAAAAAAA4AIAAAAAAADhAgAAAAAAAAAAAADhAgAAAAAAAOICAAAAAAAAAAAAAOICAAAAAAAA4wIAAAAAAAAAAAAA4wIAAAAAAADkAgAAAAAAAAAAAADkAgAAAAAAAOUCAAAAAAAAAAAAAOUCAAAAAAAA5gIAAAAAAAAAAAAA5gIAAAAAAADnAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3gIAAAAAAADmAgAAAAAAAAAAAAAAAPC/" - ], - [ - 355, - 1, - "right_delete", - null, - "AQAAAP4CAAAAAAAA/gIAAAAAAAA6AAAAcmV0dXJuIENvbW1lbnQuc2VsZWN0KCkud2hlcmUoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbCgpKQ", - "AQAAAAAAAAABAAAA/gIAAAAAAAA4AwAAAAAAAP///////+9/" - ], - [ - 357, - 1, - "left_delete", - null, - "AQAAAPkCAAAAAAAA+QIAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAA+gIAAAAAAAD6AgAAAAAAAAAAAAAAAAAA" - ], - [ - 360, - 1, - "trim_trailing_white_space", - null, - "AQAAAPkCAAAAAAAA+QIAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAA/gIAAAAAAAD+AgAAAAAAAAAAAAAAgH9A" - ], - [ - 363, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAACQDAAAAAAAAJQMAAAAAAAAAAAAAJQMAAAAAAAApAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJAMAAAAAAAAkAwAAAAAAAP///////+9/" - ], - [ - 364, - 1, - "insert", - { - "characters": "return" - }, - "BgAAACkDAAAAAAAAKgMAAAAAAAAAAAAAKgMAAAAAAAArAwAAAAAAAAAAAAArAwAAAAAAACwDAAAAAAAAAAAAACwDAAAAAAAALQMAAAAAAAAAAAAALQMAAAAAAAAuAwAAAAAAAAAAAAAuAwAAAAAAAC8DAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKQMAAAAAAAApAwAAAAAAAAAAAAAAAPC/" - ], - [ - 365, - 1, - "insert", - { - "characters": " " - }, - "AQAAAC8DAAAAAAAAMAMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALwMAAAAAAAAvAwAAAAAAAAAAAAAAAPC/" - ], - [ - 372, - 1, - "paste", - null, - "AQAAADADAAAAAAAAXQMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMAMAAAAAAAAwAwAAAAAAAP///////+9/" - ], - [ - 377, - 1, - "insert", - { - "characters": "url" - }, - "BAAAAEIDAAAAAAAAQwMAAAAAAAAAAAAAQwMAAAAAAABDAwAAAAAAAAkAAABwdWJsaXNoZWRDAwAAAAAAAEQDAAAAAAAAAAAAAEQDAAAAAAAARQMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQgMAAAAAAABLAwAAAAAAAAAAAAAAAPC/" - ], - [ - 380, - 1, - "insert", - { - "characters": "url" - }, - "BAAAAEkDAAAAAAAASgMAAAAAAAAAAAAASgMAAAAAAABKAwAAAAAAAAQAAABOb25lSgMAAAAAAABLAwAAAAAAAAAAAABLAwAAAAAAAEwDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASQMAAAAAAABNAwAAAAAAAAAAAAAAAPC/" - ], - [ - 381, - 1, - "insert", - { - "characters": " &&" - }, - "AwAAAEwDAAAAAAAATQMAAAAAAAAAAAAATQMAAAAAAABOAwAAAAAAAAAAAABOAwAAAAAAAE8DAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATAMAAAAAAABMAwAAAAAAAAAAAAAAAPC/" - ], - [ - 382, - 1, - "insert", - { - "characters": " " - }, - "AQAAAE8DAAAAAAAAUAMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATwMAAAAAAABPAwAAAAAAAAAAAAAAAPC/" - ], - [ - 383, - 1, - "left_delete", - null, - "AQAAAE8DAAAAAAAATwMAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAUAMAAAAAAABQAwAAAAAAAAAAAAAAAPC/" - ], - [ - 384, - 1, - "insert", - { - "characters": " " - }, - "AQAAAE8DAAAAAAAAUAMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATwMAAAAAAABPAwAAAAAAAAAAAAAAAPC/" - ], - [ - 385, - 2, - "left_delete", - null, - "AgAAAE8DAAAAAAAATwMAAAAAAAABAAAAIE4DAAAAAAAATgMAAAAAAAABAAAAJg", - "AQAAAAAAAAABAAAAUAMAAAAAAABQAwAAAAAAAAAAAAAAAPC/" - ], - [ - 386, - 1, - "insert", - { - "characters": " " - }, - "AQAAAE4DAAAAAAAATwMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATgMAAAAAAABOAwAAAAAAAAAAAAAAAPC/" - ], - [ - 394, - 1, - "paste", - null, - "AQAAAE8DAAAAAAAAXAMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATwMAAAAAAABPAwAAAAAAAAAAAAAAAPC/" - ], - [ - 395, - 1, - "insert", - { - "characters": "published" - }, - "CQAAAFwDAAAAAAAAXQMAAAAAAAAAAAAAXQMAAAAAAABeAwAAAAAAAAAAAABeAwAAAAAAAF8DAAAAAAAAAAAAAF8DAAAAAAAAYAMAAAAAAAAAAAAAYAMAAAAAAABhAwAAAAAAAAAAAABhAwAAAAAAAGIDAAAAAAAAAAAAAGIDAAAAAAAAYwMAAAAAAAAAAAAAYwMAAAAAAABkAwAAAAAAAAAAAABkAwAAAAAAAGUDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXAMAAAAAAABcAwAAAAAAAAAAAAAAAPC/" - ], - [ - 396, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAAGUDAAAAAAAAZgMAAAAAAAAAAAAAZgMAAAAAAABnAwAAAAAAAAAAAABnAwAAAAAAAGgDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAZQMAAAAAAABlAwAAAAAAAAAAAAAAAPC/" - ], - [ - 397, - 1, - "insert", - { - "characters": " None" - }, - "BQAAAGgDAAAAAAAAaQMAAAAAAAAAAAAAaQMAAAAAAABqAwAAAAAAAAAAAABqAwAAAAAAAGsDAAAAAAAAAAAAAGsDAAAAAAAAbAMAAAAAAAAAAAAAbAMAAAAAAABtAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaAMAAAAAAABoAwAAAAAAAAAAAAAAAPC/" - ], - [ - 401, - 1, - "insert", - { - "characters": "!" - }, - "AgAAAGYDAAAAAAAAZwMAAAAAAAAAAAAAZwMAAAAAAABnAwAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAAZgMAAAAAAABnAwAAAAAAAAAAAAAAAPC/" - ], - [ - 406, - 1, - "insert", - { - "characters": "(" - }, - "AQAAADUDAAAAAAAANgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANQMAAAAAAAA1AwAAAAAAAAAAAAAAAPC/" - ], - [ - 409, - 1, - "insert", - { - "characters": ")" - }, - "AQAAAE0DAAAAAAAATgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATQMAAAAAAABNAwAAAAAAAAAAAAAAAPC/" - ], - [ - 412, - 1, - "insert", - { - "characters": "(" - }, - "AQAAAFEDAAAAAAAAUgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUQMAAAAAAABRAwAAAAAAAAAAAAAAAPC/" - ], - [ - 416, - 1, - "insert", - { - "characters": ")" - }, - "AQAAAHEDAAAAAAAAcgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcQMAAAAAAABxAwAAAAAAAAAAAAAAAPC/" - ], - [ - 420, - 1, - "insert", - { - "characters": ".sot" - }, - "BAAAAHsDAAAAAAAAfAMAAAAAAAAAAAAAfAMAAAAAAAB9AwAAAAAAAAAAAAB9AwAAAAAAAH4DAAAAAAAAAAAAAH4DAAAAAAAAfwMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAewMAAAAAAAB7AwAAAAAAAAAAAAAAAPC/" - ], - [ - 421, - 1, - "left_delete", - null, - "AQAAAH4DAAAAAAAAfgMAAAAAAAABAAAAdA", - "AQAAAAAAAAABAAAAfwMAAAAAAAB/AwAAAAAAAAAAAAAAAPC/" - ], - [ - 422, - 1, - "insert", - { - "characters": "rt-" - }, - "AwAAAH4DAAAAAAAAfwMAAAAAAAAAAAAAfwMAAAAAAACAAwAAAAAAAAAAAACAAwAAAAAAAIEDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfgMAAAAAAAB+AwAAAAAAAAAAAAAAAPC/" - ], - [ - 423, - 1, - "left_delete", - null, - "AQAAAIADAAAAAAAAgAMAAAAAAAABAAAALQ", - "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" - ], - [ - 424, - 1, - "insert", - { - "characters": "-" - }, - "AQAAAIADAAAAAAAAgQMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAMAAAAAAACAAwAAAAAAAAAAAAAAAPC/" - ], - [ - 425, - 1, - "left_delete", - null, - "AQAAAIADAAAAAAAAgAMAAAAAAAABAAAALQ", - "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" - ], - [ - 426, - 1, - "insert", - { - "characters": "-" - }, - "AQAAAIADAAAAAAAAgQMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAMAAAAAAACAAwAAAAAAAAAAAAAAAPC/" - ], - [ - 427, - 1, - "left_delete", - null, - "AQAAAIADAAAAAAAAgAMAAAAAAAABAAAALQ", - "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" - ], - [ - 428, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAIADAAAAAAAAggMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAMAAAAAAACAAwAAAAAAAAAAAAAAAPC/" - ], - [ - 429, - 1, - "insert", - { - "characters": "lamba" - }, - "BQAAAIEDAAAAAAAAggMAAAAAAAAAAAAAggMAAAAAAACDAwAAAAAAAAAAAACDAwAAAAAAAIQDAAAAAAAAAAAAAIQDAAAAAAAAhQMAAAAAAAAAAAAAhQMAAAAAAACGAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" - ], - [ - 430, - 1, - "left_delete", - null, - "AQAAAIUDAAAAAAAAhQMAAAAAAAABAAAAYQ", - "AQAAAAAAAAABAAAAhgMAAAAAAACGAwAAAAAAAAAAAAAAAPC/" - ], - [ - 431, - 1, - "insert", - { - "characters": "da:" - }, - "AwAAAIUDAAAAAAAAhgMAAAAAAAAAAAAAhgMAAAAAAACHAwAAAAAAAAAAAACHAwAAAAAAAIgDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQMAAAAAAACFAwAAAAAAAAAAAAAAAPC/" - ], - [ - 432, - 1, - "insert", - { - "characters": " sort" - }, - "BQAAAIgDAAAAAAAAiQMAAAAAAAAAAAAAiQMAAAAAAACKAwAAAAAAAAAAAACKAwAAAAAAAIsDAAAAAAAAAAAAAIsDAAAAAAAAjAMAAAAAAAAAAAAAjAMAAAAAAACNAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiAMAAAAAAACIAwAAAAAAAAAAAAAAAPC/" - ], - [ - 433, - 1, - "insert", - { - "characters": " " - }, - "AQAAAI0DAAAAAAAAjgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQMAAAAAAACNAwAAAAAAAAAAAAAAAPC/" - ], - [ - 437, - 1, - "insert", - { - "characters": "row:" - }, - "BQAAAIkDAAAAAAAAigMAAAAAAAAAAAAAigMAAAAAAACKAwAAAAAAAAQAAABzb3J0igMAAAAAAACLAwAAAAAAAAAAAACLAwAAAAAAAIwDAAAAAAAAAAAAAIwDAAAAAAAAjQMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiQMAAAAAAACNAwAAAAAAAAAAAAAAAPC/" - ], - [ - 438, - 1, - "insert", - { - "characters": " " - }, - "AQAAAI0DAAAAAAAAjgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQMAAAAAAACNAwAAAAAAAAAAAAAAAPC/" - ], - [ - 439, - 1, - "insert", - { - "characters": "row" - }, - "AwAAAI4DAAAAAAAAjwMAAAAAAAAAAAAAjwMAAAAAAACQAwAAAAAAAAAAAACQAwAAAAAAAJEDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjgMAAAAAAACOAwAAAAAAAAAAAAAAAPC/" - ], - [ - 440, - 1, - "insert", - { - "characters": ".publ" - }, - "BQAAAJEDAAAAAAAAkgMAAAAAAAAAAAAAkgMAAAAAAACTAwAAAAAAAAAAAACTAwAAAAAAAJQDAAAAAAAAAAAAAJQDAAAAAAAAlQMAAAAAAAAAAAAAlQMAAAAAAACWAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkQMAAAAAAACRAwAAAAAAAAAAAAAAAPC/" - ], - [ - 441, - 1, - "insert", - { - "characters": "ish" - }, - "AwAAAJYDAAAAAAAAlwMAAAAAAAAAAAAAlwMAAAAAAACYAwAAAAAAAAAAAACYAwAAAAAAAJkDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlgMAAAAAAACWAwAAAAAAAAAAAAAAAPC/" - ], - [ - 442, - 1, - "insert", - { - "characters": "ed" - }, - "AgAAAJkDAAAAAAAAmgMAAAAAAAAAAAAAmgMAAAAAAACbAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAmQMAAAAAAACZAwAAAAAAAAAAAAAAAPC/" - ], - [ - 443, - 1, - "right_delete", - null, - "AQAAAJsDAAAAAAAAmwMAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAmwMAAAAAAACbAwAAAAAAAAAAAAAAAPC/" - ], - [ - 448, - 1, - "right_delete", - null, - "AQAAAJ0DAAAAAAAAnQMAAAAAAACjAAAAICAgIHJldHVybiAoCiAgICAgICAgQ29tbWVudC5zZWxlY3QoQ29tbWVudCkKICAgICAgICAud2hlcmUoKENvbW1lbnQudXJsID09IHVybCkgJiAoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbChGYWxzZSkpKQogICAgICAgIC5vcmRlcl9ieSgrQ29tbWVudC5wdWJsaXNoZWQpCiAgICApCg", - "AQAAAAAAAAABAAAAnQMAAAAAAABABAAAAAAAAAAAAAAAAAAA" - ], - [ - 451, - 1, - "left_delete", - null, - "AQAAAIcDAAAAAAAAhwMAAAAAAAABAAAAOg", - "AQAAAAAAAAABAAAAiAMAAAAAAACIAwAAAAAAAAAAAAAAAPC/" - ], - [ - 461, - 1, - "right_delete", - null, - "AQAAAB4FAAAAAAAAHgUAAAAAAAAeAAAALnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIp", - "AQAAAAAAAAABAAAAHgUAAAAAAAA8BQAAAAAAAP///////+9/" - ], - [ - 470, - 1, - "insert", - { - "characters": "\n\n" - }, - "BQAAAMADAAAAAAAAwQMAAAAAAAAAAAAAwQMAAAAAAADFAwAAAAAAAAAAAADFAwAAAAAAAMYDAAAAAAAAAAAAAMYDAAAAAAAAygMAAAAAAAAAAAAAwQMAAAAAAADBAwAAAAAAAAQAAAAgICAg", - "AQAAAAAAAAABAAAAwAMAAAAAAADAAwAAAAAAAAAAAAAAAPC/" - ], - [ - 472, - 1, - "reindent", - null, - "AQAAAMEDAAAAAAAAxQMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwQMAAAAAAADBAwAAAAAAAAAAAAAAAEJA" - ], - [ - 473, - 1, - "insert", - { - "characters": "return" - }, - "BwAAAMUDAAAAAAAAxgMAAAAAAAAAAAAAxwMAAAAAAADHAwAAAAAAAAQAAAAgICAgxgMAAAAAAADHAwAAAAAAAAAAAADHAwAAAAAAAMgDAAAAAAAAAAAAAMgDAAAAAAAAyQMAAAAAAAAAAAAAyQMAAAAAAADKAwAAAAAAAAAAAADKAwAAAAAAAMsDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxQMAAAAAAADFAwAAAAAAAAAAAAAAAPC/" - ], - [ - 474, - 1, - "insert", - { - "characters": " " - }, - "AQAAAMsDAAAAAAAAzAMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAywMAAAAAAADLAwAAAAAAAAAAAAAAAPC/" - ], - [ - 480, - 1, - "paste", - null, - "AQAAAMwDAAAAAAAAFwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzAMAAAAAAADMAwAAAAAAAAAAAAAAAPC/" - ], - [ - 485, - 1, - "insert", - { - "characters": "==" - }, - "AwAAAAUEAAAAAAAABgQAAAAAAAAAAAAABgQAAAAAAAAGBAAAAAAAAAIAAAAhPQYEAAAAAAAABwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAABQQAAAAAAAAHBAAAAAAAAAAAAAAAAPC/" - ], - [ - 487, - 1, - "insert", - { - "characters": " " - }, - "AQAAABcEAAAAAAAAGAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFwQAAAAAAAAXBAAAAAAAAP///////+9/" - ], - [ - 488, - 1, - "left_delete", - null, - "AQAAABcEAAAAAAAAFwQAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAGAQAAAAAAAAYBAAAAAAAAAAAAAAAAPC/" - ], - [ - 489, - 1, - "insert", - { - "characters": ".count" - }, - "BgAAABcEAAAAAAAAGAQAAAAAAAAAAAAAGAQAAAAAAAAZBAAAAAAAAAAAAAAZBAAAAAAAABoEAAAAAAAAAAAAABoEAAAAAAAAGwQAAAAAAAAAAAAAGwQAAAAAAAAcBAAAAAAAAAAAAAAcBAAAAAAAAB0EAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFwQAAAAAAAAXBAAAAAAAAAAAAAAAAPC/" - ], - [ - 490, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAB0EAAAAAAAAHwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAHQQAAAAAAAAdBAAAAAAAAAAAAAAAAPC/" - ], - [ - 492, - 1, - "insert", - { - "characters": " if" - }, - "AwAAAB8EAAAAAAAAIAQAAAAAAAAAAAAAIAQAAAAAAAAhBAAAAAAAAAAAAAAhBAAAAAAAACIEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAHwQAAAAAAAAfBAAAAAAAAAAAAAAAAPC/" - ], - [ - 493, - 1, - "insert", - { - "characters": " u" - }, - "AgAAACIEAAAAAAAAIwQAAAAAAAAAAAAAIwQAAAAAAAAkBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAIgQAAAAAAAAiBAAAAAAAAAAAAAAAAPC/" - ], - [ - 494, - 1, - "insert", - { - "characters": "rl" - }, - "AgAAACQEAAAAAAAAJQQAAAAAAAAAAAAAJQQAAAAAAAAmBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJAQAAAAAAAAkBAAAAAAAAAAAAAAAAPC/" - ], - [ - 495, - 1, - "insert", - { - "characters": " " - }, - "AQAAACYEAAAAAAAAJwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" - ], - [ - 496, - 1, - "insert", - { - "characters": "\nelse" - }, - "BgAAACcEAAAAAAAAKAQAAAAAAAAAAAAAKAQAAAAAAAAsBAAAAAAAAAAAAAAsBAAAAAAAAC0EAAAAAAAAAAAAAC0EAAAAAAAALgQAAAAAAAAAAAAALgQAAAAAAAAvBAAAAAAAAAAAAAAvBAAAAAAAADAEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJwQAAAAAAAAnBAAAAAAAAAAAAAAAAPC/" - ], - [ - 497, - 1, - "insert", - { - "characters": " " - }, - "AQAAADAEAAAAAAAAMQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMAQAAAAAAAAwBAAAAAAAAAAAAAAAAPC/" - ], - [ - 504, - 1, - "paste", - null, - "AQAAADEEAAAAAAAAjAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMQQAAAAAAAAxBAAAAAAAAAAAAAAAAPC/" - ], - [ - 511, - 1, - "right_delete", - null, - "AQAAADYEAAAAAAAANgQAAAAAAAAdAAAAKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmICg", - "AQAAAAAAAAABAAAANgQAAAAAAABTBAAAAAAAAAAAAAAAAPC/" - ], - [ - 515, - 1, - "left_delete", - null, - "AQAAAFQEAAAAAAAAVAQAAAAAAAABAAAAKQ", - "AQAAAAAAAAABAAAAVQQAAAAAAABVBAAAAAAAAAAAAAAAAPC/" - ], - [ - 520, - 1, - "right_delete", - null, - "AQAAAGcEAAAAAAAAZwQAAAAAAAAGAAAAaWYgdXJs", - "AQAAAAAAAAABAAAAZwQAAAAAAABtBAAAAAAAAAAAAAAAAPC/" - ], - [ - 527, - 1, - "insert", - { - "characters": "is" - }, - "AwAAAAUEAAAAAAAABgQAAAAAAAAAAAAABgQAAAAAAAAGBAAAAAAAAAIAAAA9PQYEAAAAAAAABwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAABQQAAAAAAAAHBAAAAAAAAAAAAAAAAPC/" - ], - [ - 532, - 1, - "insert", - { - "characters": "is" - }, - "AwAAAE0EAAAAAAAATgQAAAAAAAAAAAAATgQAAAAAAABOBAAAAAAAAAIAAAA9PU4EAAAAAAAATwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATQQAAAAAAABPBAAAAAAAAAAAAAAAAPC/" - ], - [ - 537, - 1, - "right_delete", - null, - "AQAAAGoEAAAAAAAAagQAAAAAAADyAAAAICAgIHJldHVybiAoCiAgICAgICAgQ29tbWVudC5zZWxlY3QoQ29tbWVudCkKICAgICAgICAud2hlcmUoKENvbW1lbnQudXJsID09IHVybCkgJiAoQ29tbWVudC5wdWJsaXNoZWQuaXNfbnVsbChGYWxzZSkpKQogICAgICAgIC5jb3VudCgpCiAgICAgICAgaWYgdXJsCiAgICAgICAgZWxzZSBDb21tZW50LnNlbGVjdChDb21tZW50KS53aGVyZShDb21tZW50LnB1Ymxpc2hlZC5pc19udWxsKEZhbHNlKSkuY291bnQoKQogICAgKQo", - "AQAAAAAAAAABAAAAagQAAAAAAABcBQAAAAAAAAAAAAAAAAAA" - ], - [ - 538, - 1, - "left_delete", - null, - "AQAAAGkEAAAAAAAAaQQAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAagQAAAAAAABqBAAAAAAAAAAAAAAAAPC/" - ], - [ - 540, - 1, - "trim_trailing_white_space", - null, - "AgAAAGYEAAAAAAAAZgQAAAAAAAACAAAAICAmBAAAAAAAACYEAAAAAAAAAQAAACA", - "AQAAAAAAAAABAAAAaQQAAAAAAABpBAAAAAAAAAAAAAAAAPC/" - ], - [ - 546, - 1, - "insert", - { - "characters": "\t" - }, - "AQAAACsEAAAAAAAALwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKwQAAAAAAAArBAAAAAAAAAAAAAAAAPC/" - ], - [ - 554, - 1, - "right_delete", - null, - "AQAAACYEAAAAAAAAJgQAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" - ], - [ - 555, - 1, - "insert", - { - "characters": " " - }, - "AQAAACYEAAAAAAAAJwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" - ], - [ - 558, - 1, - "right_delete", - null, - "AQAAACcEAAAAAAAAJwQAAAAAAAAIAAAAICAgICAgICA", - "AQAAAAAAAAABAAAAJwQAAAAAAAAvBAAAAAAAAAAAAAAAAPC/" - ], - [ - 566, - 1, "insert", { - "characters": "is" + "characters": "\nret" }, - "AwAAAOgCAAAAAAAA6QIAAAAAAAAAAAAA6QIAAAAAAADpAgAAAAAAAAIAAAA9PekCAAAAAAAA6gIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6AIAAAAAAADqAgAAAAAAAAAAAAAAAPC/" + "BQAAAPAAAAAAAAAA8QAAAAAAAAAAAAAA8QAAAAAAAAD1AAAAAAAAAAAAAAD1AAAAAAAAAPYAAAAAAAAAAAAAAPYAAAAAAAAA9wAAAAAAAAAAAAAA9wAAAAAAAAD4AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA8AAAAAAAAADwAAAAAAAAAAAAAAAAAPC/" ], [ - 571, + 231, 1, "insert", { - "characters": "is" + "characters": "urn" }, - "AwAAAIoCAAAAAAAAiwIAAAAAAAAAAAAAiwIAAAAAAACLAgAAAAAAAAIAAAA9PYsCAAAAAAAAjAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjAIAAAAAAACKAgAAAAAAAAAAAAAAAPC/" + "AwAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAAAAAAD6AAAAAAAAAPsAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAAPC/" ], [ - 578, + 232, 1, "insert", { - "characters": "is" + "characters": " comment" }, - "AgAAAGkDAAAAAAAAagMAAAAAAAAAAAAAagMAAAAAAABrAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaQMAAAAAAABpAwAAAAAAAAAAAAAAAPC/" - ], - [ - 579, - 1, - "insert", - { - "characters": " not" - }, - "BAAAAGsDAAAAAAAAbAMAAAAAAAAAAAAAbAMAAAAAAABtAwAAAAAAAAAAAABtAwAAAAAAAG4DAAAAAAAAAAAAAG4DAAAAAAAAbwMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAawMAAAAAAABrAwAAAAAAAAAAAAAAAPC/" - ], - [ - 580, - 1, - "insert", - { - "characters": " " - }, - "AQAAAG8DAAAAAAAAcAMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbwMAAAAAAABvAwAAAAAAAAAAAAAAAPC/" - ], - [ - 582, - 2, - "right_delete", - null, - "AgAAAHADAAAAAAAAcAMAAAAAAAACAAAAIT1wAwAAAAAAAHADAAAAAAAAAQAAACA", - "AQAAAAAAAAABAAAAcAMAAAAAAAByAwAAAAAAAAAAAAAAAPC/" - ], - [ - 589, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAANEEAAAAAAAA0gQAAAAAAAAAAAAA0gQAAAAAAADWBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0QQAAAAAAADRBAAAAAAAAAAAAAAAAPC/" - ], - [ - 595, - 1, - "paste", - null, - "AQAAANYEAAAAAAAA+gQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1gQAAAAAAADWBAAAAAAAAAAAAAAAAPC/" - ], - [ - 600, - 1, - "right_delete", - null, - "AQAAAOoEAAAAAAAA6gQAAAAAAAAPAAAAYXNkaWN0KGNvbW1lbnQp", - "AQAAAAAAAAABAAAA6gQAAAAAAAD5BAAAAAAAAAAAAAAAAPC/" - ], - [ - 601, - 1, - "insert", - { - "characters": "\n" - }, - "BAAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA6wQAAAAAAADvBAAAAAAAAAAAAADrBAAAAAAAAOsEAAAAAAAABAAAACAgICDrBAAAAAAAAPMEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6gQAAAAAAADqBAAAAAAAAAAAAAAAAPC/" - ], - [ - 604, - 1, - "insert", - { - "characters": "\n" - }, - "BAAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA6wQAAAAAAADvBAAAAAAAAAAAAADrBAAAAAAAAOsEAAAAAAAABAAAACAgICDrBAAAAAAAAPMEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6gQAAAAAAADqBAAAAAAAAAAAAAAAAPC/" - ], - [ - 607, - 1, - "cut", - null, - "AQAAABUFAAAAAAAAFQUAAAAAAADcAAAAICAgICAgICB1cmw9dXJsLAogICAgICAgIGF1dGhvcl9uYW1lPWF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPWF1dGhvcl9zaXRlLAogICAgICAgIGF1dGhvcl9ncmF2YXRhcj1hdXRob3JfZ3JhdmF0YXIsCiAgICAgICAgY29udGVudD1tZXNzYWdlLAogICAgICAgIGNyZWF0ZWQ9Y3JlYXRlZCwKICAgICAgICBub3RpZmllZD1Ob25lLAogICAgICAgIHB1Ymxpc2hlZD1Ob25lLA", - "AQAAAAAAAAABAAAA8QUAAAAAAAAVBQAAAAAAAAAAAAAAAPC/" - ], - [ - 610, - 1, - "paste", - null, - "AQAAAOwEAAAAAAAAyAUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA7AQAAAAAAADsBAAAAAAAAAAAAAAAAPC/" - ], - [ - 613, - 1, - "right_delete", - null, - "AQAAAPMEAAAAAAAA8wQAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAA8wQAAAAAAADzBAAAAAAAAAAAAAAAAPC/" - ], - [ - 618, - 1, - "cut", - null, - "AQAAAMMEAAAAAAAAwwQAAAAAAAAOAAAAZGF0ZXRpbWUubm93KCk", - "AQAAAAAAAAABAAAAwwQAAAAAAADRBAAAAAAAAAAAAAAAAPC/" - ], - [ - 623, - 1, - "paste", - null, - "AgAAAIIFAAAAAAAAkAUAAAAAAAAAAAAAkAUAAAAAAACQBQAAAAAAAAcAAABjcmVhdGVk", - "AQAAAAAAAAABAAAAggUAAAAAAACJBQAAAAAAAAAAAAAAAPC/" - ], - [ - 626, - 2, - "left_delete", - null, - "AgAAANIFAAAAAAAA0gUAAAAAAAAwAAAAICAgIGNvbW1lbnQgPSBDb21tZW50KAoKICAgICkKICAgIGNvbW1lbnQuc2F2ZSgp0QUAAAAAAADRBQAAAAAAAAEAAAAK", - "AQAAAAAAAAABAAAAAgYAAAAAAADSBQAAAAAAAAAAAAAAAPC/" - ], - [ - 631, - 1, - "right_delete", - null, - "AQAAALkEAAAAAAAAuQQAAAAAAAAKAAAAY3JlYXRlZCA9IA", - "AQAAAAAAAAABAAAAwwQAAAAAAAC5BAAAAAAAAAAAAAAAAEJA" - ], - [ - 633, - 1, - "left_delete", - null, - "AQAAALQEAAAAAAAAtAQAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAtQQAAAAAAAC1BAAAAAAAAAAAAAAAAAAA" - ], - [ - 635, - 1, - "trim_trailing_white_space", - null, - "AgAAALUFAAAAAAAAtQUAAAAAAAAHAAAAICAgICAgILQEAAAAAAAAtAQAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAtAQAAAAAAAC0BAAAAAAAAAAAAAAAAPC/" + "CAAAAPsAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAD9AAAAAAAAAAAAAAD9AAAAAAAAAP4AAAAAAAAAAAAAAP4AAAAAAAAA/wAAAAAAAAAAAAAA/wAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAAAAAAEBAAAAAAAAAgEAAAAAAAAAAAAAAgEAAAAAAAADAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA+wAAAAAAAAD7AAAAAAAAAAAAAAAAAPC/" ], [ - 651, + 233, 1, "insert", { - "characters": "comment" + "characters": ".id" }, - "BwAAALkEAAAAAAAAugQAAAAAAAAAAAAAugQAAAAAAAC7BAAAAAAAAAAAAAC7BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvQQAAAAAAAAAAAAAvQQAAAAAAAC+BAAAAAAAAAAAAAC+BAAAAAAAAL8EAAAAAAAAAAAAAL8EAAAAAAAAwAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAuQQAAAAAAAC5BAAAAAAAAAAAAAAAAPC/" + "AwAAAAMBAAAAAAAABAEAAAAAAAAAAAAABAEAAAAAAAAFAQAAAAAAAAAAAAAFAQAAAAAAAAYBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAAwEAAAAAAAADAQAAAAAAAAAAAAAAAPC/" ], [ - 652, + 234, 1, "insert", { "characters": " =" }, - "AgAAAMAEAAAAAAAAwQQAAAAAAAAAAAAAwQQAAAAAAADCBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwAQAAAAAAADABAAAAAAAAAAAAAAAAPC/" + "AgAAAAYBAAAAAAAABwEAAAAAAAAAAAAABwEAAAAAAAAIAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAABgEAAAAAAAAGAQAAAAAAAAAAAAAAAPC/" ], [ - 653, + 235, 1, "insert", { "characters": " " }, - "AQAAAMIEAAAAAAAAwwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwgQAAAAAAADCBAAAAAAAAAAAAAAAAPC/" + "AQAAAAgBAAAAAAAACQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACAEAAAAAAAAIAQAAAAAAAAAAAAAAAPC/" ], [ - 660, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAADZBQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRiCmZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKCmRlZiBmaW5kX2NvbW1lbnRfYnlfaWQoY29tbWVudF9pZCk6CiAgICByZXR1cm4gZGIoKS5jb21tZW50KGNvbW1lbnRfaWQpCgoKZGVmIG5vdGlmeV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5ub3RpZmllZCA9IGRhdGV0aW1lLm5vdygpCiAgICBkYigpLmNvbW1lbnQuaW5zZXJ0KGFzZGljdChjb21tZW50KSkKCgpkZWYgcHVibGlzaF9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgY29tbWVudC5wdWJsaXNoZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50Lmluc2VydChhc2RpY3QoY29tbWVudCkpCgoKZGVmIGRlbGV0ZV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgZGIoKShkYigpLmNvbW1lbnQuaWQgPT0gY29tbWVudC5pZCkuZGVsZXRlKCkKCgpkZWYgZmluZF9ub3Rfbm90aWZpZWRfY29tbWVudHMoKToKICAgIHJldHVybiBkYigpKGRiKCkuY29tbWVudC5ub3RpZmllZCBpcyBOb25lKS5zZWxlY3QoKQoKCmRlZiBmaW5kX25vdF9wdWJsaXNoZWRfY29tbWVudHMoKToKICAgIHJldHVybiBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgaXMgTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9wdWJsaXNoZWRfY29tbWVudHNfYnlfdXJsKHVybCk6CiAgICByZXR1cm4gZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgaXMgbm90IE5vbmUpKS5zZWxlY3QoKS5zb3J0KGxhbWJkYSByb3c6IHJvdy5wdWJsaXNoZWQpCgoKZGVmIGNvdW50X3B1Ymxpc2hlZF9jb21tZW50cyh1cmwpOgogICAgcmV0dXJuIGRiKCkoKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmIChkYigpLmNvbW1lbnQucHVibGlzaGVkIGlzIE5vbmUpKS5zZWxlY3QoKS5jb3VudCgpIGlmIHVybCBlbHNlIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCBpcyBOb25lKS5zZWxlY3QoKS5jb3VudCgpCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgY29tbWVudCA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICAgICAgKQogICAgcmV0dXJuIGNvbW1lbnQKAAAAAAAAAAAqBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxQUAAAAAAADFBQAAAAAAAAAAAAAAAPC/" - ], - [ - 691, - 1, - "insert", - { - "characters": "==" - }, - "AgAAAIsCAAAAAAAAjAIAAAAAAAAAAAAAjAIAAAAAAACNAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiwIAAAAAAACLAgAAAAAAAAAAAAAAAPC/" - ], - [ - 692, - 2, - "right_delete", - null, - "AgAAAI0CAAAAAAAAjQIAAAAAAAABAAAAaY0CAAAAAAAAjQIAAAAAAAABAAAAcw", - "AQAAAAAAAAABAAAAjQIAAAAAAACNAgAAAAAAAAAAAAAAAPC/" - ], - [ - 696, - 1, - "insert", - { - "characters": "==" - }, - "AgAAAOkCAAAAAAAA6gIAAAAAAAAAAAAA6gIAAAAAAADrAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6QIAAAAAAADpAgAAAAAAAAAAAAAAAPC/" - ], - [ - 697, - 2, - "right_delete", - null, - "AgAAAOsCAAAAAAAA6wIAAAAAAAABAAAAaesCAAAAAAAA6wIAAAAAAAABAAAAcw", - "AQAAAAAAAAABAAAA6wIAAAAAAADrAgAAAAAAAAAAAAAAAPC/" - ], - [ - 712, - 1, - "insert", - { - "characters": "!=" - }, - "AwAAAHQDAAAAAAAAdQMAAAAAAAAAAAAAdQMAAAAAAAB1AwAAAAAAAAYAAABpcyBub3R1AwAAAAAAAHYDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdAMAAAAAAAB6AwAAAAAAAAAAAAAAAPC/" - ], - [ - 717, - 1, - "insert", - { - "characters": "==" - }, - "AwAAADIEAAAAAAAAMwQAAAAAAAAAAAAAMwQAAAAAAAAzBAAAAAAAAAIAAABpczMEAAAAAAAANAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMgQAAAAAAAA0BAAAAAAAAAAAAAAAAPC/" - ], - [ - 725, - 1, - "insert", - { - "characters": "==" - }, - "AwAAAJcEAAAAAAAAmAQAAAAAAAAAAAAAmAQAAAAAAACYBAAAAAAAAAIAAABpc5gEAAAAAAAAmQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlwQAAAAAAACZBAAAAAAAAAAAAAAAAPC/" - ], - [ - 741, - 2, - "right_delete", - null, - "AgAAAKAEAAAAAAAAoAQAAAAAAAAIAAAAc2VsZWN0KCmgBAAAAAAAAKAEAAAAAAAAAQAAAC4", - "AQAAAAAAAAABAAAAoAQAAAAAAACoBAAAAAAAAAAAAAAAAPC/" - ], - [ - 744, - 1, - "right_delete", - null, - "AQAAAEQEAAAAAAAARAQAAAAAAAAJAAAALnNlbGVjdCgp", - "AQAAAAAAAAABAAAATQQAAAAAAABEBAAAAAAAAAAAAAAAAFJA" - ], - [ - 746, + 236, 1, "left_delete", null, - "AQAAADsEAAAAAAAAOwQAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAPAQAAAAAAAA8BAAAAAAAAAAAAAAAAAAA" + "AQAAAAgBAAAAAAAACAEAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAACQEAAAAAAAAJAQAAAAAAAAAAAAAAAPC/" ], [ - 748, - 1, - "trim_trailing_white_space", - null, - "AQAAADsEAAAAAAAAOwQAAAAAAAAIAAAAICAgICAgICA", - "AQAAAAAAAAABAAAAOwQAAAAAAAA7BAAAAAAAAAAAAAAAAPC/" - ], - [ - 749, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAAALBgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYgpmcm9tIHN0YWNvc3lzLm1vZGVsLmNvbW1lbnQgaW1wb3J0IENvbW1lbnQKCgpkZWYgZmluZF9jb21tZW50X2J5X2lkKGNvbW1lbnRfaWQpOgogICAgcmV0dXJuIGRiKCkuY29tbWVudChjb21tZW50X2lkKQoKCmRlZiBub3RpZnlfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQubm90aWZpZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50Lmluc2VydChhc2RpY3QoY29tbWVudCkpCgoKZGVmIHB1Ymxpc2hfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQucHVibGlzaGVkID0gZGF0ZXRpbWUubm93KCkKICAgIGRiKCkuY29tbWVudC5pbnNlcnQoYXNkaWN0KGNvbW1lbnQpKQoKCmRlZiBkZWxldGVfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGRiKCkoZGIoKS5jb21tZW50LmlkID09IGNvbW1lbnQuaWQpLmRlbGV0ZSgpCgoKZGVmIGZpbmRfbm90X25vdGlmaWVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQubm90aWZpZWQgPT0gTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9ub3RfcHVibGlzaGVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfcHVibGlzaGVkX2NvbW1lbnRzX2J5X3VybCh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKChkYigpLmNvbW1lbnQudXJsID09IHVybCkgJiAoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCAhPSBOb25lKSkKICAgICAgICAuc2VsZWN0KCkKICAgICAgICAuc29ydChsYW1iZGEgcm93OiByb3cucHVibGlzaGVkKQogICAgKQoKCmRlZiBjb3VudF9wdWJsaXNoZWRfY29tbWVudHModXJsKToKICAgIHJldHVybiAoCiAgICAgICAgZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgPT0gTm9uZSkpCiAgICAgICAgLmNvdW50KCkKICAgICAgICBpZiB1cmwKICAgICAgICBlbHNlIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCA9PSBOb25lKS5jb3VudCgpCiAgICApCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgY29tbWVudCA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICApCiAgICByZXR1cm4gY29tbWVudAoAAAAAAAAAAAIGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOwQAAAAAAAA7BAAAAAAAAAAAAAAAAPC/" - ], - [ - 790, + 237, 1, "insert", { - "characters": "\n" + "characters": "=" }, - "AgAAAO4FAAAAAAAA7wUAAAAAAAAAAAAA7wUAAAAAAADzBQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA7gUAAAAAAADuBQAAAAAAAAAAAAAAAPC/" + "AQAAAAgBAAAAAAAACQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACAEAAAAAAAAIAQAAAAAAAAAAAAAAAPC/" ], [ - 796, + 238, 1, "insert", { - "characters": "Comment" + "characters": " other.id" }, - "CQAAAP8FAAAAAAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAABgAAAAAAAAcAAABjb21tZW507wUAAAAAAADvBQAAAAAAAAQAAAAgICAg/AUAAAAAAAD9BQAAAAAAAAAAAAD9BQAAAAAAAP4FAAAAAAAAAAAAAP4FAAAAAAAA/wUAAAAAAAAAAAAA/wUAAAAAAAAABgAAAAAAAAAAAAAABgAAAAAAAAEGAAAAAAAAAAAAAAEGAAAAAAAAAgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/wUAAAAAAAAGBgAAAAAAAAAAAAAAAPC/" + "CQAAAAkBAAAAAAAACgEAAAAAAAAAAAAACgEAAAAAAAALAQAAAAAAAAAAAAALAQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADQEAAAAAAAAAAAAADQEAAAAAAAAOAQAAAAAAAAAAAAAOAQAAAAAAAA8BAAAAAAAAAAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAARAQAAAAAAABIBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACQEAAAAAAAAJAQAAAAAAAAAAAAAAAPC/" ], [ - 797, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAAIGAAAAAAAABAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAAgYAAAAAAAACBgAAAAAAAAAAAAAAAPC/" - ], - [ - 798, - 1, - "insert", - { - "characters": "id=com" - }, - "BgAAAAMGAAAAAAAABAYAAAAAAAAAAAAABAYAAAAAAAAFBgAAAAAAAAAAAAAFBgAAAAAAAAYGAAAAAAAAAAAAAAYGAAAAAAAABwYAAAAAAAAAAAAABwYAAAAAAAAIBgAAAAAAAAAAAAAIBgAAAAAAAAkGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAAwYAAAAAAAADBgAAAAAAAAAAAAAAAPC/" - ], - [ - 799, - 1, - "insert", - { - "characters": "ment." - }, - "BQAAAAkGAAAAAAAACgYAAAAAAAAAAAAACgYAAAAAAAALBgAAAAAAAAAAAAALBgAAAAAAAAwGAAAAAAAAAAAAAAwGAAAAAAAADQYAAAAAAAAAAAAADQYAAAAAAAAOBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACQYAAAAAAAAJBgAAAAAAAAAAAAAAAPC/" - ], - [ - 800, - 1, - "insert", - { - "characters": "id" - }, - "AgAAAA4GAAAAAAAADwYAAAAAAAAAAAAADwYAAAAAAAAQBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADgYAAAAAAAAOBgAAAAAAAAAAAAAAAPC/" - ], - [ - 801, - 1, - "insert", - { - "characters": "," - }, - "AQAAABAGAAAAAAAAEQYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEAYAAAAAAAAQBgAAAAAAAAAAAAAAAPC/" - ], - [ - 802, + 239, 1, "insert", { "characters": " " }, - "AQAAABEGAAAAAAAAEgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEQYAAAAAAAARBgAAAAAAAAAAAAAAAPC/" + "AQAAABIBAAAAAAAAEwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" ], [ - 803, + 240, 1, "insert", { - "characters": "url=" + "characters": "\nand" }, - "BAAAABIGAAAAAAAAEwYAAAAAAAAAAAAAEwYAAAAAAAAUBgAAAAAAAAAAAAAUBgAAAAAAABUGAAAAAAAAAAAAABUGAAAAAAAAFgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEgYAAAAAAAASBgAAAAAAAAAAAAAAAPC/" + "BQAAABMBAAAAAAAAFAEAAAAAAAAAAAAAFAEAAAAAAAAYAQAAAAAAAAAAAAAYAQAAAAAAABkBAAAAAAAAAAAAABkBAAAAAAAAGgEAAAAAAAAAAAAAGgEAAAAAAAAbAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" ], [ - 804, + 241, 1, "insert", { "characters": " " }, - "AQAAABYGAAAAAAAAFwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFgYAAAAAAAAWBgAAAAAAAAAAAAAAAPC/" + "AQAAABsBAAAAAAAAHAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGwEAAAAAAAAbAQAAAAAAAAAAAAAAAPC/" ], [ - 805, + 244, + 1, + "insert", + { + "characters": "comment." + }, + "CAAAABwBAAAAAAAAHQEAAAAAAAAAAAAAHQEAAAAAAAAeAQAAAAAAAAAAAAAeAQAAAAAAAB8BAAAAAAAAAAAAAB8BAAAAAAAAIAEAAAAAAAAAAAAAIAEAAAAAAAAhAQAAAAAAAAAAAAAhAQAAAAAAACIBAAAAAAAAAAAAACIBAAAAAAAAIwEAAAAAAAAAAAAAIwEAAAAAAAAkAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAHAEAAAAAAAAcAQAAAAAAAAAAAAAAAPC/" + ], + [ + 248, + 1, + "insert", + { + "characters": "\nfrom" + }, + "BQAAAHYAAAAAAAAAdwAAAAAAAAAAAAAAdwAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdgAAAAAAAAB2AAAAAAAAAAAAAAAAAPC/" + ], + [ + 249, + 1, + "insert", + { + "characters": " stacoys" + }, + "CAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAAAAAAAfwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAIEAAAAAAAAAAAAAAIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" + ], + [ + 250, + 3, + "left_delete", + null, + "AwAAAIIAAAAAAAAAggAAAAAAAAABAAAAc4EAAAAAAAAAgQAAAAAAAAABAAAAeYAAAAAAAAAAgAAAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" + ], + [ + 251, + 1, + "insert", + { + "characters": "osys.co" + }, + "BwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAAAAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" + ], + [ + 252, + 1, + "insert", + { + "characters": "mm" + }, + "AgAAAIcAAAAAAAAAiAAAAAAAAAAAAAAAiAAAAAAAAACJAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" + ], + [ + 253, + 3, + "left_delete", + null, + "AwAAAIgAAAAAAAAAiAAAAAAAAAABAAAAbYcAAAAAAAAAhwAAAAAAAAABAAAAbYYAAAAAAAAAhgAAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAAiQAAAAAAAACJAAAAAAAAAAAAAAAAAPC/" + ], + [ + 254, + 1, + "insert", + { + "characters": "m" + }, + "AQAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" + ], + [ + 255, + 2, + "left_delete", + null, + "AgAAAIYAAAAAAAAAhgAAAAAAAAABAAAAbYUAAAAAAAAAhQAAAAAAAAABAAAAYw", + "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" + ], + [ + 256, + 1, + "insert", + { + "characters": "mop" + }, + "AwAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" + ], + [ + 257, 1, "left_delete", null, - "AQAAABYGAAAAAAAAFgYAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAFwYAAAAAAAAXBgAAAAAAAAAAAAAAAPC/" + "AQAAAIcAAAAAAAAAhwAAAAAAAAABAAAAcA", + "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" ], [ - 806, + 258, 1, "insert", { - "characters": "comment" + "characters": "d" }, - "BwAAABYGAAAAAAAAFwYAAAAAAAAAAAAAFwYAAAAAAAAYBgAAAAAAAAAAAAAYBgAAAAAAABkGAAAAAAAAAAAAABkGAAAAAAAAGgYAAAAAAAAAAAAAGgYAAAAAAAAbBgAAAAAAAAAAAAAbBgAAAAAAABwGAAAAAAAAAAAAABwGAAAAAAAAHQYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFgYAAAAAAAAWBgAAAAAAAAAAAAAAAPC/" + "AQAAAIcAAAAAAAAAiAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" ], [ - 812, - 1, - "insert", - { - "characters": "row" - }, - "BAAAAOYEAAAAAAAA5wQAAAAAAAAAAAAA5wQAAAAAAADnBAAAAAAAAAcAAABjb21tZW505wQAAAAAAADoBAAAAAAAAAAAAADoBAAAAAAAAOkEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5gQAAAAAAADtBAAAAAAAAAAAAAAAAPC/" - ], - [ - 817, - 1, - "insert", - { - "characters": "row" - }, - "BAAAAAIGAAAAAAAAAwYAAAAAAAAAAAAAAwYAAAAAAAADBgAAAAAAAAcAAABjb21tZW50AwYAAAAAAAAEBgAAAAAAAAAAAAAEBgAAAAAAAAUGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAAgYAAAAAAAAJBgAAAAAAAAAAAAAAAPC/" - ], - [ - 822, - 1, - "insert", - { - "characters": "row.url" - }, - "CAAAAA4GAAAAAAAADwYAAAAAAAAAAAAADwYAAAAAAAAPBgAAAAAAAAcAAABjb21tZW50DwYAAAAAAAAQBgAAAAAAAAAAAAAQBgAAAAAAABEGAAAAAAAAAAAAABEGAAAAAAAAEgYAAAAAAAAAAAAAEgYAAAAAAAATBgAAAAAAAAAAAAATBgAAAAAAABQGAAAAAAAAAAAAABQGAAAAAAAAFQYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADgYAAAAAAAAVBgAAAAAAAAAAAAAAAPC/" - ], - [ - 823, - 1, - "insert", - { - "characters": "," - }, - "AQAAABUGAAAAAAAAFgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFQYAAAAAAAAVBgAAAAAAAAAAAAAAAPC/" - ], - [ - 824, - 1, - "insert", - { - "characters": " auth" - }, - "BQAAABYGAAAAAAAAFwYAAAAAAAAAAAAAFwYAAAAAAAAYBgAAAAAAAAAAAAAYBgAAAAAAABkGAAAAAAAAAAAAABkGAAAAAAAAGgYAAAAAAAAAAAAAGgYAAAAAAAAbBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFgYAAAAAAAAWBgAAAAAAAAAAAAAAAPC/" - ], - [ - 827, + 259, 1, "insert_completion", { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"04.9999.author_name\",\"filterText\":\"author_name\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":63,\"character\":47},\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"author_name=\"}}", + "completion": "lsp_select_completion_item {\"item\":{\"label\":\"model\",\"sortText\":\"02.9999.model\",\"kind\":9},\"session_name\":\"LSP-pyright\"}", "format": "command", "keep_prefix": false, "must_insert": false, - "trigger": "author_name=" + "trigger": "model" }, - "AgAAABcGAAAAAAAAFwYAAAAAAAAEAAAAYXV0aBcGAAAAAAAAIwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGwYAAAAAAAAbBgAAAAAAAAAAAAAAAPC/" + "AgAAAIUAAAAAAAAAhQAAAAAAAAADAAAAbW9khQAAAAAAAACKAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" ], [ - 828, + 260, 1, "insert", { - "characters": "row.a" + "characters": "i" }, - "BQAAACMGAAAAAAAAJAYAAAAAAAAAAAAAJAYAAAAAAAAlBgAAAAAAAAAAAAAlBgAAAAAAACYGAAAAAAAAAAAAACYGAAAAAAAAJwYAAAAAAAAAAAAAJwYAAAAAAAAoBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAIwYAAAAAAAAjBgAAAAAAAAAAAAAAAPC/" + "AQAAAIoAAAAAAAAAiwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" ], [ - 829, + 261, 1, - "insert_completion", - { - "completion": "author_name", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "author_name" - }, - "AgAAACcGAAAAAAAAJwYAAAAAAAABAAAAYScGAAAAAAAAMgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKAYAAAAAAAAoBgAAAAAAAAAAAAAAAPC/" + "left_delete", + null, + "AQAAAIoAAAAAAAAAigAAAAAAAAABAAAAaQ", + "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAPC/" ], [ - 830, + 262, 1, "insert", { - "characters": "," + "characters": " imort" }, - "AQAAADIGAAAAAAAAMwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMgYAAAAAAAAyBgAAAAAAAAAAAAAAAPC/" + "BgAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAACMAAAAAAAAAI0AAAAAAAAAAAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" ], [ - 831, - 1, - "insert", - { - "characters": " auth" - }, - "BQAAADMGAAAAAAAANAYAAAAAAAAAAAAANAYAAAAAAAA1BgAAAAAAAAAAAAA1BgAAAAAAADYGAAAAAAAAAAAAADYGAAAAAAAANwYAAAAAAAAAAAAANwYAAAAAAAA4BgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMwYAAAAAAAAzBgAAAAAAAAAAAAAAAPC/" - ], - [ - 834, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"04.9999.author_site\",\"filterText\":\"author_site\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":63,\"character\":76},\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"author_site=\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "author_site=" - }, - "AgAAADQGAAAAAAAANAYAAAAAAAAEAAAAYXV0aDQGAAAAAAAAQAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOAYAAAAAAAA4BgAAAAAAAAAAAAAAAPC/" - ], - [ - 835, - 1, - "insert", - { - "characters": "=row.au" - }, - "BwAAAEAGAAAAAAAAQQYAAAAAAAAAAAAAQQYAAAAAAABCBgAAAAAAAAAAAABCBgAAAAAAAEMGAAAAAAAAAAAAAEMGAAAAAAAARAYAAAAAAAAAAAAARAYAAAAAAABFBgAAAAAAAAAAAABFBgAAAAAAAEYGAAAAAAAAAAAAAEYGAAAAAAAARwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQAYAAAAAAABABgAAAAAAAAAAAAAAAPC/" - ], - [ - 836, - 1, - "insert_completion", - { - "completion": "author_site", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "author_site" - }, - "AgAAAEUGAAAAAAAARQYAAAAAAAACAAAAYXVFBgAAAAAAAFAGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAARwYAAAAAAABHBgAAAAAAAAAAAAAAAPC/" - ], - [ - 837, - 1, - "insert", - { - "characters": "," - }, - "AQAAAFAGAAAAAAAAUQYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUAYAAAAAAABQBgAAAAAAAAAAAAAAAPC/" - ], - [ - 838, + 263, 1, "insert", { "characters": " " }, - "AQAAAFEGAAAAAAAAUgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUQYAAAAAAABRBgAAAAAAAAAAAAAAAPC/" + "AQAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAPC/" ], [ - 839, + 264, + 4, + "left_delete", + null, + "BAAAAJAAAAAAAAAAkAAAAAAAAAABAAAAII8AAAAAAAAAjwAAAAAAAAABAAAAdI4AAAAAAAAAjgAAAAAAAAABAAAAco0AAAAAAAAAjQAAAAAAAAABAAAAbw", + "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 265, 1, "insert", { - "characters": "au" + "characters": "port" }, - "AgAAAFIGAAAAAAAAUwYAAAAAAAAAAAAAUwYAAAAAAABUBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUgYAAAAAAABSBgAAAAAAAAAAAAAAAPC/" + "BAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAPC/" ], [ - 842, + 266, + 1, + "insert", + { + "characters": " " + }, + "AQAAAJEAAAAAAAAAkgAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" + ], + [ + 267, 1, "insert_completion", { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"04.9999.author_gravatar\",\"filterText\":\"author_gravatar\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":63,\"character\":104},\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"author_gravatar=\"}}", + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"comment\",\"position\":{\"line\":7,\"character\":27},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"comment\",\"sortText\":\"09.9999.comment\",\"kind\":9},\"session_name\":\"LSP-pyright\"}", "format": "command", "keep_prefix": false, - "must_insert": false, - "trigger": "author_gravatar=" + "must_insert": true, + "trigger": "comment" }, - "AgAAAFIGAAAAAAAAUgYAAAAAAAACAAAAYXVSBgAAAAAAAGIGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVAYAAAAAAABUBgAAAAAAAAAAAAAAAPC/" + "AQAAAJIAAAAAAAAAmQAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAkgAAAAAAAACSAAAAAAAAAAAAAAAAAPC/" ], [ - 843, + 274, 1, "insert", { - "characters": "row.a" + "characters": ".comment" }, - "BQAAAGIGAAAAAAAAYwYAAAAAAAAAAAAAYwYAAAAAAABkBgAAAAAAAAAAAABkBgAAAAAAAGUGAAAAAAAAAAAAAGUGAAAAAAAAZgYAAAAAAAAAAAAAZgYAAAAAAABnBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYgYAAAAAAABiBgAAAAAAAAAAAAAAAPC/" + "CAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAACMAAAAAAAAAI0AAAAAAAAAAAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAAkQAAAAAAAACSAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" ], [ - 844, + 280, + 1, + "insert", + { + "characters": "C" + }, + "AgAAAJoAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACbAAAAAAAAAAEAAABj", + "AQAAAAAAAAABAAAAmwAAAAAAAACaAAAAAAAAAAAAAAAAAPC/" + ], + [ + 284, + 1, + "insert", + { + "characters": " :" + }, + "AgAAABIBAAAAAAAAEwEAAAAAAAAAAAAAEwEAAAAAAAAUAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" + ], + [ + 285, + 1, + "insert", + { + "characters": " Comment" + }, + "CAAAABQBAAAAAAAAFQEAAAAAAAAAAAAAFQEAAAAAAAAWAQAAAAAAAAAAAAAWAQAAAAAAABcBAAAAAAAAAAAAABcBAAAAAAAAGAEAAAAAAAAAAAAAGAEAAAAAAAAZAQAAAAAAAAAAAAAZAQAAAAAAABoBAAAAAAAAAAAAABoBAAAAAAAAGwEAAAAAAAAAAAAAGwEAAAAAAAAcAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAFAEAAAAAAAAUAQAAAAAAAAAAAAAAAPC/" + ], + [ + 289, + 1, + "right_delete", + null, + "AQAAAEkBAAAAAAAASQEAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAATQEAAAAAAABJAQAAAAAAAAAAAAAAAAAA" + ], + [ + 290, + 1, + "left_delete", + null, + "AQAAAEgBAAAAAAAASAEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" + ], + [ + 293, + 1, + "left_delete", + null, + "AQAAAFMBAAAAAAAAUwEAAAAAAAABAAAALg", + "AQAAAAAAAAABAAAAVAEAAAAAAABUAQAAAAAAAAAAAAAAAPC/" + ], + [ + 294, + 1, + "insert", + { + "characters": "." + }, + "AQAAAFMBAAAAAAAAVAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUwEAAAAAAABTAQAAAAAAAAAAAAAAAPC/" + ], + [ + 295, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"author_gravatar\",\"position\":{\"line\":14,\"character\":46},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"author_gravatar\",\"sortText\":\"09.9999.author_gravatar\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "author_gravatar" + }, + "AQAAAFQBAAAAAAAAYwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVAEAAAAAAABUAQAAAAAAAAAAAAAAAPC/" + ], + [ + 296, + 1, + "insert", + { + "characters": " ==" + }, + "AwAAAGMBAAAAAAAAZAEAAAAAAAAAAAAAZAEAAAAAAABlAQAAAAAAAAAAAABlAQAAAAAAAGYBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYwEAAAAAAABjAQAAAAAAAAAAAAAAAPC/" + ], + [ + 297, + 1, + "insert", + { + "characters": " other.a" + }, + "CAAAAGYBAAAAAAAAZwEAAAAAAAAAAAAAZwEAAAAAAABoAQAAAAAAAAAAAABoAQAAAAAAAGkBAAAAAAAAAAAAAGkBAAAAAAAAagEAAAAAAAAAAAAAagEAAAAAAABrAQAAAAAAAAAAAABrAQAAAAAAAGwBAAAAAAAAAAAAAGwBAAAAAAAAbQEAAAAAAAAAAAAAbQEAAAAAAABuAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAZgEAAAAAAABmAQAAAAAAAAAAAAAAAPC/" + ], + [ + 298, 1, "insert_completion", { @@ -5616,171 +4787,305 @@ "must_insert": false, "trigger": "author_gravatar" }, - "AgAAAGYGAAAAAAAAZgYAAAAAAAABAAAAYWYGAAAAAAAAdQYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAZwYAAAAAAABnBgAAAAAAAAAAAAAAAPC/" + "AgAAAG0BAAAAAAAAbQEAAAAAAAABAAAAYW0BAAAAAAAAfAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbgEAAAAAAABuAQAAAAAAAAAAAAAAAPC/" ], [ - 845, + 299, 1, "insert", { - "characters": "," + "characters": " and" }, - "AQAAAHUGAAAAAAAAdgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdQYAAAAAAAB1BgAAAAAAAAAAAAAAAPC/" + "BAAAAHwBAAAAAAAAfQEAAAAAAAAAAAAAfQEAAAAAAAB+AQAAAAAAAAAAAAB+AQAAAAAAAH8BAAAAAAAAAAAAAH8BAAAAAAAAgAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfAEAAAAAAAB8AQAAAAAAAAAAAAAAAPC/" ], [ - 846, + 300, 1, "insert", { - "characters": " " + "characters": " comment." }, - "AQAAAHYGAAAAAAAAdwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdgYAAAAAAAB2BgAAAAAAAAAAAAAAAPC/" + "CQAAAIABAAAAAAAAgQEAAAAAAAAAAAAAgQEAAAAAAACCAQAAAAAAAAAAAACCAQAAAAAAAIMBAAAAAAAAAAAAAIMBAAAAAAAAhAEAAAAAAAAAAAAAhAEAAAAAAACFAQAAAAAAAAAAAACFAQAAAAAAAIYBAAAAAAAAAAAAAIYBAAAAAAAAhwEAAAAAAAAAAAAAhwEAAAAAAACIAQAAAAAAAAAAAACIAQAAAAAAAIkBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgAEAAAAAAACAAQAAAAAAAAAAAAAAAPC/" ], [ - 847, + 302, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"author_name\",\"position\":{\"line\":14,\"character\":99},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"author_name\",\"sortText\":\"09.9999.author_name\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "author_name" + }, + "AQAAAIkBAAAAAAAAlAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiQEAAAAAAACJAQAAAAAAAAAAAAAAAPC/" + ], + [ + 303, 1, "insert", { - "characters": "contnt" + "characters": " ==" }, - "BgAAAHcGAAAAAAAAeAYAAAAAAAAAAAAAeAYAAAAAAAB5BgAAAAAAAAAAAAB5BgAAAAAAAHoGAAAAAAAAAAAAAHoGAAAAAAAAewYAAAAAAAAAAAAAewYAAAAAAAB8BgAAAAAAAAAAAAB8BgAAAAAAAH0GAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdwYAAAAAAAB3BgAAAAAAAAAAAAAAAPC/" + "AwAAAJQBAAAAAAAAlQEAAAAAAAAAAAAAlQEAAAAAAACWAQAAAAAAAAAAAACWAQAAAAAAAJcBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlAEAAAAAAACUAQAAAAAAAAAAAAAAAPC/" ], [ - 848, - 2, - "left_delete", - null, - "AgAAAHwGAAAAAAAAfAYAAAAAAAABAAAAdHsGAAAAAAAAewYAAAAAAAABAAAAbg", - "AQAAAAAAAAABAAAAfQYAAAAAAAB9BgAAAAAAAAAAAAAAAPC/" - ], - [ - 849, + 304, 1, "insert", { - "characters": "ent=" + "characters": " other." }, - "BAAAAHsGAAAAAAAAfAYAAAAAAAAAAAAAfAYAAAAAAAB9BgAAAAAAAAAAAAB9BgAAAAAAAH4GAAAAAAAAAAAAAH4GAAAAAAAAfwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAewYAAAAAAAB7BgAAAAAAAAAAAAAAAPC/" + "BwAAAJcBAAAAAAAAmAEAAAAAAAAAAAAAmAEAAAAAAACZAQAAAAAAAAAAAACZAQAAAAAAAJoBAAAAAAAAAAAAAJoBAAAAAAAAmwEAAAAAAAAAAAAAmwEAAAAAAACcAQAAAAAAAAAAAACcAQAAAAAAAJ0BAAAAAAAAAAAAAJ0BAAAAAAAAngEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAlwEAAAAAAACXAQAAAAAAAAAAAAAAAPC/" ], [ - 850, - 8, - "left_delete", - null, - "CAAAAH4GAAAAAAAAfgYAAAAAAAABAAAAPX0GAAAAAAAAfQYAAAAAAAABAAAAdHwGAAAAAAAAfAYAAAAAAAABAAAAbnsGAAAAAAAAewYAAAAAAAABAAAAZXoGAAAAAAAAegYAAAAAAAABAAAAdHkGAAAAAAAAeQYAAAAAAAABAAAAbngGAAAAAAAAeAYAAAAAAAABAAAAb3cGAAAAAAAAdwYAAAAAAAABAAAAYw", - "AQAAAAAAAAABAAAAfwYAAAAAAAB/BgAAAAAAAAAAAAAAAPC/" - ], - [ - 851, + 305, 1, "insert", { - "characters": "content=row" + "characters": "a" }, - "CwAAAHcGAAAAAAAAeAYAAAAAAAAAAAAAeAYAAAAAAAB5BgAAAAAAAAAAAAB5BgAAAAAAAHoGAAAAAAAAAAAAAHoGAAAAAAAAewYAAAAAAAAAAAAAewYAAAAAAAB8BgAAAAAAAAAAAAB8BgAAAAAAAH0GAAAAAAAAAAAAAH0GAAAAAAAAfgYAAAAAAAAAAAAAfgYAAAAAAAB/BgAAAAAAAAAAAAB/BgAAAAAAAIAGAAAAAAAAAAAAAIAGAAAAAAAAgQYAAAAAAAAAAAAAgQYAAAAAAACCBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdwYAAAAAAAB3BgAAAAAAAAAAAAAAAPC/" + "AQAAAJ4BAAAAAAAAnwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAngEAAAAAAACeAQAAAAAAAAAAAAAAAPC/" ], [ - 852, + 306, + 1, + "insert_completion", + { + "completion": "author_name", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_name" + }, + "AgAAAJ4BAAAAAAAAngEAAAAAAAABAAAAYZ4BAAAAAAAAqQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAnwEAAAAAAACfAQAAAAAAAAAAAAAAAPC/" + ], + [ + 307, 1, "insert", { - "characters": "." + "characters": " and" }, - "AQAAAIIGAAAAAAAAgwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAggYAAAAAAACCBgAAAAAAAAAAAAAAAPC/" + "BAAAAKkBAAAAAAAAqgEAAAAAAAAAAAAAqgEAAAAAAACrAQAAAAAAAAAAAACrAQAAAAAAAKwBAAAAAAAAAAAAAKwBAAAAAAAArQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqQEAAAAAAACpAQAAAAAAAAAAAAAAAPC/" ], [ - 853, + 308, + 1, + "insert", + { + "characters": " comment." + }, + "CQAAAK0BAAAAAAAArgEAAAAAAAAAAAAArgEAAAAAAACvAQAAAAAAAAAAAACvAQAAAAAAALABAAAAAAAAAAAAALABAAAAAAAAsQEAAAAAAAAAAAAAsQEAAAAAAACyAQAAAAAAAAAAAACyAQAAAAAAALMBAAAAAAAAAAAAALMBAAAAAAAAtAEAAAAAAAAAAAAAtAEAAAAAAAC1AQAAAAAAAAAAAAC1AQAAAAAAALYBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAArQEAAAAAAACtAQAAAAAAAAAAAAAAAPC/" + ], + [ + 311, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"author_site\",\"position\":{\"line\":14,\"character\":144},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"author_site\",\"sortText\":\"09.9999.author_site\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "author_site" + }, + "AQAAALYBAAAAAAAAwQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtgEAAAAAAAC2AQAAAAAAAAAAAAAAAPC/" + ], + [ + 312, + 1, + "insert", + { + "characters": " ==" + }, + "AwAAAMEBAAAAAAAAwgEAAAAAAAAAAAAAwgEAAAAAAADDAQAAAAAAAAAAAADDAQAAAAAAAMQBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwQEAAAAAAADBAQAAAAAAAAAAAAAAAPC/" + ], + [ + 313, + 1, + "insert", + { + "characters": " other." + }, + "BwAAAMQBAAAAAAAAxQEAAAAAAAAAAAAAxQEAAAAAAADGAQAAAAAAAAAAAADGAQAAAAAAAMcBAAAAAAAAAAAAAMcBAAAAAAAAyAEAAAAAAAAAAAAAyAEAAAAAAADJAQAAAAAAAAAAAADJAQAAAAAAAMoBAAAAAAAAAAAAAMoBAAAAAAAAywEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxAEAAAAAAADEAQAAAAAAAAAAAAAAAPC/" + ], + [ + 314, + 1, + "insert", + { + "characters": "ai" + }, + "AgAAAMsBAAAAAAAAzAEAAAAAAAAAAAAAzAEAAAAAAADNAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAywEAAAAAAADLAQAAAAAAAAAAAAAAAPC/" + ], + [ + 315, + 1, + "insert_completion", + { + "completion": "author_site", + "format": "text", + "keep_prefix": false, + "must_insert": false, + "trigger": "author_site" + }, + "AgAAAMsBAAAAAAAAywEAAAAAAAACAAAAYWnLAQAAAAAAANYBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAzQEAAAAAAADNAQAAAAAAAAAAAAAAAPC/" + ], + [ + 316, + 1, + "insert", + { + "characters": " and" + }, + "BAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA1wEAAAAAAADYAQAAAAAAAAAAAADYAQAAAAAAANkBAAAAAAAAAAAAANkBAAAAAAAA2gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1gEAAAAAAADWAQAAAAAAAAAAAAAAAPC/" + ], + [ + 317, + 1, + "insert", + { + "characters": " comment." + }, + "CQAAANoBAAAAAAAA2wEAAAAAAAAAAAAA2wEAAAAAAADcAQAAAAAAAAAAAADcAQAAAAAAAN0BAAAAAAAAAAAAAN0BAAAAAAAA3gEAAAAAAAAAAAAA3gEAAAAAAADfAQAAAAAAAAAAAADfAQAAAAAAAOABAAAAAAAAAAAAAOABAAAAAAAA4QEAAAAAAAAAAAAA4QEAAAAAAADiAQAAAAAAAAAAAADiAQAAAAAAAOMBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2gEAAAAAAADaAQAAAAAAAAAAAAAAAPC/" + ], + [ + 323, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"content\",\"position\":{\"line\":14,\"character\":189},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"content\",\"sortText\":\"09.9999.content\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "content" + }, + "AQAAAOMBAAAAAAAA6gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4wEAAAAAAADjAQAAAAAAAAAAAAAAAPC/" + ], + [ + 324, + 1, + "insert", + { + "characters": " =" + }, + "AgAAAOoBAAAAAAAA6wEAAAAAAAAAAAAA6wEAAAAAAADsAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6gEAAAAAAADqAQAAAAAAAAAAAAAAAPC/" + ], + [ + 325, + 1, + "insert", + { + "characters": "=" + }, + "AQAAAOwBAAAAAAAA7QEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA7AEAAAAAAADsAQAAAAAAAAAAAAAAAPC/" + ], + [ + 326, + 1, + "insert", + { + "characters": " other." + }, + "BwAAAO0BAAAAAAAA7gEAAAAAAAAAAAAA7gEAAAAAAADvAQAAAAAAAAAAAADvAQAAAAAAAPABAAAAAAAAAAAAAPABAAAAAAAA8QEAAAAAAAAAAAAA8QEAAAAAAADyAQAAAAAAAAAAAADyAQAAAAAAAPMBAAAAAAAAAAAAAPMBAAAAAAAA9AEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA7QEAAAAAAADtAQAAAAAAAAAAAAAAAPC/" + ], + [ + 327, 1, "insert", { "characters": "content" }, - "BwAAAIMGAAAAAAAAhAYAAAAAAAAAAAAAhAYAAAAAAACFBgAAAAAAAAAAAACFBgAAAAAAAIYGAAAAAAAAAAAAAIYGAAAAAAAAhwYAAAAAAAAAAAAAhwYAAAAAAACIBgAAAAAAAAAAAACIBgAAAAAAAIkGAAAAAAAAAAAAAIkGAAAAAAAAigYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgwYAAAAAAACDBgAAAAAAAAAAAAAAAPC/" + "BwAAAPQBAAAAAAAA9QEAAAAAAAAAAAAA9QEAAAAAAAD2AQAAAAAAAAAAAAD2AQAAAAAAAPcBAAAAAAAAAAAAAPcBAAAAAAAA+AEAAAAAAAAAAAAA+AEAAAAAAAD5AQAAAAAAAAAAAAD5AQAAAAAAAPoBAAAAAAAAAAAAAPoBAAAAAAAA+wEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA9AEAAAAAAAD0AQAAAAAAAAAAAAAAAPC/" ], [ - 861, - 1, - "left_delete", - null, - "AQAAAEAGAAAAAAAAQAYAAAAAAAABAAAAPQ", - "AQAAAAAAAAABAAAAQQYAAAAAAABBBgAAAAAAAAAAAAAAAPC/" - ], - [ - 865, + 328, 1, "insert", { - "characters": "\n" + "characters": " and" }, - "BAAAAIkGAAAAAAAAigYAAAAAAAAAAAAAigYAAAAAAACOBgAAAAAAAAAAAACKBgAAAAAAAIoGAAAAAAAABAAAACAgICCKBgAAAAAAAJIGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiQYAAAAAAACJBgAAAAAAAAAAAAAAAPC/" + "BAAAAPsBAAAAAAAA/AEAAAAAAAAAAAAA/AEAAAAAAAD9AQAAAAAAAAAAAAD9AQAAAAAAAP4BAAAAAAAAAAAAAP4BAAAAAAAA/wEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA+wEAAAAAAAD7AQAAAAAAAAAAAAAAAPC/" ], [ - 868, + 329, 1, "insert", { - "characters": "\n," + "characters": " comment." }, - "BQAAAIkGAAAAAAAAigYAAAAAAAAAAAAAigYAAAAAAACOBgAAAAAAAAAAAACKBgAAAAAAAIoGAAAAAAAABAAAACAgICCKBgAAAAAAAJIGAAAAAAAAAAAAAJIGAAAAAAAAkwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiQYAAAAAAACJBgAAAAAAAP///////+9/" + "CQAAAP8BAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAABAgAAAAAAAAAAAAABAgAAAAAAAAICAAAAAAAAAAAAAAICAAAAAAAAAwIAAAAAAAAAAAAAAwIAAAAAAAAEAgAAAAAAAAAAAAAEAgAAAAAAAAUCAAAAAAAAAAAAAAUCAAAAAAAABgIAAAAAAAAAAAAABgIAAAAAAAAHAgAAAAAAAAAAAAAHAgAAAAAAAAgCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA/wEAAAAAAAD/AQAAAAAAAAAAAAAAAPC/" ], [ - 869, + 334, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"created\",\"position\":{\"line\":14,\"character\":226},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"created\",\"sortText\":\"09.9999.created\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "created" + }, + "AQAAAAgCAAAAAAAADwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACAIAAAAAAAAIAgAAAAAAAAAAAAAAAPC/" + ], + [ + 335, 1, "insert", { - "characters": " " + "characters": " ==" }, - "AQAAAJMGAAAAAAAAlAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkwYAAAAAAACTBgAAAAAAAAAAAAAAAPC/" + "AwAAAA8CAAAAAAAAEAIAAAAAAAAAAAAAEAIAAAAAAAARAgAAAAAAAAAAAAARAgAAAAAAABICAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADwIAAAAAAAAPAgAAAAAAAAAAAAAAAPC/" ], [ - 879, - 1, - "paste", - null, - "AQAAAJQGAAAAAAAAmwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlAYAAAAAAACUBgAAAAAAAAAAAAAAAPC/" - ], - [ - 881, - 1, - "right_delete", - null, - "AQAAAJQGAAAAAAAAlAYAAAAAAAAHAAAAY3JlYXRlZA", - "AQAAAAAAAAABAAAAmwYAAAAAAACUBgAAAAAAAAAAAAAAAPC/" - ], - [ - 882, + 336, 1, "insert", { - "characters": "created=" + "characters": " other.c" }, - "CAAAAJQGAAAAAAAAlQYAAAAAAAAAAAAAlQYAAAAAAACWBgAAAAAAAAAAAACWBgAAAAAAAJcGAAAAAAAAAAAAAJcGAAAAAAAAmAYAAAAAAAAAAAAAmAYAAAAAAACZBgAAAAAAAAAAAACZBgAAAAAAAJoGAAAAAAAAAAAAAJoGAAAAAAAAmwYAAAAAAAAAAAAAmwYAAAAAAACcBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlAYAAAAAAACUBgAAAAAAAAAAAAAAAPC/" + "CAAAABICAAAAAAAAEwIAAAAAAAAAAAAAEwIAAAAAAAAUAgAAAAAAAAAAAAAUAgAAAAAAABUCAAAAAAAAAAAAABUCAAAAAAAAFgIAAAAAAAAAAAAAFgIAAAAAAAAXAgAAAAAAAAAAAAAXAgAAAAAAABgCAAAAAAAAAAAAABgCAAAAAAAAGQIAAAAAAAAAAAAAGQIAAAAAAAAaAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEgIAAAAAAAASAgAAAAAAAAAAAAAAAPC/" ], [ - 883, + 337, 1, "insert", { - "characters": "row.c" + "characters": "re" }, - "BQAAAJwGAAAAAAAAnQYAAAAAAAAAAAAAnQYAAAAAAACeBgAAAAAAAAAAAACeBgAAAAAAAJ8GAAAAAAAAAAAAAJ8GAAAAAAAAoAYAAAAAAAAAAAAAoAYAAAAAAAChBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAnAYAAAAAAACcBgAAAAAAAAAAAAAAAPC/" + "AgAAABoCAAAAAAAAGwIAAAAAAAAAAAAAGwIAAAAAAAAcAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAGgIAAAAAAAAaAgAAAAAAAAAAAAAAAPC/" ], [ - 884, + 338, 1, "insert_completion", { @@ -5790,59 +5095,75 @@ "must_insert": false, "trigger": "created" }, - "AgAAAKAGAAAAAAAAoAYAAAAAAAABAAAAY6AGAAAAAAAApwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAoQYAAAAAAAChBgAAAAAAAAAAAAAAAPC/" + "AgAAABkCAAAAAAAAGQIAAAAAAAADAAAAY3JlGQIAAAAAAAAgAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAHAIAAAAAAAAcAgAAAAAAAAAAAAAAAPC/" ], [ - 885, + 339, 1, "insert", { - "characters": "," + "characters": " and" }, - "AQAAAKcGAAAAAAAAqAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAApwYAAAAAAACnBgAAAAAAAAAAAAAAAPC/" + "BAAAACACAAAAAAAAIQIAAAAAAAAAAAAAIQIAAAAAAAAiAgAAAAAAAAAAAAAiAgAAAAAAACMCAAAAAAAAAAAAACMCAAAAAAAAJAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAIAIAAAAAAAAgAgAAAAAAAAAAAAAAAPC/" ], [ - 886, + 340, 1, "insert", { - "characters": " no" + "characters": " comment." }, - "AwAAAKgGAAAAAAAAqQYAAAAAAAAAAAAAqQYAAAAAAACqBgAAAAAAAAAAAACqBgAAAAAAAKsGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqAYAAAAAAACoBgAAAAAAAAAAAAAAAPC/" + "CQAAACQCAAAAAAAAJQIAAAAAAAAAAAAAJQIAAAAAAAAmAgAAAAAAAAAAAAAmAgAAAAAAACcCAAAAAAAAAAAAACcCAAAAAAAAKAIAAAAAAAAAAAAAKAIAAAAAAAApAgAAAAAAAAAAAAApAgAAAAAAACoCAAAAAAAAAAAAACoCAAAAAAAAKwIAAAAAAAAAAAAAKwIAAAAAAAAsAgAAAAAAAAAAAAAsAgAAAAAAAC0CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJAIAAAAAAAAkAgAAAAAAAAAAAAAAAPC/" ], [ - 887, + 347, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"notified\",\"position\":{\"line\":14,\"character\":263},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"notified\",\"sortText\":\"09.9999.notified\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": true, + "trigger": "notified" + }, + "AQAAAC0CAAAAAAAANQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALQIAAAAAAAAtAgAAAAAAAAAAAAAAAPC/" + ], + [ + 348, 1, "insert", { - "characters": "tified=o" + "characters": " ==" }, - "CAAAAKsGAAAAAAAArAYAAAAAAAAAAAAArAYAAAAAAACtBgAAAAAAAAAAAACtBgAAAAAAAK4GAAAAAAAAAAAAAK4GAAAAAAAArwYAAAAAAAAAAAAArwYAAAAAAACwBgAAAAAAAAAAAACwBgAAAAAAALEGAAAAAAAAAAAAALEGAAAAAAAAsgYAAAAAAAAAAAAAsgYAAAAAAACzBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAAPC/" + "AwAAADUCAAAAAAAANgIAAAAAAAAAAAAANgIAAAAAAAA3AgAAAAAAAAAAAAA3AgAAAAAAADgCAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAAPC/" ], [ - 888, - 1, - "left_delete", - null, - "AQAAALIGAAAAAAAAsgYAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAAswYAAAAAAACzBgAAAAAAAAAAAAAAAPC/" - ], - [ - 889, + 349, 1, "insert", { - "characters": "row.n" + "characters": " other" }, - "BQAAALIGAAAAAAAAswYAAAAAAAAAAAAAswYAAAAAAAC0BgAAAAAAAAAAAAC0BgAAAAAAALUGAAAAAAAAAAAAALUGAAAAAAAAtgYAAAAAAAAAAAAAtgYAAAAAAAC3BgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAsgYAAAAAAACyBgAAAAAAAAAAAAAAAPC/" + "BgAAADgCAAAAAAAAOQIAAAAAAAAAAAAAOQIAAAAAAAA6AgAAAAAAAAAAAAA6AgAAAAAAADsCAAAAAAAAAAAAADsCAAAAAAAAPAIAAAAAAAAAAAAAPAIAAAAAAAA9AgAAAAAAAAAAAAA9AgAAAAAAAD4CAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAOAIAAAAAAAA4AgAAAAAAAAAAAAAAAPC/" ], [ - 890, + 350, + 1, + "insert", + { + "characters": ".noti" + }, + "BQAAAD4CAAAAAAAAPwIAAAAAAAAAAAAAPwIAAAAAAABAAgAAAAAAAAAAAABAAgAAAAAAAEECAAAAAAAAAAAAAEECAAAAAAAAQgIAAAAAAAAAAAAAQgIAAAAAAABDAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAPgIAAAAAAAA+AgAAAAAAAAAAAAAAAPC/" + ], + [ + 351, 1, "insert_completion", { @@ -5852,59 +5173,83 @@ "must_insert": false, "trigger": "notified" }, - "AgAAALYGAAAAAAAAtgYAAAAAAAABAAAAbrYGAAAAAAAAvgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtwYAAAAAAAC3BgAAAAAAAAAAAAAAAPC/" + "AgAAAD8CAAAAAAAAPwIAAAAAAAAEAAAAbm90aT8CAAAAAAAARwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAQwIAAAAAAABDAgAAAAAAAAAAAAAAAPC/" ], [ - 891, + 352, 1, "insert", { - "characters": "," + "characters": " and" }, - "AQAAAL4GAAAAAAAAvwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvgYAAAAAAAC+BgAAAAAAAAAAAAAAAPC/" + "BAAAAEcCAAAAAAAASAIAAAAAAAAAAAAASAIAAAAAAABJAgAAAAAAAAAAAABJAgAAAAAAAEoCAAAAAAAAAAAAAEoCAAAAAAAASwIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAARwIAAAAAAABHAgAAAAAAAAAAAAAAAPC/" ], [ - 892, + 353, 1, "insert", { - "characters": " pul" + "characters": " comment" }, - "BAAAAL8GAAAAAAAAwAYAAAAAAAAAAAAAwAYAAAAAAADBBgAAAAAAAAAAAADBBgAAAAAAAMIGAAAAAAAAAAAAAMIGAAAAAAAAwwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvwYAAAAAAAC/BgAAAAAAAAAAAAAAAPC/" + "CAAAAEsCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABNAgAAAAAAAAAAAABNAgAAAAAAAE4CAAAAAAAAAAAAAE4CAAAAAAAATwIAAAAAAAAAAAAATwIAAAAAAABQAgAAAAAAAAAAAABQAgAAAAAAAFECAAAAAAAAAAAAAFECAAAAAAAAUgIAAAAAAAAAAAAAUgIAAAAAAABTAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASwIAAAAAAABLAgAAAAAAAAAAAAAAAPC/" ], [ - 893, - 1, - "left_delete", - null, - "AQAAAMIGAAAAAAAAwgYAAAAAAAABAAAAbA", - "AQAAAAAAAAABAAAAwwYAAAAAAADDBgAAAAAAAAAAAAAAAPC/" - ], - [ - 894, - 1, - "insert", - { - "characters": "blished=row" - }, - "CwAAAMIGAAAAAAAAwwYAAAAAAAAAAAAAwwYAAAAAAADEBgAAAAAAAAAAAADEBgAAAAAAAMUGAAAAAAAAAAAAAMUGAAAAAAAAxgYAAAAAAAAAAAAAxgYAAAAAAADHBgAAAAAAAAAAAADHBgAAAAAAAMgGAAAAAAAAAAAAAMgGAAAAAAAAyQYAAAAAAAAAAAAAyQYAAAAAAADKBgAAAAAAAAAAAADKBgAAAAAAAMsGAAAAAAAAAAAAAMsGAAAAAAAAzAYAAAAAAAAAAAAAzAYAAAAAAADNBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwgYAAAAAAADCBgAAAAAAAAAAAAAAAPC/" - ], - [ - 895, + 354, 1, "insert", { "characters": ".p" }, - "AgAAAM0GAAAAAAAAzgYAAAAAAAAAAAAAzgYAAAAAAADPBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzQYAAAAAAADNBgAAAAAAAAAAAAAAAPC/" + "AgAAAFMCAAAAAAAAVAIAAAAAAAAAAAAAVAIAAAAAAABVAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUwIAAAAAAABTAgAAAAAAAAAAAAAAAPC/" ], [ - 896, + 355, + 1, + "insert_completion", + { + "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"published\",\"position\":{\"line\":14,\"character\":303},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"published\",\"sortText\":\"09.9999.published\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "published" + }, + "AgAAAFQCAAAAAAAAVAIAAAAAAAABAAAAcFQCAAAAAAAAXQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVQIAAAAAAABVAgAAAAAAAAAAAAAAAPC/" + ], + [ + 356, + 1, + "insert", + { + "characters": " ==" + }, + "AwAAAF0CAAAAAAAAXgIAAAAAAAAAAAAAXgIAAAAAAABfAgAAAAAAAAAAAABfAgAAAAAAAGACAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXQIAAAAAAABdAgAAAAAAAAAAAAAAAPC/" + ], + [ + 357, + 1, + "insert", + { + "characters": " other.puy" + }, + "CgAAAGACAAAAAAAAYQIAAAAAAAAAAAAAYQIAAAAAAABiAgAAAAAAAAAAAABiAgAAAAAAAGMCAAAAAAAAAAAAAGMCAAAAAAAAZAIAAAAAAAAAAAAAZAIAAAAAAABlAgAAAAAAAAAAAABlAgAAAAAAAGYCAAAAAAAAAAAAAGYCAAAAAAAAZwIAAAAAAAAAAAAAZwIAAAAAAABoAgAAAAAAAAAAAABoAgAAAAAAAGkCAAAAAAAAAAAAAGkCAAAAAAAAagIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYAIAAAAAAABgAgAAAAAAAAAAAAAAAPC/" + ], + [ + 358, + 1, + "left_delete", + null, + "AQAAAGkCAAAAAAAAaQIAAAAAAAABAAAAeQ", + "AQAAAAAAAAABAAAAagIAAAAAAABqAgAAAAAAAAAAAAAAAPC/" + ], + [ + 359, 1, "insert_completion", { @@ -5914,2395 +5259,879 @@ "must_insert": false, "trigger": "published" }, - "AgAAAM4GAAAAAAAAzgYAAAAAAAABAAAAcM4GAAAAAAAA1wYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzwYAAAAAAADPBgAAAAAAAAAAAAAAAPC/" + "AgAAAGcCAAAAAAAAZwIAAAAAAAACAAAAcHVnAgAAAAAAAHACAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAaQIAAAAAAABpAgAAAAAAAAAAAAAAAPC/" ], [ - 900, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAADiBgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYgpmcm9tIHN0YWNvc3lzLm1vZGVsLmNvbW1lbnQgaW1wb3J0IENvbW1lbnQKCgpkZWYgZmluZF9jb21tZW50X2J5X2lkKGNvbW1lbnRfaWQpOgogICAgcmV0dXJuIGRiKCkuY29tbWVudChjb21tZW50X2lkKQoKCmRlZiBub3RpZnlfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQubm90aWZpZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50Lmluc2VydChhc2RpY3QoY29tbWVudCkpCgoKZGVmIHB1Ymxpc2hfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQucHVibGlzaGVkID0gZGF0ZXRpbWUubm93KCkKICAgIGRiKCkuY29tbWVudC5pbnNlcnQoYXNkaWN0KGNvbW1lbnQpKQoKCmRlZiBkZWxldGVfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGRiKCkoZGIoKS5jb21tZW50LmlkID09IGNvbW1lbnQuaWQpLmRlbGV0ZSgpCgoKZGVmIGZpbmRfbm90X25vdGlmaWVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQubm90aWZpZWQgPT0gTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9ub3RfcHVibGlzaGVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfcHVibGlzaGVkX2NvbW1lbnRzX2J5X3VybCh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKChkYigpLmNvbW1lbnQudXJsID09IHVybCkgJiAoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCAhPSBOb25lKSkKICAgICAgICAuc2VsZWN0KCkKICAgICAgICAuc29ydChsYW1iZGEgcm93OiByb3cucHVibGlzaGVkKQogICAgKQoKCmRlZiBjb3VudF9wdWJsaXNoZWRfY29tbWVudHModXJsKToKICAgIHJldHVybiAoCiAgICAgICAgZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgPT0gTm9uZSkpLmNvdW50KCkKICAgICAgICBpZiB1cmwKICAgICAgICBlbHNlIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCA9PSBOb25lKS5jb3VudCgpCiAgICApCgoKZGVmIGNyZWF0ZV9jb21tZW50KHVybCwgYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlLCBhdXRob3JfZ3JhdmF0YXIsIG1lc3NhZ2UpOgogICAgcm93ID0gZGIoKS5jb21tZW50Lmluc2VydCgKICAgICAgICB1cmw9dXJsLAogICAgICAgIGF1dGhvcl9uYW1lPWF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPWF1dGhvcl9zaXRlLAogICAgICAgIGF1dGhvcl9ncmF2YXRhcj1hdXRob3JfZ3JhdmF0YXIsCiAgICAgICAgY29udGVudD1tZXNzYWdlLAogICAgICAgIGNyZWF0ZWQ9ZGF0ZXRpbWUubm93KCksCiAgICAgICAgbm90aWZpZWQ9Tm9uZSwKICAgICAgICBwdWJsaXNoZWQ9Tm9uZSwKICAgICkKCiAgICByZXR1cm4gQ29tbWVudChpZD1yb3cuaWQsIHVybD1yb3cudXJsLCBhdXRob3JfbmFtZT1yb3cuYXV0aG9yX25hbWUsIGF1dGhvcl9zaXRlPXJvdy5hdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyPXJvdy5hdXRob3JfZ3JhdmF0YXIsIGNvbnRlbnQ9cm93LmNvbnRlbnQKICAgICAgICAsIGNyZWF0ZWQ9cm93LmNyZWF0ZWQsIG5vdGlmaWVkPXJvdy5ub3RpZmllZCwgcHVibGlzaGVkPXJvdy5wdWJsaXNoZWQKICAgICAgICApCgAAAAAAAAAAHwcAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4gYAAAAAAADiBgAAAAAAAAAAAAAAqIVA" - ], - [ - 907, - 1, - "insert", - { - "characters": "[" - }, - "AQAAAF4BAAAAAAAAXwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXgEAAAAAAABeAQAAAAAAAAAAAAAAAPC/" - ], - [ - 911, - 1, - "insert", - { - "characters": "]" - }, - "AQAAAG4BAAAAAAAAbwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbgEAAAAAAABuAQAAAAAAAAAAAAAAAPC/" - ], - [ - 915, - 1, - "insert", - { - "characters": "[" - }, - "AQAAANkBAAAAAAAA2gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2QEAAAAAAADZAQAAAAAAAAAAAAAAAPC/" - ], - [ - 921, - 1, - "insert", - { - "characters": "]" - }, - "AQAAAOkBAAAAAAAA6gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6QEAAAAAAADpAQAAAAAAAAAAAAAAAPC/" - ], - [ - 935, - 1, - "insert", - { - "characters": "bulk-" - }, - "BQAAAFcBAAAAAAAAWAEAAAAAAAAAAAAAWAEAAAAAAABZAQAAAAAAAAAAAABZAQAAAAAAAFoBAAAAAAAAAAAAAFoBAAAAAAAAWwEAAAAAAAAAAAAAWwEAAAAAAABcAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVwEAAAAAAABXAQAAAAAAAAAAAAAAAPC/" - ], - [ - 936, - 1, - "left_delete", - null, - "AQAAAFsBAAAAAAAAWwEAAAAAAAABAAAALQ", - "AQAAAAAAAAABAAAAXAEAAAAAAABcAQAAAAAAAAAAAAAAAPC/" - ], - [ - 937, - 1, - "insert", - { - "characters": "_" - }, - "AQAAAFsBAAAAAAAAXAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWwEAAAAAAABbAQAAAAAAAAAAAAAAAPC/" - ], - [ - 949, - 1, - "paste", - null, - "AgAAANcBAAAAAAAA4gEAAAAAAAAAAAAA4gEAAAAAAADiAQAAAAAAAAYAAABpbnNlcnQ", - "AQAAAAAAAAABAAAA1wEAAAAAAADdAQAAAAAAAAAAAAAAAPC/" - ], - [ - 952, - 1, - "insert", - { - "characters": "\ndb" - }, - "BAAAAHUBAAAAAAAAdgEAAAAAAAAAAAAAdgEAAAAAAAB6AQAAAAAAAAAAAAB6AQAAAAAAAHsBAAAAAAAAAAAAAHsBAAAAAAAAfAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdQEAAAAAAAB1AQAAAAAAAAAAAAAAAPC/" - ], - [ - 953, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAHwBAAAAAAAAfgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfAEAAAAAAAB8AQAAAAAAAAAAAAAAAPC/" - ], - [ - 954, - 1, - "insert", - { - "characters": "à." - }, - "AgAAAH0BAAAAAAAAfgEAAAAAAAAAAAAAfgEAAAAAAAB/AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfQEAAAAAAAB9AQAAAAAAAAAAAAAAAPC/" - ], - [ - 955, - 2, - "left_delete", - null, - "AgAAAH4BAAAAAAAAfgEAAAAAAAABAAAALn0BAAAAAAAAfQEAAAAAAAACAAAAw6A", - "AQAAAAAAAAABAAAAfwEAAAAAAAB/AQAAAAAAAAAAAAAAAPC/" - ], - [ - 957, - 1, - "insert", - { - "characters": ".co" - }, - "AwAAAH4BAAAAAAAAfwEAAAAAAAAAAAAAfwEAAAAAAACAAQAAAAAAAAAAAACAAQAAAAAAAIEBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfgEAAAAAAAB+AQAAAAAAAAAAAAAAAPC/" - ], - [ - 958, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":2,\"sortText\":\"09.9999.commit\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/dao.py\",\"position\":{\"line\":16,\"character\":11},\"symbolLabel\":\"commit\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"commit\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "commit" - }, - "AgAAAH8BAAAAAAAAfwEAAAAAAAACAAAAY29/AQAAAAAAAIUBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgQEAAAAAAACBAQAAAAAAAAAAAAAAAPC/" - ], - [ - 959, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAIUBAAAAAAAAhwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQEAAAAAAACFAQAAAAAAAAAAAAAAAPC/" - ], - [ - 970, - 1, - "reindent", - null, - "AQAAAAgCAAAAAAAADAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACAIAAAAAAAAIAgAAAAAAAAAAAAAAAAAA" - ], - [ - 971, - 1, - "paste", - null, - "AQAAAAwCAAAAAAAAGQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADAIAAAAAAAAMAgAAAAAAAAAAAAAAAPC/" - ], - [ - 976, + 362, 1, "insert", { "characters": "\n" }, - "AgAAAHECAAAAAAAAcgIAAAAAAAAAAAAAcgIAAAAAAAB2AgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcQIAAAAAAABxAgAAAAAAAAAAAAAAAPC/" + "AgAAAHACAAAAAAAAcQIAAAAAAAAAAAAAcQIAAAAAAAB1AgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAcAIAAAAAAABwAgAAAAAAAP///////+9/" ], [ - 977, - 1, - "paste", - null, - "AQAAAHYCAAAAAAAAgwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdgIAAAAAAAB2AgAAAAAAAAAAAAAAAPC/" - ], - [ - 982, - 1, - "reindent", - null, - "AQAAAC4GAAAAAAAAMgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALgYAAAAAAAAuBgAAAAAAAAAAAAAAAPC/" - ], - [ - 983, - 1, - "paste", - null, - "AQAAADIGAAAAAAAAPwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMgYAAAAAAAAyBgAAAAAAAAAAAAAAAPC/" - ], - [ - 986, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAABzBwAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0CmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYgpmcm9tIHN0YWNvc3lzLm1vZGVsLmNvbW1lbnQgaW1wb3J0IENvbW1lbnQKCgpkZWYgZmluZF9jb21tZW50X2J5X2lkKGNvbW1lbnRfaWQpOgogICAgcmV0dXJuIGRiKCkuY29tbWVudChjb21tZW50X2lkKQoKCmRlZiBub3RpZnlfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGNvbW1lbnQubm90aWZpZWQgPSBkYXRldGltZS5ub3coKQogICAgZGIoKS5jb21tZW50LmJ1bGtfaW5zZXJ0KFthc2RpY3QoY29tbWVudCldKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBwdWJsaXNoX2NvbW1lbnQoY29tbWVudDogQ29tbWVudCk6CiAgICBjb21tZW50LnB1Ymxpc2hlZCA9IGRhdGV0aW1lLm5vdygpCiAgICBkYigpLmNvbW1lbnQuYnVsa19pbnNlcnQoW2FzZGljdChjb21tZW50KV0pCiAgICBkYigpLmNvbW1pdCgpCgpkZWYgZGVsZXRlX2NvbW1lbnQoY29tbWVudDogQ29tbWVudCk6CiAgICBkYigpKGRiKCkuY29tbWVudC5pZCA9PSBjb21tZW50LmlkKS5kZWxldGUoKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBmaW5kX25vdF9ub3RpZmllZF9jb21tZW50cygpOgogICAgcmV0dXJuIGRiKCkoZGIoKS5jb21tZW50Lm5vdGlmaWVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfbm90X3B1Ymxpc2hlZF9jb21tZW50cygpOgogICAgcmV0dXJuIGRiKCkoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCA9PSBOb25lKS5zZWxlY3QoKQoKCmRlZiBmaW5kX3B1Ymxpc2hlZF9jb21tZW50c19ieV91cmwodXJsKToKICAgIHJldHVybiAoCiAgICAgICAgZGIoKSgoZGIoKS5jb21tZW50LnVybCA9PSB1cmwpICYgKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgIT0gTm9uZSkpCiAgICAgICAgLnNlbGVjdCgpCiAgICAgICAgLnNvcnQobGFtYmRhIHJvdzogcm93LnB1Ymxpc2hlZCkKICAgICkKCgpkZWYgY291bnRfcHVibGlzaGVkX2NvbW1lbnRzKHVybCk6CiAgICByZXR1cm4gKAogICAgICAgIGRiKCkoKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmIChkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpKS5jb3VudCgpCiAgICAgICAgaWYgdXJsCiAgICAgICAgZWxzZSBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgPT0gTm9uZSkuY291bnQoKQogICAgKQoKCmRlZiBjcmVhdGVfY29tbWVudCh1cmwsIGF1dGhvcl9uYW1lLCBhdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyLCBtZXNzYWdlKToKICAgIHJvdyA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICApCiAgICBkYigpLmNvbW1pdCgpCiAgICByZXR1cm4gQ29tbWVudCgKICAgICAgICBpZD1yb3cuaWQsCiAgICAgICAgdXJsPXJvdy51cmwsCiAgICAgICAgYXV0aG9yX25hbWU9cm93LmF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPXJvdy5hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9cm93LmF1dGhvcl9ncmF2YXRhciwKICAgICAgICBjb250ZW50PXJvdy5jb250ZW50LAogICAgICAgIGNyZWF0ZWQ9cm93LmNyZWF0ZWQsCiAgICAgICAgbm90aWZpZWQ9cm93Lm5vdGlmaWVkLAogICAgICAgIHB1Ymxpc2hlZD1yb3cucHVibGlzaGVkLAogICAgKQoAAAAAAAAAAHQHAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAPwYAAAAAAAA/BgAAAAAAAAAAAAAAAPC/" - ], - [ - 999, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAEUBAAAAAAAARgEAAAAAAAAAAAAARgEAAAAAAABKAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAARQEAAAAAAABFAQAAAAAAAAAAAAAA0HRA" - ], - [ - 1001, - 1, - "", - null, - "AQAAAEoBAAAAAAAAgQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASgEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1005, - 1, - "insert", - { - "characters": "()" - }, - "AgAAAEwBAAAAAAAATQEAAAAAAAAAAAAATQEAAAAAAABOAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATAEAAAAAAABMAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1008, - 1, - "insert", - { - "characters": ".comment" - }, - "CQAAAFEBAAAAAAAAUgEAAAAAAAAAAAAAUgEAAAAAAABSAQAAAAAAAAEAAABbUgEAAAAAAABTAQAAAAAAAAAAAABTAQAAAAAAAFQBAAAAAAAAAAAAAFQBAAAAAAAAVQEAAAAAAAAAAAAAVQEAAAAAAABWAQAAAAAAAAAAAABWAQAAAAAAAFcBAAAAAAAAAAAAAFcBAAAAAAAAWAEAAAAAAAAAAAAAWAEAAAAAAABZAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUQEAAAAAAABSAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1011, - 1, - "insert", - { - "characters": "()" - }, - "AgAAAFEBAAAAAAAAUgEAAAAAAAAAAAAAUgEAAAAAAABTAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUQEAAAAAAABRAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1016, - 1, - "right_delete", - null, - "AQAAAFsBAAAAAAAAWwEAAAAAAAAKAAAAdGFibGVuYW1lXQ", - "AQAAAAAAAAABAAAAWwEAAAAAAABlAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1019, - 1, - "insert", - { - "characters": "comment." - }, - "CAAAAGMBAAAAAAAAZAEAAAAAAAAAAAAAZAEAAAAAAABlAQAAAAAAAAAAAABlAQAAAAAAAGYBAAAAAAAAAAAAAGYBAAAAAAAAZwEAAAAAAAAAAAAAZwEAAAAAAABoAQAAAAAAAAAAAABoAQAAAAAAAGkBAAAAAAAAAAAAAGkBAAAAAAAAagEAAAAAAAAAAAAAagEAAAAAAABrAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYwEAAAAAAABjAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1024, - 1, - "right_delete", - null, - "AQAAAHYBAAAAAAAAdgEAAAAAAAATAAAAKip7ZmllbGRuYW1lOnZhbHVlfQ", - "AQAAAAAAAAABAAAAdgEAAAAAAACJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1025, - 1, - "insert", - { - "characters": "notii" - }, - "BQAAAHYBAAAAAAAAdwEAAAAAAAAAAAAAdwEAAAAAAAB4AQAAAAAAAAAAAAB4AQAAAAAAAHkBAAAAAAAAAAAAAHkBAAAAAAAAegEAAAAAAAAAAAAAegEAAAAAAAB7AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdgEAAAAAAAB2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 1026, - 1, - "left_delete", - null, - "AQAAAHoBAAAAAAAAegEAAAAAAAABAAAAaQ", - "AQAAAAAAAAABAAAAewEAAAAAAAB7AQAAAAAAAAAAAAAAAPC/" - ], - [ - 1027, - 1, - "insert", - { - "characters": "fied=" - }, - "BQAAAHoBAAAAAAAAewEAAAAAAAAAAAAAewEAAAAAAAB8AQAAAAAAAAAAAAB8AQAAAAAAAH0BAAAAAAAAAAAAAH0BAAAAAAAAfgEAAAAAAAAAAAAAfgEAAAAAAAB/AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAegEAAAAAAAB6AQAAAAAAAAAAAAAAAPC/" - ], - [ - 1030, - 1, - "cut", - null, - "AQAAADcBAAAAAAAANwEAAAAAAAAOAAAAZGF0ZXRpbWUubm93KCk", - "AQAAAAAAAAABAAAARQEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" - ], - [ - 1033, - 1, - "paste", - null, - "AQAAAHEBAAAAAAAAfwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcQEAAAAAAABxAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1036, - 1, - "right_delete", - null, - "AQAAAIUBAAAAAAAAhQEAAAAAAAArAAAAZGIoKS5jb21tZW50LmJ1bGtfaW5zZXJ0KFthc2RpY3QoY29tbWVudCldKQ", - "AQAAAAAAAAABAAAAsAEAAAAAAACFAQAAAAAAAAAAAAAAAEJA" - ], - [ - 1038, - 1, - "left_delete", - null, - "AQAAAIABAAAAAAAAgAEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAgQEAAAAAAACBAQAAAAAAAAAAAAAAAAAA" - ], - [ - 1041, - 1, - "right_delete", - null, - "AQAAACQBAAAAAAAAJAEAAAAAAAATAAAAY29tbWVudC5ub3RpZmllZCA9IA", - "AQAAAAAAAAABAAAANwEAAAAAAAAkAQAAAAAAAAAAAAAAAEJA" - ], - [ - 1043, - 1, - "left_delete", - null, - "AQAAAB8BAAAAAAAAHwEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAIAEAAAAAAAAgAQAAAAAAAAAAAAAAAAAA" - ], - [ - 1045, + 364, 1, "trim_trailing_white_space", null, - "AgAAAGwBAAAAAAAAbAEAAAAAAAAEAAAAICAgIB8BAAAAAAAAHwEAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAHwEAAAAAAAAfAQAAAAAAAAAAAAAAAPC/" + "AQAAAHECAAAAAAAAcQIAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAdQIAAAAAAAB1AgAAAAAAAAAAAAAAAPC/" ], [ - 1053, + 378, 1, "insert", { - "characters": "\n" + "characters": "equals_" }, - "AgAAAKMBAAAAAAAApAEAAAAAAAAAAAAApAEAAAAAAACoAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAowEAAAAAAACjAQAAAAAAAP///////+9/" + "BwAAAG8DAAAAAAAAcAMAAAAAAAAAAAAAcAMAAAAAAABxAwAAAAAAAAAAAABxAwAAAAAAAHIDAAAAAAAAAAAAAHIDAAAAAAAAcwMAAAAAAAAAAAAAcwMAAAAAAAB0AwAAAAAAAAAAAAB0AwAAAAAAAHUDAAAAAAAAAAAAAHUDAAAAAAAAdgMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAbwMAAAAAAABvAwAAAAAAAAAAAAAAAPC/" ], [ - 1054, - 1, - "paste", - null, - "AQAAAKgBAAAAAAAA7AEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqAEAAAAAAACoAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1065, - 1, - "paste", - null, - "AgAAANQBAAAAAAAA3QEAAAAAAAAAAAAA3QEAAAAAAADdAQAAAAAAAAgAAABub3RpZmllZA", - "AQAAAAAAAAABAAAA1AEAAAAAAADcAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1068, - 2, - "left_delete", - null, - "AgAAAO4BAAAAAAAA7gEAAAAAAABWAAAAICAgIGNvbW1lbnQucHVibGlzaGVkID0gZGF0ZXRpbWUubm93KCkKICAgIGRiKCkuY29tbWVudC5idWxrX2luc2VydChbYXNkaWN0KGNvbW1lbnQpXSntAQAAAAAAAO0BAAAAAAAAAQAAAAo", - "AQAAAAAAAAABAAAARAIAAAAAAADuAQAAAAAAAAAAAAAAAPC/" - ], - [ - 1074, - 1, - "insert", - { - "characters": "_" - }, - "AQAAAD4CAAAAAAAAPwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAPgIAAAAAAAA+AgAAAAAAAAAAAAAAAPC/" - ], - [ - 1079, + 379, 1, "left_delete", null, - "AQAAAD4CAAAAAAAAPgIAAAAAAAABAAAAXw", - "AQAAAAAAAAABAAAAPwIAAAAAAAA/AgAAAAAAAAAAAAAA4GlA" + "AQAAAHUDAAAAAAAAdQMAAAAAAAABAAAAXw", + "AQAAAAAAAAABAAAAdgMAAAAAAAB2AwAAAAAAAAAAAAAAAPC/" ], [ - 1083, - 1, - "right_delete", - null, - "AQAAALoBAAAAAAAAugEAAAAAAAABAAAAXw", - "AQAAAAAAAAABAAAAugEAAAAAAAC6AQAAAAAAAAAAAAAAAPC/" - ], - [ - 1085, - 1, - "right_delete", - null, - "AQAAADYBAAAAAAAANgEAAAAAAAABAAAAXw", - "AQAAAAAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAwGhA" - ], - [ - 1092, - 1, - "right_delete", - null, - "AQAAACoAAAAAAAAAKgAAAAAAAAAeAAAAZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgYXNkaWN0", - "AQAAAAAAAAABAAAASAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAA" - ], - [ - 1093, - 1, - "left_delete", - null, - "AQAAACkAAAAAAAAAKQAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAKgAAAAAAAAAqAAAAAAAAAAAAAAAAAPC/" - ], - [ - 1108, - 1, - "toggle_breakpoint", - null, - "AQAAAO0DAAAAAAAAJwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA9AMAAAAAAAD0AwAAAAAAAAAAAAAAAPC/" - ], - [ - 1120, - 1, - "toggle_breakpoint", - null, - "AQAAAO0DAAAAAAAA7QMAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IGYyYzA0YTBkIC8vCg", - "AQAAAAAAAAABAAAAJgQAAAAAAAAmBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1127, + 380, 1, "insert", { - "characters": "!" + "characters": "_comment(" }, - "AgAAADsEAAAAAAAAPAQAAAAAAAAAAAAAPAQAAAAAAAA8BAAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAAOwQAAAAAAAA8BAAAAAAAAAAAAAAAAPC/" + "CQAAAHUDAAAAAAAAdgMAAAAAAAAAAAAAdgMAAAAAAAB3AwAAAAAAAAAAAAB3AwAAAAAAAHgDAAAAAAAAAAAAAHgDAAAAAAAAeQMAAAAAAAAAAAAAeQMAAAAAAAB6AwAAAAAAAAAAAAB6AwAAAAAAAHsDAAAAAAAAAAAAAHsDAAAAAAAAfAMAAAAAAAAAAAAAfAMAAAAAAAB9AwAAAAAAAAAAAAB9AwAAAAAAAH4DAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAdQMAAAAAAAB1AwAAAAAAAAAAAAAAAPC/" ], [ - 1131, + 381, 1, "insert", { - "characters": "!" + "characters": "c1," }, - "AgAAAIUEAAAAAAAAhgQAAAAAAAAAAAAAhgQAAAAAAACGBAAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAAhQQAAAAAAACGBAAAAAAAAAAAAAAAAPC/" + "AwAAAH4DAAAAAAAAfwMAAAAAAAAAAAAAfwMAAAAAAACAAwAAAAAAAAAAAACAAwAAAAAAAIEDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAfgMAAAAAAAB+AwAAAAAAAAAAAAAAAPC/" ], [ - 1136, - 1, - "insert", - { - "characters": "def" - }, - "AwAAAJ0EAAAAAAAAngQAAAAAAAAAAAAAngQAAAAAAACfBAAAAAAAAAAAAACfBAAAAAAAAKAEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAnQQAAAAAAACdBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1137, + 382, 1, "insert", { "characters": " " }, - "AQAAAKAEAAAAAAAAoQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAoAQAAAAAAACgBAAAAAAAAAAAAAAAAPC/" + "AQAAAIEDAAAAAAAAggMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" ], [ - 1138, + 385, + 1, + "insert", + { + "characters": ")" + }, + "AgAAAIkDAAAAAAAAigMAAAAAAAAAAAAAigMAAAAAAACKAwAAAAAAAAwAAAAuaWQgPT0gYzEuaWQ", + "AQAAAAAAAAABAAAAiQMAAAAAAACVAwAAAAAAAAAAAAAAAPC/" + ], + [ + 414, + 1, + "insert", + { + "characters": "\n\t" + }, + "AwAAAEgBAAAAAAAASQEAAAAAAAAAAAAASQEAAAAAAABNAQAAAAAAAAAAAABNAQAAAAAAAFEBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASAEAAAAAAABIAQAAAAAAAAAAAAAAAPC/" + ], + [ + 417, + 1, + "right_delete", + null, + "AQAAAEkBAAAAAAAASQEAAAAAAAAIAAAAICAgICAgICA", + "AQAAAAAAAAABAAAAUQEAAAAAAABJAQAAAAAAAAAAAAAAAAAA" + ], + [ + 418, + 1, + "left_delete", + null, + "AQAAAEgBAAAAAAAASAEAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" + ], + [ + 420, + 1, + "insert", + { + "characters": "\\" + }, + "AQAAAEgBAAAAAAAASQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASAEAAAAAAABIAQAAAAAAAAAAAAAAAPC/" + ], + [ + 421, 1, "insert", { "characters": "\n" }, - "AQAAAKEEAAAAAAAAogQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAoQQAAAAAAAChBAAAAAAAAAAAAAAAAPC/" + "AgAAAEkBAAAAAAAASgEAAAAAAAAAAAAASgEAAAAAAABOAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" ], [ - 1141, - 1, - "insert", - { - "characters": " " - }, - "AQAAAKAEAAAAAAAAoQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAoAQAAAAAAACgBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1142, - 1, - "insert", - { - "characters": "\n\n" - }, - "AgAAAKEEAAAAAAAAogQAAAAAAAAAAAAAogQAAAAAAACjBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAoQQAAAAAAAChBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1143, - 1, - "paste", - null, - "AQAAAKMEAAAAAAAAJgUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAowQAAAAAAACjBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1147, - 1, - "insert", - { - "characters": "find_" - }, - "BQAAAKEEAAAAAAAAogQAAAAAAAAAAAAAogQAAAAAAACjBAAAAAAAAAAAAACjBAAAAAAAAKQEAAAAAAAAAAAAAKQEAAAAAAAApQQAAAAAAAAAAAAApQQAAAAAAACmBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAoQQAAAAAAAChBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1148, - 1, - "insert", - { - "characters": "lastè" - }, - "BQAAAKYEAAAAAAAApwQAAAAAAAAAAAAApwQAAAAAAACoBAAAAAAAAAAAAACoBAAAAAAAAKkEAAAAAAAAAAAAAKkEAAAAAAAAqgQAAAAAAAAAAAAAqgQAAAAAAACrBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAApgQAAAAAAACmBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1149, - 1, - "left_delete", - null, - "AQAAAKoEAAAAAAAAqgQAAAAAAAACAAAAw6g", - "AQAAAAAAAAABAAAAqwQAAAAAAACrBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1150, - 1, - "insert", - { - "characters": "_" - }, - "AQAAAKoEAAAAAAAAqwQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqgQAAAAAAACqBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1151, - 3, - "left_delete", - null, - "AwAAAKoEAAAAAAAAqgQAAAAAAAABAAAAX6kEAAAAAAAAqQQAAAAAAAABAAAAdKgEAAAAAAAAqAQAAAAAAAABAAAAcw", - "AQAAAAAAAAABAAAAqwQAAAAAAACrBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1152, - 1, - "insert", - { - "characters": "test_publ" - }, - "CQAAAKgEAAAAAAAAqQQAAAAAAAAAAAAAqQQAAAAAAACqBAAAAAAAAAAAAACqBAAAAAAAAKsEAAAAAAAAAAAAAKsEAAAAAAAArAQAAAAAAAAAAAAArAQAAAAAAACtBAAAAAAAAAAAAACtBAAAAAAAAK4EAAAAAAAAAAAAAK4EAAAAAAAArwQAAAAAAAAAAAAArwQAAAAAAACwBAAAAAAAAAAAAACwBAAAAAAAALEEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqAQAAAAAAACoBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1153, - 1, - "insert", - { - "characters": "ished_co" - }, - "CAAAALEEAAAAAAAAsgQAAAAAAAAAAAAAsgQAAAAAAACzBAAAAAAAAAAAAACzBAAAAAAAALQEAAAAAAAAAAAAALQEAAAAAAAAtQQAAAAAAAAAAAAAtQQAAAAAAAC2BAAAAAAAAAAAAAC2BAAAAAAAALcEAAAAAAAAAAAAALcEAAAAAAAAuAQAAAAAAAAAAAAAuAQAAAAAAAC5BAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAsQQAAAAAAACxBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1159, - 1, - "insert", - { - "characters": "recent" - }, - "BwAAAKYEAAAAAAAApwQAAAAAAAAAAAAApwQAAAAAAACnBAAAAAAAAAYAAABsYXRlc3SnBAAAAAAAAKgEAAAAAAAAAAAAAKgEAAAAAAAAqQQAAAAAAAAAAAAAqQQAAAAAAACqBAAAAAAAAAAAAACqBAAAAAAAAKsEAAAAAAAAAAAAAKsEAAAAAAAArAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAArAQAAAAAAACmBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1162, - 1, - "insert", - { - "characters": "mments" - }, - "BgAAALkEAAAAAAAAugQAAAAAAAAAAAAAugQAAAAAAAC7BAAAAAAAAAAAAAC7BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvQQAAAAAAAAAAAAAvQQAAAAAAAC+BAAAAAAAAAAAAAC+BAAAAAAAAL8EAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAuQQAAAAAAAC5BAAAAAAAAAAAAAAAAPC/" - ], - [ - 1163, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAL8EAAAAAAAAwQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvwQAAAAAAAC/BAAAAAAAAAAAAAAAAPC/" - ], - [ - 1165, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAMEEAAAAAAAAwgQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwQQAAAAAAADBBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1177, - 1, - "paste", - null, - "AQAAAMMEAAAAAAAAXAUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwwQAAAAAAADDBAAAAAAAAAAAAAAAAPC/" - ], - [ - 1183, - 1, - "right_delete", - null, - "AQAAAN0EAAAAAAAA3QQAAAAAAAAdAAAAKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmICg", - "AQAAAAAAAAABAAAA3QQAAAAAAAD6BAAAAAAAAAAAAAAAAPC/" - ], - [ - 1188, - 1, - "right_delete", - null, - "AQAAAPsEAAAAAAAA+wQAAAAAAAABAAAAKQ", - "AQAAAAAAAAABAAAA+wQAAAAAAAD7BAAAAAAAAAAAAAAAAPC/" - ], - [ - 1195, - 1, - "", - null, - "AQAAAA0FAAAAAAAAGwUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADQUAAAAAAAANBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1198, - 1, - "insert", - { - "characters": "10" - }, - "AwAAABkFAAAAAAAAGgUAAAAAAAAAAAAAGgUAAAAAAAAaBQAAAAAAAAEAAAAyGgUAAAAAAAAbBQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGgUAAAAAAAAZBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1203, - 1, - "", - null, - "AQAAAJcDAAAAAAAAnwMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlwMAAAAAAACXAwAAAAAAAAAAAAAAAPC/" - ], - [ - 1210, - 1, - "paste", - null, - "AQAAAJ8DAAAAAAAArAMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAnwMAAAAAAACfAwAAAAAAAAAAAAAAAPC/" - ], - [ - 1211, - 1, - "insert", - { - "characters": "published" - }, - "CQAAAKwDAAAAAAAArQMAAAAAAAAAAAAArQMAAAAAAACuAwAAAAAAAAAAAACuAwAAAAAAAK8DAAAAAAAAAAAAAK8DAAAAAAAAsAMAAAAAAAAAAAAAsAMAAAAAAACxAwAAAAAAAAAAAACxAwAAAAAAALIDAAAAAAAAAAAAALIDAAAAAAAAswMAAAAAAAAAAAAAswMAAAAAAAC0AwAAAAAAAAAAAAC0AwAAAAAAALUDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAArAMAAAAAAACsAwAAAAAAAAAAAAAAAPC/" - ], - [ - 1215, - 1, - "right_delete", - null, - "AQAAAL8DAAAAAAAAvwMAAAAAAAAgAAAALnNvcnQobGFtYmRhIHJvdzogcm93LnB1Ymxpc2hlZCk", - "AQAAAAAAAAABAAAAvwMAAAAAAADfAwAAAAAAAP///////+9/" - ], - [ - 1217, - 1, - "left_delete", - null, - "AQAAALYDAAAAAAAAtgMAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAtwMAAAAAAAC3AwAAAAAAAAAAAAAAAAAA" - ], - [ - 1219, - 1, - "trim_trailing_white_space", - null, - "AgAAAM4FAAAAAAAAzgUAAAAAAAABAAAAILYDAAAAAAAAtgMAAAAAAAAIAAAAICAgICAgICA", - "AQAAAAAAAAABAAAAtgMAAAAAAAC2AwAAAAAAAAAAAAAAAPC/" - ], - [ - 1225, - 1, - "paste", - null, - "AQAAAAIFAAAAAAAAIAUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAAgUAAAAAAAACBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1226, - 1, - "insert", - { - "characters": "," - }, - "AQAAACAFAAAAAAAAIQUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAIAUAAAAAAAAgBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1227, - 1, - "insert", - { - "characters": " " - }, - "AQAAACEFAAAAAAAAIgUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAIQUAAAAAAAAhBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1230, - 1, - "insert", - { - "characters": "~" - }, - "AQAAAAoFAAAAAAAACwUAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACgUAAAAAAAAKBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1234, - 1, - "right_delete", - null, - "AQAAADwFAAAAAAAAPAUAAAAAAAAgAAAALnNvcnQobGFtYmRhIHJvdzogcm93LnB1Ymxpc2hlZCk", - "AQAAAAAAAAABAAAAPAUAAAAAAABcBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1236, - 1, - "left_delete", - null, - "AQAAADMFAAAAAAAAMwUAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAANAUAAAAAAAA0BQAAAAAAAAAAAAAAAAAA" - ], - [ - 1241, - 1, - "left_delete", - null, - "AQAAAEIFAAAAAAAAQgUAAAAAAACEAAAACiAgICAgICAgICAgIENvbW1lbnQuc2VsZWN0KCkKICAgICAgICAgICAgLndoZXJlKENvbW1lbnQucHVibGlzaGVkKQogICAgICAgICAgICAub3JkZXJfYnkoLUNvbW1lbnQucHVibGlzaGVkKQogICAgICAgICAgICAubGltaXQoMTAp", - "AQAAAAAAAAABAAAAxgUAAAAAAABCBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1243, - 1, - "left_delete", - null, - "AQAAAEIFAAAAAAAAQgUAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAQwUAAAAAAABDBQAAAAAAAAAAAAAAAAAA" - ], - [ - 1245, - 1, - "trim_trailing_white_space", - null, - "AQAAADMFAAAAAAAAMwUAAAAAAAAIAAAAICAgICAgICA", - "AQAAAAAAAAABAAAAQgUAAAAAAABCBQAAAAAAAAAAAAAAAPC/" - ], - [ - 1251, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAADWBwAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCmZyb20gc3RhY29zeXMuZGIgaW1wb3J0IGRiCmZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKCmRlZiBmaW5kX2NvbW1lbnRfYnlfaWQoY29tbWVudF9pZCk6CiAgICByZXR1cm4gZGIoKS5jb21tZW50KGNvbW1lbnRfaWQpCgoKZGVmIG5vdGlmeV9jb21tZW50KGNvbW1lbnQ6IENvbW1lbnQpOgogICAgZGIoKShkYigpLmNvbW1lbnQuaWQgPT0gY29tbWVudC5pZCkudXBkYXRlKG5vdGlmaWVkPWRhdGV0aW1lLm5vdygpKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBwdWJsaXNoX2NvbW1lbnQoY29tbWVudDogQ29tbWVudCk6CiAgICBkYigpKGRiKCkuY29tbWVudC5pZCA9PSBjb21tZW50LmlkKS51cGRhdGUocHVibGlzaGVkPWRhdGV0aW1lLm5vdygpKQogICAgZGIoKS5jb21taXQoKQoKCmRlZiBkZWxldGVfY29tbWVudChjb21tZW50OiBDb21tZW50KToKICAgIGRiKCkoZGIoKS5jb21tZW50LmlkID09IGNvbW1lbnQuaWQpLmRlbGV0ZSgpCiAgICBkYigpLmNvbW1pdCgpCgoKZGVmIGZpbmRfbm90X25vdGlmaWVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQubm90aWZpZWQgPT0gTm9uZSkuc2VsZWN0KCkKCgpkZWYgZmluZF9ub3RfcHVibGlzaGVkX2NvbW1lbnRzKCk6CiAgICByZXR1cm4gZGIoKShkYigpLmNvbW1lbnQucHVibGlzaGVkID09IE5vbmUpLnNlbGVjdCgpCgoKZGVmIGZpbmRfcHVibGlzaGVkX2NvbW1lbnRzX2J5X3VybCh1cmwpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKChkYigpLmNvbW1lbnQudXJsID09IHVybCkgJiAoZGIoKS5jb21tZW50LnB1Ymxpc2hlZCAhPSBOb25lKSkKICAgICAgICAuc2VsZWN0KG9yZGVyYnk9ZGIoKS5jb21tZW50LnB1Ymxpc2hlZCkKICAgICkKCgpkZWYgY291bnRfcHVibGlzaGVkX2NvbW1lbnRzKHVybCk6CiAgICByZXR1cm4gKAogICAgICAgIGRiKCkoKGRiKCkuY29tbWVudC51cmwgPT0gdXJsKSAmIChkYigpLmNvbW1lbnQucHVibGlzaGVkICE9IE5vbmUpKS5jb3VudCgpCiAgICAgICAgaWYgdXJsCiAgICAgICAgZWxzZSBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgIT0gTm9uZSkuY291bnQoKQogICAgKQoKZGVmIGZpbmRfcmVjZW50X3B1Ymxpc2hlZF9jb21tZW50cygpOgogICAgcmV0dXJuICgKICAgICAgICBkYigpKGRiKCkuY29tbWVudC5wdWJsaXNoZWQgIT0gTm9uZSkKICAgICAgICAuc2VsZWN0KG9yZGVyYnk9fmRiKCkuY29tbWVudC5wdWJsaXNoZWQsIGxpbWl0Ynk9KDAsIDEwKSkKICAgICkKCmRlZiBjcmVhdGVfY29tbWVudCh1cmwsIGF1dGhvcl9uYW1lLCBhdXRob3Jfc2l0ZSwgYXV0aG9yX2dyYXZhdGFyLCBtZXNzYWdlKToKICAgIHJvdyA9IGRiKCkuY29tbWVudC5pbnNlcnQoCiAgICAgICAgdXJsPXVybCwKICAgICAgICBhdXRob3JfbmFtZT1hdXRob3JfbmFtZSwKICAgICAgICBhdXRob3Jfc2l0ZT1hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9YXV0aG9yX2dyYXZhdGFyLAogICAgICAgIGNvbnRlbnQ9bWVzc2FnZSwKICAgICAgICBjcmVhdGVkPWRhdGV0aW1lLm5vdygpLAogICAgICAgIG5vdGlmaWVkPU5vbmUsCiAgICAgICAgcHVibGlzaGVkPU5vbmUsCiAgICApCiAgICBkYigpLmNvbW1pdCgpCiAgICByZXR1cm4gQ29tbWVudCgKICAgICAgICBpZD1yb3cuaWQsCiAgICAgICAgdXJsPXJvdy51cmwsCiAgICAgICAgYXV0aG9yX25hbWU9cm93LmF1dGhvcl9uYW1lLAogICAgICAgIGF1dGhvcl9zaXRlPXJvdy5hdXRob3Jfc2l0ZSwKICAgICAgICBhdXRob3JfZ3JhdmF0YXI9cm93LmF1dGhvcl9ncmF2YXRhciwKICAgICAgICBjb250ZW50PXJvdy5jb250ZW50LAogICAgICAgIGNyZWF0ZWQ9cm93LmNyZWF0ZWQsCiAgICAgICAgbm90aWZpZWQ9cm93Lm5vdGlmaWVkLAogICAgICAgIHB1Ymxpc2hlZD1yb3cucHVibGlzaGVkLAogICAgKQoAAAAAAAAAAMIHAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlgQAAAAAAAC0BAAAAAAAAAAAAAAAAPC/" - ], - [ - 1254, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAACkAAAAAAAAAKgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKQAAAAAAAAApAAAAAAAAAAAAAAAAAPC/" - ], - [ - 1255, - 1, - "paste", - null, - "AQAAACoAAAAAAAAATwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKgAAAAAAAAAqAAAAAAAAAAAAAAAAAPC/" - ], - [ - 1256, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAE8AAAAAAAAAUAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATwAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" - ], - [ - 1260, - 1, - "", - null, - "AgAAADwAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAABQAAAAAAAAABMAAABjb25zaWRlci11c2luZy13aXRo", - "AQAAAAAAAAABAAAAPAAAAAAAAABPAAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "stacosys/service/rssfeed.py", - "settings": - { - "buffer_size": 1754, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 15, - 1, - "insert", - { - "characters": "\nfrom" - }, - "BQAAAGsAAAAAAAAAbAAAAAAAAAAAAAAAbAAAAAAAAABtAAAAAAAAAAAAAABtAAAAAAAAAG4AAAAAAAAAAAAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAABwAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 16, - 1, - "insert", - { - "characters": " stacs" - }, - "BgAAAHAAAAAAAAAAcQAAAAAAAAAAAAAAcQAAAAAAAAByAAAAAAAAAAAAAAByAAAAAAAAAHMAAAAAAAAAAAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB1AAAAAAAAAAAAAAB1AAAAAAAAAHYAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcAAAAAAAAABwAAAAAAAAAAAAAAAAAPC/" - ], - [ - 17, - 1, - "left_delete", - null, - "AQAAAHUAAAAAAAAAdQAAAAAAAAABAAAAcw", - "AQAAAAAAAAABAAAAdgAAAAAAAAB2AAAAAAAAAAAAAAAAAPC/" - ], - [ - 18, - 1, - "insert", - { - "characters": "osys.db" - }, - "BwAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAB3AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAAAB6AAAAAAAAAAAAAAB6AAAAAAAAAHsAAAAAAAAAAAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdQAAAAAAAAB1AAAAAAAAAAAAAAAAAPC/" - ], - [ - 19, - 1, - "insert", - { - "characters": "." - }, - "AQAAAHwAAAAAAAAAfQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAAPC/" - ], - [ - 20, - 1, - "left_delete", - null, - "AQAAAHwAAAAAAAAAfAAAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAfQAAAAAAAAB9AAAAAAAAAAAAAAAAAPC/" - ], - [ - 21, - 1, - "insert", - { - "characters": " import" - }, - "BwAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAAPC/" - ], - [ - 22, - 1, - "insert", - { - "characters": " dai" - }, - "BAAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAAAAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" - ], - [ - 23, - 1, - "left_delete", - null, - "AQAAAIYAAAAAAAAAhgAAAAAAAAABAAAAaQ", - "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" - ], - [ - 24, - 1, - "insert", - { - "characters": "o" - }, - "AQAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" - ], - [ - 35, - 1, - "paste", - null, - "AQAAAOQCAAAAAAAAAgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5AIAAAAAAADkAgAAAAAAAAAAAAAAAPC/" - ], - [ - 39, - 1, - "insert", - { - "characters": "dao/" - }, - "BAAAAOQCAAAAAAAA5QIAAAAAAAAAAAAA5QIAAAAAAADmAgAAAAAAAAAAAADmAgAAAAAAAOcCAAAAAAAAAAAAAOcCAAAAAAAA6AIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5AIAAAAAAADkAgAAAAAAAAAAAAAAAPC/" - ], - [ - 40, - 1, - "left_delete", - null, - "AQAAAOcCAAAAAAAA5wIAAAAAAAABAAAALw", - "AQAAAAAAAAABAAAA6AIAAAAAAADoAgAAAAAAAAAAAAAAAPC/" - ], - [ - 41, - 1, - "insert", - { - "characters": "." - }, - "AQAAAOcCAAAAAAAA6AIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5wIAAAAAAADnAgAAAAAAAAAAAAAAAPC/" - ], - [ - 44, - 1, - "insert", - { - "characters": "):" - }, - "AgAAAAcDAAAAAAAACAMAAAAAAAAAAAAACAMAAAAAAAAJAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAABwMAAAAAAAAHAwAAAAAAAAAAAAAAAPC/" - ], - [ - 49, - 1, - "right_delete", - null, - "AQAAAAoDAAAAAAAACgMAAAAAAACNAAAAICAgICAgICAgICAgQ29tbWVudC5zZWxlY3QoKQogICAgICAgICAgICAud2hlcmUoQ29tbWVudC5wdWJsaXNoZWQpCiAgICAgICAgICAgIC5vcmRlcl9ieSgtQ29tbWVudC5wdWJsaXNoZWQpCiAgICAgICAgICAgIC5saW1pdCgxMCkKICAgICAgICAp", - "AQAAAAAAAAABAAAACgMAAAAAAACXAwAAAAAAAAAAAAAAAPC/" - ], - [ - 50, - 2, - "left_delete", - null, - "AgAAAAkDAAAAAAAACQMAAAAAAAABAAAACggDAAAAAAAACAMAAAAAAAABAAAAOg", - "AQAAAAAAAAABAAAACgMAAAAAAAAKAwAAAAAAAAAAAAAAAPC/" - ], - [ - 58, - 1, - "right_delete", - null, - "AQAAAIgAAAAAAAAAiAAAAAAAAAAqAAAAZnJvbSBzdGFjb3N5cy5tb2RlbC5jb21tZW50IGltcG9ydCBDb21tZW50", - "AQAAAAAAAAABAAAAsgAAAAAAAACIAAAAAAAAAAAAAAAAAAAA" - ], - [ - 59, - 1, - "left_delete", - null, - "AQAAAIcAAAAAAAAAhwAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "stacosys/model/comment.py", - "settings": - { - "buffer_size": 421, - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 12, - 1, - "insert", - { - "characters": "#" - }, - "AQAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYwAAAAAAAABjAAAAAAAAAAAAAAAAAAAA" - ], - [ - 17, - 1, - "left_delete", - null, - "AQAAAJ8AAAAAAAAAnwAAAAAAAAAJAAAAQmFzZU1vZGVs", - "AQAAAAAAAAABAAAAnwAAAAAAAACoAAAAAAAAAAAAAAAAAPC/" - ], - [ - 23, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAM8BAAAAAAAA0AEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzwEAAAAAAADPAQAAAAAAAAAAAAAAAPC/" - ], - [ - 24, - 1, - "paste", - null, - "AQAAANABAAAAAAAAoQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0AEAAAAAAADQAQAAAAAAAAAAAAAAAPC/" - ], - [ - 31, - 1, - "paste", - null, - "AQAAAJAAAAAAAAAAmgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAAAA" - ], - [ - 36, - 1, - "paste", - null, - "AgAAACsAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABqAAAAAAAAAGQAAABmcm9tIHBlZXdlZSBpbXBvcnQgQ2hhckZpZWxkLCBEYXRlVGltZUZpZWxkLCBUZXh0RmllbGQKCiNmcm9tIHN0YWNvc3lzLmRiLmRhdGFiYXNlIGltcG9ydCBCYXNlTW9kZWwK", - "AQAAAAAAAAABAAAAKwAAAAAAAACPAAAAAAAAAAAAAAAAAAAA" - ], - [ - 37, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAGoAAAAAAAAAawAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAagAAAAAAAABqAAAAAAAAAAAAAAAAAPC/" - ], - [ - 41, - 1, - "right_delete", - null, - "AQAAAIUAAAAAAAAAhQAAAAAAAAABAAAAKQ", - "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" - ], - [ - 43, - 1, - "right_delete", - null, - "AQAAAIQAAAAAAAAAhAAAAAAAAAABAAAAKA", - "AQAAAAAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAAPC/" - ], - [ - 47, - 1, - "insert", - { - "characters": "str" - }, - "BAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAAkQAAAAAAAACRAAAAAAAAAAsAAABDaGFyRmllbGQoKZEAAAAAAAAAkgAAAAAAAAAAAAAAkgAAAAAAAACTAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkAAAAAAAAACbAAAAAAAAAP///////+9/" - ], - [ - 54, - 1, - "insert", - { - "characters": "datetime" - }, - "CQAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACjAAAAAAAAAA8AAABEYXRlVGltZUZpZWxkKCmjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAApQAAAAAAAACmAAAAAAAAAAAAAACmAAAAAAAAAKcAAAAAAAAAAAAAAKcAAAAAAAAAqAAAAAAAAAAAAAAAqAAAAAAAAACpAAAAAAAAAAAAAACpAAAAAAAAAKoAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAogAAAAAAAACxAAAAAAAAAP///////+9/" - ], - [ - 62, - 1, - "paste", - null, - "AgAAALoAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADCAAAAAAAAACYAAABEYXRlVGltZUZpZWxkKG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQ", - "AQAAAAAAAAABAAAAugAAAAAAAADgAAAAAAAAAP///////+9/" - ], - [ - 66, - 1, - "paste", - null, - "AgAAANMAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADbAAAAAAAAACYAAABEYXRlVGltZUZpZWxkKG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQ", - "AQAAAAAAAAABAAAA0wAAAAAAAAD5AAAAAAAAAP///////+9/" - ], - [ - 70, - 1, - "insert", - { - "characters": "str" - }, - "BAAAAO4AAAAAAAAA7wAAAAAAAAAAAAAA7wAAAAAAAADvAAAAAAAAAAsAAABDaGFyRmllbGQoKe8AAAAAAAAA8AAAAAAAAAAAAAAA8AAAAAAAAADxAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA7gAAAAAAAAD5AAAAAAAAAP///////+9/" - ], - [ - 74, - 1, - "insert", - { - "characters": ":" - }, - "AgAAAKAAAAAAAAAAoQAAAAAAAAAAAAAAoQAAAAAAAAChAAAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAAoAAAAAAAAAChAAAAAAAAAAAAAAAAAPC/" - ], - [ - 78, - 1, - "insert", - { - "characters": ":" - }, - "AgAAAI4AAAAAAAAAjwAAAAAAAAAAAAAAjwAAAAAAAACPAAAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAAjwAAAAAAAACOAAAAAAAAAAAAAAAAAPC/" - ], - [ - 82, - 1, - "insert", - { - "characters": ":" - }, - "AgAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC5AAAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAAuAAAAAAAAAC5AAAAAAAAAAAAAAAAAPC/" - ], - [ - 85, - 1, - "insert", - { - "characters": ":" - }, - "AgAAANEAAAAAAAAA0gAAAAAAAAAAAAAA0gAAAAAAAADSAAAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAA0QAAAAAAAADSAAAAAAAAAAAAAAAAAPC/" - ], - [ - 89, - 1, - "insert", - { - "characters": ":" - }, - "AgAAAOwAAAAAAAAA7QAAAAAAAAAAAAAA7QAAAAAAAADtAAAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAA7AAAAAAAAADtAAAAAAAAAAAAAAAAAPC/" - ], - [ - 92, - 1, - "insert", - { - "characters": ":" - }, - "AgAAAAIBAAAAAAAAAwEAAAAAAAAAAAAAAwEAAAAAAAADAQAAAAAAAAEAAAA9", - "AQAAAAAAAAABAAAAAwEAAAAAAAACAQAAAAAAAAAAAAAAAPC/" - ], - [ - 95, - 1, - "insert", - { - "characters": "str" - }, - "BAAAAAQBAAAAAAAABQEAAAAAAAAAAAAABQEAAAAAAAAFAQAAAAAAABUAAABDaGFyRmllbGQoZGVmYXVsdD0iIikFAQAAAAAAAAYBAAAAAAAAAAAAAAYBAAAAAAAABwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAABAEAAAAAAAAZAQAAAAAAAP///////+9/" - ], - [ - 99, - 1, - "insert", - { - "characters": ":" - }, - "AgAAABwBAAAAAAAAHQEAAAAAAAAAAAAAHQEAAAAAAAAdAQAAAAAAABcAAAA9IENoYXJGaWVsZChkZWZhdWx0PSIiKQ", - "AQAAAAAAAAABAAAAHAEAAAAAAAAzAQAAAAAAAP///////+9/" - ], - [ - 100, - 1, - "insert", - { - "characters": " str" - }, - "BAAAAB0BAAAAAAAAHgEAAAAAAAAAAAAAHgEAAAAAAAAfAQAAAAAAAAAAAAAfAQAAAAAAACABAAAAAAAAAAAAACABAAAAAAAAIQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAHQEAAAAAAAAdAQAAAAAAAAAAAAAAAPC/" - ], - [ - 105, - 1, - "insert", - { - "characters": ":" - }, - "AgAAAC4BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvAQAAAAAAAA0AAAA9IFRleHRGaWVsZCgp", - "AQAAAAAAAAABAAAALgEAAAAAAAA7AQAAAAAAAP///////+9/" - ], - [ - 106, - 1, - "insert", - { - "characters": " str" - }, - "BAAAAC8BAAAAAAAAMAEAAAAAAAAAAAAAMAEAAAAAAAAxAQAAAAAAAAAAAAAxAQAAAAAAADIBAAAAAAAAAAAAADIBAAAAAAAAMwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALwEAAAAAAAAvAQAAAAAAAAAAAAAAAPC/" - ], - [ - 112, - 1, - "right_delete", - null, - "AQAAADUBAAAAAAAANQEAAAAAAADRAAAAQGRhdGFjbGFzcwpjbGFzcyBFbWFpbDoKICAgIGlkOiBpbnQKICAgIGVuY29kaW5nOiBzdHIKICAgIGRhdGU6IGRhdGV0aW1lCiAgICBmcm9tX2FkZHI6IHN0cgogICAgdG9fYWRkcjogc3RyCiAgICBzdWJqZWN0OiBzdHIKICAgIHBhcnRzOiBMaXN0W1BhcnRdCiAgICBhdHRhY2htZW50czogTGlzdFtBdHRhY2htZW50XQogICAgcGxhaW5fdGV4dF9jb250ZW50OiBzdHI", - "AQAAAAAAAAABAAAANQEAAAAAAAAGAgAAAAAAAAAAAAAAAAAA" - ], - [ - 113, - 1, - "left_delete", - null, - "AQAAADQBAAAAAAAANAEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAAPC/" - ], - [ - 120, - 1, - "insert", - { - "characters": "," - }, - "AQAAAEwAAAAAAAAATQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATAAAAAAAAABMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 121, - 1, - "insert", - { - "characters": " asd" - }, - "BAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATQAAAAAAAABNAAAAAAAAAAAAAAAAAPC/" - ], - [ - 122, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":3,\"sortText\":\"09.9999.asdict\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/model/comment.py\",\"position\":{\"line\":3,\"character\":38},\"symbolLabel\":\"asdict\",\"funcParensDisabled\":true,\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"asdict\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "asdict" - }, - "AgAAAE4AAAAAAAAATgAAAAAAAAADAAAAYXNkTgAAAAAAAABUAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUQAAAAAAAABRAAAAAAAAAAAAAAAAAPC/" - ], - [ - 128, - 2, - "left_delete", - null, - "AgAAAE0AAAAAAAAATQAAAAAAAAAHAAAAIGFzZGljdEwAAAAAAAAATAAAAAAAAAABAAAALA", - "AQAAAAAAAAABAAAATQAAAAAAAABUAAAAAAAAAAAAAAAAAPC/" - ], - [ - 136, - 1, - "insert", - { - "characters": "\nid:" - }, - "BQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACKAAAAAAAAAAAAAACKAAAAAAAAAIsAAAAAAAAAAAAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAjAAAAAAAAACNAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" - ], - [ - 137, - 1, - "insert", - { - "characters": " int" - }, - "BAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAPC/" - ], - [ - 138, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":7,\"sortText\":\"09.9999.int\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/model/comment.py\",\"position\":{\"line\":8,\"character\":11},\"symbolLabel\":\"int\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"int\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "int" - }, - "AgAAAI4AAAAAAAAAjgAAAAAAAAADAAAAaW50jgAAAAAAAACRAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" - ], - [ - 147, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAABAAQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwpmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQoKQGRhdGFjbGFzcwpjbGFzcyBDb21tZW50OgogICAgaWQ6IGludAogICAgdXJsIDogc3RyCiAgICBjcmVhdGVkIDogZGF0ZXRpbWUKICAgIG5vdGlmaWVkIDogZGF0ZXRpbWUKICAgIHB1Ymxpc2hlZCA6IGRhdGV0aW1lCiAgICBhdXRob3JfbmFtZSA6IHN0cgogICAgYXV0aG9yX3NpdGUgOiBzdHIKICAgIGF1dGhvcl9ncmF2YXRhciA6IHN0cgogICAgY29udGVudCA6IHN0cgoAAAAAAAAAADkBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQAEAAAAAAABAAQAAAAAAAAAAAAAAAPC/" - ], - [ - 151, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACUAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkgAAAAAAAACSAAAAAAAAAAAAAAAAAPC/" - ], - [ - 152, - 1, - "insert", - { - "characters": " 0" - }, - "AgAAAJQAAAAAAAAAlQAAAAAAAAAAAAAAlQAAAAAAAACWAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlAAAAAAAAACUAAAAAAAAAAAAAAAAAPC/" - ], - [ - 155, - 1, - "cut", - null, - "AQAAAIsAAAAAAAAAiwAAAAAAAAALAAAAaWQ6IGludCA9IDA", - "AQAAAAAAAAABAAAAlgAAAAAAAACLAAAAAAAAAAAAAAAAAEJA" - ], - [ - 157, - 1, - "left_delete", - null, - "AQAAAIYAAAAAAAAAhgAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAAAA" - ], - [ - 160, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAADABAAAAAAAAMQEAAAAAAAAAAAAAMQEAAAAAAAA1AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMAEAAAAAAAAwAQAAAAAAAAAAAAAAAPC/" - ], - [ - 161, - 1, - "paste", - null, - "AQAAADUBAAAAAAAAQAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAAPC/" - ], - [ - 163, - 1, - "cut", - null, - "AQAAADUBAAAAAAAANQEAAAAAAAALAAAAaWQ6IGludCA9IDA", - "AQAAAAAAAAABAAAAQAEAAAAAAAA1AQAAAAAAAAAAAAAAAEJA" - ], - [ - 165, - 1, - "left_delete", - null, - "AQAAADABAAAAAAAAMAEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAMQEAAAAAAAAxAQAAAAAAAAAAAAAAAAAA" - ], - [ - 167, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAIgAAAAAAAAAiQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAGJA" - ], - [ - 168, - 1, - "paste", - null, - "AQAAAIkAAAAAAAAAlAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiQAAAAAAAACJAAAAAAAAAAAAAAAAAPC/" - ], - [ - 170, + 422, 1, "insert", { "characters": "\t" }, - "AQAAAIkAAAAAAAAAjQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiQAAAAAAAACJAAAAAAAAAAAAAAAAAAAA" + "AQAAAE4BAAAAAAAAUgEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAATgEAAAAAAABOAQAAAAAAAAAAAAAAAPC/" ], [ - 173, + 424, + 1, + "right_delete", + null, + "AQAAAEoBAAAAAAAASgEAAAAAAAAIAAAAICAgICAgICA", + "AQAAAAAAAAABAAAAUgEAAAAAAABKAQAAAAAAAAAAAAAAAAAA" + ], + [ + 425, 2, "left_delete", null, - "AgAAAIcAAAAAAAAAhwAAAAAAAAABAAAAIIYAAAAAAAAAhgAAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" + "AgAAAEkBAAAAAAAASQEAAAAAAAABAAAACkgBAAAAAAAASAEAAAAAAAABAAAAXA", + "AQAAAAAAAAABAAAASgEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" ], [ - 175, + 434, 1, "insert", { - "characters": " " + "characters": "\\" }, - "AgAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAApQAAAAAAAAClAAAAAAAAAAAAAAAAgF9A" + "AQAAAEgBAAAAAAAASQEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASAEAAAAAAABIAQAAAAAAAAAAAAAAAPC/" ], [ - 176, - 1, - "left_delete", - null, - "AQAAAKYAAAAAAAAApgAAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAApwAAAAAAAACnAAAAAAAAAAAAAAAAAPC/" - ], - [ - 177, + 435, 1, "insert", { - "characters": "=" + "characters": "\n\t" }, - "AQAAAKYAAAAAAAAApwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAApgAAAAAAAACmAAAAAAAAAAAAAAAAAPC/" + "AwAAAEkBAAAAAAAASgEAAAAAAAAAAAAASgEAAAAAAABOAQAAAAAAAAAAAABOAQAAAAAAAFIBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" ], [ - 178, + 438, 1, "insert", { - "characters": " " + "characters": "\\" }, - "AQAAAKcAAAAAAAAAqAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAApwAAAAAAAACnAAAAAAAAAAAAAAAAAPC/" + "AQAAAIcBAAAAAAAAiAEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhwEAAAAAAACHAQAAAAAAAAAAAAAAAPC/" ], [ - 179, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAKgAAAAAAAAAqgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqAAAAAAAAACoAAAAAAAAAAAAAAAAAPC/" - ], - [ - 183, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAMAAAAAAAAAAwQAAAAAAAAAAAAAAwQAAAAAAAADCAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAPC/" - ], - [ - 184, - 1, - "insert", - { - "characters": " None" - }, - "BQAAAMIAAAAAAAAAwwAAAAAAAAAAAAAAwwAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMUAAAAAAAAAAAAAAMUAAAAAAAAAxgAAAAAAAAAAAAAAxgAAAAAAAADHAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwgAAAAAAAADCAAAAAAAAAAAAAAAAAPC/" - ], - [ - 186, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAN4AAAAAAAAA3wAAAAAAAAAAAAAA3wAAAAAAAADgAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3gAAAAAAAADeAAAAAAAAAAAAAAAAgG9A" - ], - [ - 187, - 1, - "insert", - { - "characters": " None" - }, - "BQAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADiAAAAAAAAAAAAAADiAAAAAAAAAOMAAAAAAAAAAAAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" - ], - [ - 189, - 1, - "trim_trailing_white_space", - null, - "AgAAAFEBAAAAAAAAUQEAAAAAAAAEAAAAICAgIJYAAAAAAAAAlgAAAAAAAAACAAAAICA", - "AQAAAAAAAAABAAAA5QAAAAAAAADlAAAAAAAAAAAAAAAAAPC/" - ], - [ - 201, - 1, - "insert", - { - "characters": "datetime." - }, - "CgAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADCAAAAAAAAAAQAAABOb25lwgAAAAAAAADDAAAAAAAAAAAAAADDAAAAAAAAAMQAAAAAAAAAAAAAAMQAAAAAAAAAxQAAAAAAAAAAAAAAxQAAAAAAAADGAAAAAAAAAAAAAADGAAAAAAAAAMcAAAAAAAAAAAAAAMcAAAAAAAAAyAAAAAAAAAAAAAAAyAAAAAAAAADJAAAAAAAAAAAAAADJAAAAAAAAAMoAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwQAAAAAAAADFAAAAAAAAAAAAAAAAAPC/" - ], - [ - 202, - 1, - "insert", - { - "characters": "de" - }, - "AgAAAMoAAAAAAAAAywAAAAAAAAAAAAAAywAAAAAAAADMAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" - ], - [ - 210, - 1, - "insert", - { - "characters": "ow" - }, - "AwAAAMoAAAAAAAAAywAAAAAAAAAAAAAAywAAAAAAAADLAAAAAAAAAAIAAABkZcsAAAAAAAAAzAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAygAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 211, - 2, - "left_delete", - null, - "AgAAAMsAAAAAAAAAywAAAAAAAAABAAAAd8oAAAAAAAAAygAAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 212, - 1, - "insert", - { - "characters": "now" - }, - "AwAAAMoAAAAAAAAAywAAAAAAAAAAAAAAywAAAAAAAADMAAAAAAAAAAAAAADMAAAAAAAAAM0AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" - ], - [ - 213, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAM0AAAAAAAAAzwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzQAAAAAAAADNAAAAAAAAAAAAAAAAAPC/" - ], - [ - 221, - 1, - "paste", - null, - "AgAAAOkAAAAAAAAA9wAAAAAAAAAAAAAA9wAAAAAAAAD3AAAAAAAAAAQAAABOb25l", - "AQAAAAAAAAABAAAA7QAAAAAAAADpAAAAAAAAAAAAAAAAAPC/" - ], - [ - 223, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADwEAAAAAAAAPAQAAAAAAAAAAAAAA8HVA" - ], - [ - 224, - 1, - "insert", - { - "characters": " " - }, - "AQAAABEBAAAAAAAAEgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" - ], - [ - 225, - 1, - "paste", - null, - "AQAAABIBAAAAAAAAIAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" - ], - [ - 227, - 1, - "insert", - { - "characters": " =" - }, - "AgAAADUBAAAAAAAANgEAAAAAAAAAAAAANgEAAAAAAAA3AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAgHZA" - ], - [ - 228, - 1, - "insert", - { - "characters": " " - }, - "AQAAADcBAAAAAAAAOAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" - ], - [ - 229, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAADgBAAAAAAAAOgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" - ], - [ - 231, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAE8BAAAAAAAAUAEAAAAAAAAAAAAAUAEAAAAAAABRAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATwEAAAAAAABPAQAAAAAAAAAAAAAAAGtA" - ], - [ - 232, - 1, - "insert", - { - "characters": " " - }, - "AQAAAFEBAAAAAAAAUgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUQEAAAAAAABRAQAAAAAAAAAAAAAAAPC/" - ], - [ - 233, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAFIBAAAAAAAAVAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUgEAAAAAAABSAQAAAAAAAAAAAAAAAPC/" - ], - [ - 237, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAG0BAAAAAAAAbgEAAAAAAAAAAAAAbgEAAAAAAABvAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbQEAAAAAAABtAQAAAAAAAAAAAAAAAPC/" - ], - [ - 238, - 1, - "insert", - { - "characters": " " - }, - "AQAAAG8BAAAAAAAAcAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbwEAAAAAAABvAQAAAAAAAAAAAAAAAPC/" - ], - [ - 239, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAHABAAAAAAAAcgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcAEAAAAAAABwAQAAAAAAAAAAAAAAAPC/" - ], - [ - 241, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAIMBAAAAAAAAhAEAAAAAAAAAAAAAhAEAAAAAAACFAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgwEAAAAAAACDAQAAAAAAAAAAAAAAgG9A" - ], - [ - 242, - 1, - "insert", - { - "characters": " " - }, - "AQAAAIUBAAAAAAAAhgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQEAAAAAAACFAQAAAAAAAAAAAAAAAPC/" - ], - [ - 243, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAIYBAAAAAAAAiAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhgEAAAAAAACGAQAAAAAAAAAAAAAAAPC/" - ], - [ - 249, - 1, - "insert", - { - "characters": "None" - }, - "BQAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADCAAAAAAAAAA4AAABkYXRldGltZS5ub3coKcIAAAAAAAAAwwAAAAAAAAAAAAAAwwAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMUAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwQAAAAAAAADPAAAAAAAAAAAAAAAAAPC/" - ], - [ - 258, - 1, - "insert", - { - "characters": "Optional(" - }, - "CQAAALYAAAAAAAAAtwAAAAAAAAAAAAAAtwAAAAAAAAC4AAAAAAAAAAAAAAC4AAAAAAAAALkAAAAAAAAAAAAAALkAAAAAAAAAugAAAAAAAAAAAAAAugAAAAAAAAC7AAAAAAAAAAAAAAC7AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAvQAAAAAAAAAAAAAAvQAAAAAAAAC+AAAAAAAAAAAAAAC+AAAAAAAAAL8AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtgAAAAAAAAC2AAAAAAAAAAAAAAAAAPC/" - ], - [ - 259, - 1, - "left_delete", - null, - "AQAAAL4AAAAAAAAAvgAAAAAAAAABAAAAKA", - "AQAAAAAAAAABAAAAvwAAAAAAAAC/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 260, - 1, - "insert", - { - "characters": "[" - }, - "AQAAAL4AAAAAAAAAvwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvgAAAAAAAAC+AAAAAAAAAAAAAAAAAPC/" - ], - [ - 262, - 1, - "insert", - { - "characters": "]" - }, - "AQAAAMcAAAAAAAAAyAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxwAAAAAAAADHAAAAAAAAAAAAAAAAAPC/" - ], - [ - 267, - 1, - "", - null, - "AQAAAGsAAAAAAAAAhgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 278, - 1, - "paste", - null, - "AgAAAPkAAAAAAAAACwEAAAAAAAAAAAAACwEAAAAAAAALAQAAAAAAAAgAAABkYXRldGltZQ", - "AQAAAAAAAAABAAAA+QAAAAAAAAABAQAAAAAAAAAAAAAAAPC/" - ], - [ - 283, - 1, - "paste", - null, - "AgAAACwBAAAAAAAAPgEAAAAAAAAAAAAAPgEAAAAAAAA+AQAAAAAAAAgAAABkYXRldGltZQ", - "AQAAAAAAAAABAAAALAEAAAAAAAA0AQAAAAAAAAAAAAAAAPC/" - ], - [ - 287, - 1, - "insert", - { - "characters": "None" - }, - "BQAAAA4BAAAAAAAADwEAAAAAAAAAAAAADwEAAAAAAAAPAQAAAAAAAA4AAABkYXRldGltZS5ub3coKQ8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAARAQAAAAAAABIBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADgEAAAAAAAAcAQAAAAAAAP///////+9/" - ], - [ - 291, - 1, - "insert", - { - "characters": "NOne" - }, - "BQAAADcBAAAAAAAAOAEAAAAAAAAAAAAAOAEAAAAAAAA4AQAAAAAAAA4AAABkYXRldGltZS5ub3coKTgBAAAAAAAAOQEAAAAAAAAAAAAAOQEAAAAAAAA6AQAAAAAAAAAAAAA6AQAAAAAAADsBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANwEAAAAAAABFAQAAAAAAAP///////+9/" - ], - [ - 294, - 1, - "insert", - { - "characters": "i" - }, - "AgAAADgBAAAAAAAAOQEAAAAAAAAAAAAAOQEAAAAAAAA5AQAAAAAAAAEAAABP", - "AQAAAAAAAAABAAAAOQEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" - ], - [ - 295, - 1, - "left_delete", - null, - "AQAAADgBAAAAAAAAOAEAAAAAAAABAAAAaQ", - "AQAAAAAAAAABAAAAOQEAAAAAAAA5AQAAAAAAAAAAAAAAAPC/" - ], - [ - 296, - 1, - "insert", - { - "characters": "o" - }, - "AQAAADgBAAAAAAAAOQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" - ], - [ - 300, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAACkAQAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwpmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQpmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKCkBkYXRhY2xhc3MKY2xhc3MgQ29tbWVudDoKICAgIGlkOiBpbnQgPSAwCiAgICB1cmw6IHN0ciA9ICIiCiAgICBjcmVhdGVkOiBPcHRpb25hbFtkYXRldGltZV0gPSBOb25lCiAgICBub3RpZmllZDogT3B0aW9uYWxbZGF0ZXRpbWVdID0gTm9uZQogICAgcHVibGlzaGVkOiBPcHRpb25hbFtkYXRldGltZV0gPSBOb25lCiAgICBhdXRob3JfbmFtZTogc3RyID0gIiIKICAgIGF1dGhvcl9zaXRlOiBzdHIgPSAiIgogICAgYXV0aG9yX2dyYXZhdGFyOiBzdHIgPSAiIgogICAgY29udGVudDogc3RyID0gIiIKAAAAAAAAAAClAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVQEAAAAAAABVAQAAAAAAAAAAAAAAYHVA" - ] - ] - }, - { - "file": "tests/test_api.py", - "settings": - { - "buffer_size": 1655, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 7, - 1, - "insert", - { - "characters": "configure" - }, - "CgAAAFkCAAAAAAAAWgIAAAAAAAAAAAAAWgIAAAAAAABaAgAAAAAAAAUAAABzZXR1cFoCAAAAAAAAWwIAAAAAAAAAAAAAWwIAAAAAAABcAgAAAAAAAAAAAABcAgAAAAAAAF0CAAAAAAAAAAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAAXgIAAAAAAABfAgAAAAAAAAAAAABfAgAAAAAAAGACAAAAAAAAAAAAAGACAAAAAAAAYQIAAAAAAAAAAAAAYQIAAAAAAABiAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAWQIAAAAAAABeAgAAAAAAAAAAAAAAAPC/" - ], - [ - 9, - 1, - "insert", - { - "characters": "sqlite://" - }, - "CQAAAGQCAAAAAAAAZQIAAAAAAAAAAAAAZQIAAAAAAABmAgAAAAAAAAAAAABmAgAAAAAAAGcCAAAAAAAAAAAAAGcCAAAAAAAAaAIAAAAAAAAAAAAAaAIAAAAAAABpAgAAAAAAAAAAAABpAgAAAAAAAGoCAAAAAAAAAAAAAGoCAAAAAAAAawIAAAAAAAAAAAAAawIAAAAAAABsAgAAAAAAAAAAAABsAgAAAAAAAG0CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAZAIAAAAAAABkAgAAAAAAAAAAAAAAAPC/" - ], - [ - 11, - 1, - "insert", - { - "characters": "memory" - }, - "BgAAAGsCAAAAAAAAbAIAAAAAAAAAAAAAbAIAAAAAAABtAgAAAAAAAAAAAABtAgAAAAAAAG4CAAAAAAAAAAAAAG4CAAAAAAAAbwIAAAAAAAAAAAAAbwIAAAAAAABwAgAAAAAAAAAAAABwAgAAAAAAAHECAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAawIAAAAAAABrAgAAAAAAAAAAAAAAAPC/" - ], - [ - 15, - 1, - "insert", - { - "characters": "dummy." - }, - "BwAAAHMCAAAAAAAAdAIAAAAAAAAAAAAAdAIAAAAAAAB0AgAAAAAAAAgAAAA6bWVtb3J5OnQCAAAAAAAAdQIAAAAAAAAAAAAAdQIAAAAAAAB2AgAAAAAAAAAAAAB2AgAAAAAAAHcCAAAAAAAAAAAAAHcCAAAAAAAAeAIAAAAAAAAAAAAAeAIAAAAAAAB5AgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcwIAAAAAAAB7AgAAAAAAAAAAAAAAAPC/" - ], - [ - 16, - 1, - "insert", - { - "characters": "db" - }, - "AgAAAHkCAAAAAAAAegIAAAAAAAAAAAAAegIAAAAAAAB7AgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAeQIAAAAAAAB5AgAAAAAAAAAAAAAAAPC/" - ], - [ - 19, - 1, - "insert", - { - "characters": "db" - }, - "AwAAAHMCAAAAAAAAdAIAAAAAAAAAAAAAdAIAAAAAAAB0AgAAAAAAAAUAAABkdW1teXQCAAAAAAAAdQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAeAIAAAAAAABzAgAAAAAAAAAAAAAAAPC/" - ], - [ - 22, - 1, - "insert", - { - "characters": "sqlite" - }, - "BwAAAHYCAAAAAAAAdwIAAAAAAAAAAAAAdwIAAAAAAAB3AgAAAAAAAAIAAABkYncCAAAAAAAAeAIAAAAAAAAAAAAAeAIAAAAAAAB5AgAAAAAAAAAAAAB5AgAAAAAAAHoCAAAAAAAAAAAAAHoCAAAAAAAAewIAAAAAAAAAAAAAewIAAAAAAAB8AgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdgIAAAAAAAB4AgAAAAAAAAAAAAAAAPC/" - ], - [ - 31, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAHECAAAAAAAAcgIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcQIAAAAAAABxAgAAAAAAAAAAAAAAAPC/" - ], - [ - 71, - 1, - "toggle_breakpoint", - null, - "AQAAAL0BAAAAAAAA9wEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzwEAAAAAAADPAQAAAAAAAAAAAAAAAPC/" - ], - [ - 74, - 1, - "toggle_breakpoint", - null, - "AQAAAL0BAAAAAAAAvQEAAAAAAAA6AAAAICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKSAgIyBicmVha3BvaW50IDU1ZGNmYmI4IC8vCg", - "AQAAAAAAAAABAAAAwQEAAAAAAADBAQAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "tests/test_db.py", - "settings": - { - "buffer_size": 1835, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 6, - 1, - "insert", - { - "characters": "configure" - }, - "CgAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACmAAAAAAAAAAUAAABzZXR1cKYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAArQAAAAAAAACuAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAApQAAAAAAAACqAAAAAAAAAAAAAAAAAPC/" - ], - [ - 11, - 1, - "insert", - { - "characters": "sqlite" - }, - "BgAAALAAAAAAAAAAsQAAAAAAAAAAAAAAsQAAAAAAAACyAAAAAAAAAAAAAACyAAAAAAAAALMAAAAAAAAAAAAAALMAAAAAAAAAtAAAAAAAAAAAAAAAtAAAAAAAAAC1AAAAAAAAAAAAAAC1AAAAAAAAALYAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAsAAAAAAAAACwAAAAAAAAAAAAAAAAAPC/" - ], - [ - 14, - 1, - "insert", - { - "characters": "//db." - }, - "BQAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMEAAAAAAAAAAAAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADDAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvgAAAAAAAAC+AAAAAAAAAAAAAAAAAPC/" - ], - [ - 15, - 1, - "insert", - { - "characters": "sqlite" - }, - "BgAAAMMAAAAAAAAAxAAAAAAAAAAAAAAAxAAAAAAAAADFAAAAAAAAAAAAAADFAAAAAAAAAMYAAAAAAAAAAAAAAMYAAAAAAAAAxwAAAAAAAAAAAAAAxwAAAAAAAADIAAAAAAAAAAAAAADIAAAAAAAAAMkAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwwAAAAAAAADDAAAAAAAAAAAAAAAAAPC/" - ], - [ - 17, - 1, - "trim_trailing_white_space", - null, - "AQAAAMsAAAAAAAAAywAAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAyQAAAAAAAADJAAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "tests/test_form.py", - "settings": - { - "buffer_size": 1125, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 6, - 1, - "insert", - { - "characters": "configure" - }, - "CgAAAAgBAAAAAAAACQEAAAAAAAAAAAAACQEAAAAAAAAJAQAAAAAAAAUAAABzZXR1cAkBAAAAAAAACgEAAAAAAAAAAAAACgEAAAAAAAALAQAAAAAAAAAAAAALAQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADQEAAAAAAAAAAAAADQEAAAAAAAAOAQAAAAAAAAAAAAAOAQAAAAAAAA8BAAAAAAAAAAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACAEAAAAAAAANAQAAAAAAAAAAAAAAAPC/" - ], - [ - 8, - 1, - "insert", - { - "characters": "q" - }, - "AQAAABMBAAAAAAAAFAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" - ], - [ - 9, - 1, - "left_delete", - null, - "AQAAABMBAAAAAAAAEwEAAAAAAAABAAAAcQ", - "AQAAAAAAAAABAAAAFAEAAAAAAAAUAQAAAAAAAAAAAAAAAPC/" - ], - [ - 10, - 1, - "insert", - { - "characters": "sqlite" - }, - "BgAAABMBAAAAAAAAFAEAAAAAAAAAAAAAFAEAAAAAAAAVAQAAAAAAAAAAAAAVAQAAAAAAABYBAAAAAAAAAAAAABYBAAAAAAAAFwEAAAAAAAAAAAAAFwEAAAAAAAAYAQAAAAAAAAAAAAAYAQAAAAAAABkBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" - ], - [ - 13, - 1, - "insert", - { - "characters": "//db.sqli" - }, - "CQAAACEBAAAAAAAAIgEAAAAAAAAAAAAAIgEAAAAAAAAjAQAAAAAAAAAAAAAjAQAAAAAAACQBAAAAAAAAAAAAACQBAAAAAAAAJQEAAAAAAAAAAAAAJQEAAAAAAAAmAQAAAAAAAAAAAAAmAQAAAAAAACcBAAAAAAAAAAAAACcBAAAAAAAAKAEAAAAAAAAAAAAAKAEAAAAAAAApAQAAAAAAAAAAAAApAQAAAAAAACoBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAIQEAAAAAAAAhAQAAAAAAAAAAAAAAAPC/" - ], - [ - 14, - 1, - "insert", - { - "characters": "te" - }, - "AgAAACoBAAAAAAAAKwEAAAAAAAAAAAAAKwEAAAAAAAAsAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKgEAAAAAAAAqAQAAAAAAAAAAAAAAAPC/" - ], - [ - 16, - 1, - "trim_trailing_white_space", - null, - "AQAAAC4BAAAAAAAALgEAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAALAEAAAAAAAAsAQAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "config.ini", - "settings": - { - "buffer_size": 500, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 3, - 1, - "paste", - null, - "AQAAAEYAAAAAAAAAXQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABGAAAAAAAAAEYAAAAAAAAAAAAAAAAA8L8" - ], - [ - 4, + 439, 1, "insert", { "characters": "\n" }, - "AQAAAF0AAAAAAAAAXgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABdAAAAAAAAAF0AAAAAAAAAAAAAAAAA8L8" + "AgAAAIgBAAAAAAAAiQEAAAAAAAAAAAAAiQEAAAAAAACRAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAiAEAAAAAAACIAQAAAAAAAAAAAAAAAPC/" ], [ - 4, - 1, - "right_delete", - null, - "AQAAACsAAAAAAAAAKwAAAAAAAAAaAAAAZGJfc3FsaXRlX2ZpbGUgPSBkYi5zcWxpdGU", - "AQAAAAAAAAABAAAARQAAAAAAAAArAAAAAAAAAAAAAAAAAAAA" - ], - [ - 5, - 1, - "left_delete", - null, - "AQAAACoAAAAAAAAAKgAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAKwAAAAAAAAArAAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "stacosys/service/configuration.py", - "settings": - { - "buffer_size": 2563, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 6, + 442, 1, "insert", { - "characters": "\nDB" + "characters": "\\" }, - "BAAAAHcAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAAAAAAB8AAAAAAAAAH0AAAAAAAAAAAAAAH0AAAAAAAAAfgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB3AAAAAAAAAHcAAAAAAAAAAAAAAAAA8L8" + "AQAAAL4BAAAAAAAAvwEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvgEAAAAAAAC+AQAAAAAAAAAAAAAAAPC/" ], [ - 7, + 443, 1, "insert", { - "characters": " =" + "characters": "\n" }, - "AgAAAH4AAAAAAAAAfwAAAAAAAAAAAAAAfwAAAAAAAACAAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB+AAAAAAAAAH4AAAAAAAAAAAAAAAAA8L8" + "AgAAAL8BAAAAAAAAwAEAAAAAAAAAAAAAwAEAAAAAAADIAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvwEAAAAAAAC/AQAAAAAAAAAAAAAAAPC/" ], [ - 8, + 446, + 1, + "insert", + { + "characters": "\\" + }, + "AQAAAPUBAAAAAAAA9gEAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA9QEAAAAAAAD1AQAAAAAAAAAAAAAAAPC/" + ], + [ + 447, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAPYBAAAAAAAA9wEAAAAAAAAAAAAA9wEAAAAAAAD/AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA9gEAAAAAAAD2AQAAAAAAAAAAAAAAAPC/" + ], + [ + 450, + 1, + "insert", + { + "characters": "\\" + }, + "AQAAACQCAAAAAAAAJQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJAIAAAAAAAAkAgAAAAAAAAAAAAAAAPC/" + ], + [ + 451, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAACUCAAAAAAAAJgIAAAAAAAAAAAAAJgIAAAAAAAAuAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJQIAAAAAAAAlAgAAAAAAAAAAAAAAAPC/" + ], + [ + 454, + 1, + "insert", + { + "characters": "\\" + }, + "AQAAAFMCAAAAAAAAVAIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAUwIAAAAAAABTAgAAAAAAAAAAAAAAAPC/" + ], + [ + 455, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAFQCAAAAAAAAVQIAAAAAAAAAAAAAVQIAAAAAAABdAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAVAIAAAAAAABUAgAAAAAAAAAAAAAAAPC/" + ], + [ + 458, + 1, + "insert", + { + "characters": "\\" + }, + "AQAAAIQCAAAAAAAAhQIAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhAIAAAAAAACEAgAAAAAAAAAAAAAAAPC/" + ], + [ + 459, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACOAgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhQIAAAAAAACFAgAAAAAAAAAAAAAAAPC/" + ], + [ + 493, + 1, + "insert", + { + "characters": "\nass" + }, + "BQAAALQEAAAAAAAAtQQAAAAAAAAAAAAAtQQAAAAAAAC5BAAAAAAAAAAAAAC5BAAAAAAAALoEAAAAAAAAAAAAALoEAAAAAAAAuwQAAAAAAAAAAAAAuwQAAAAAAAC8BAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAtAQAAAAAAAC0BAAAAAAAAAAAAAAAAPC/" + ], + [ + 494, + 1, + "insert", + { + "characters": "ert" + }, + "AwAAALwEAAAAAAAAvQQAAAAAAAAAAAAAvQQAAAAAAAC+BAAAAAAAAAAAAAC+BAAAAAAAAL8EAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvAQAAAAAAAC8BAAAAAAAAAAAAAAAAPC/" + ], + [ + 495, + 1, + "insert", + { + "characters": " 1" + }, + "AgAAAL8EAAAAAAAAwAQAAAAAAAAAAAAAwAQAAAAAAADBBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAvwQAAAAAAAC/BAAAAAAAAAAAAAAAAPC/" + ], + [ + 496, + 1, + "insert", + { + "characters": " ==" + }, + "AwAAAMEEAAAAAAAAwgQAAAAAAAAAAAAAwgQAAAAAAADDBAAAAAAAAAAAAADDBAAAAAAAAMQEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAwQQAAAAAAADBBAAAAAAAAAAAAAAAAPC/" + ], + [ + 497, 1, "insert", { "characters": " " }, - "AQAAAIAAAAAAAAAAgQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAA8L8" + "AQAAAMQEAAAAAAAAxQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxAQAAAAAAADEBAAAAAAAAAAAAAAAAPC/" ], [ - 9, + 498, + 1, + "paste", + null, + "AQAAAMUEAAAAAAAA4AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxQQAAAAAAADFBAAAAAAAAAAAAAAAAPC/" + ], + [ + 502, + 1, + "insert", + { + "characters": "dao." + }, + "BAAAAMUEAAAAAAAAxgQAAAAAAAAAAAAAxgQAAAAAAADHBAAAAAAAAAAAAADHBAAAAAAAAMgEAAAAAAAAAAAAAMgEAAAAAAAAyQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxQQAAAAAAADFBAAAAAAAAAAAAAAAAPC/" + ], + [ + 504, + 1, + "insert_snippet", + { + "contents": "($0)" + }, + "AQAAAOQEAAAAAAAA5gQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5AQAAAAAAADkBAAAAAAAAP///////+9/" + ], + [ + 505, 1, "insert_snippet", { "contents": "\"$0\"" }, - "AQAAAIEAAAAAAAAAgwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAAAAAAAAAIEAAAAAAAAAAAAAAAAA8L8" + "AQAAAOUEAAAAAAAA5wQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA5QQAAAAAAADlBAAAAAAAAAAAAAAAAPC/" ], [ - 10, + 509, + 2, + "left_delete", + null, + "AgAAAOYEAAAAAAAA5gQAAAAAAAABAAAAIuUEAAAAAAAA5QQAAAAAAAABAAAAIg", + "AQAAAAAAAAABAAAA5wQAAAAAAADnBAAAAAAAAAAAAAAAAPC/" + ], + [ + 514, 1, "insert", { - "characters": "main.db" + "characters": "len(" }, - "BwAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAiQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAAAAAAAAAIIAAAAAAAAAAAAAAAAA8L8" + "BAAAAMUEAAAAAAAAxgQAAAAAAAAAAAAAxgQAAAAAAADHBAAAAAAAAAAAAADHBAAAAAAAAMgEAAAAAAAAAAAAAMgEAAAAAAAAyQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAxQQAAAAAAADFBAAAAAAAAAAAAAAAAPC/" ], [ - 8, + 516, 1, - "right_delete", - null, - "AQAAAI8AAAAAAAAAjwAAAAAAAAAmAAAAREJfU1FMSVRFX0ZJTEUgPSAibWFpbi5kYl9zcWxpdGVfZmlsZSI", - "AQAAAAAAAAABAAAAtQAAAAAAAACPAAAAAAAAAAAAAAAAAEJA" + "insert", + { + "characters": ")" + }, + "AQAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA6gQAAAAAAADqBAAAAAAAAP///////+9/" ], [ - 10, + 523, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAACUGAAAAAAAAJgYAAAAAAAAAAAAAJgYAAAAAAAAqBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJQYAAAAAAAAlBgAAAAAAAAAAAAAAAPC/" + ], + [ + 524, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAACoGAAAAAAAAKwYAAAAAAAAAAAAAKwYAAAAAAAAvBgAAAAAAAAAAAAAmBgAAAAAAACYGAAAAAAAABAAAACAgICA", + "AQAAAAAAAAABAAAAKgYAAAAAAAAqBgAAAAAAAAAAAAAAAPC/" + ], + [ + 525, + 1, + "insert", + { + "characters": "#" + }, + "AQAAACsGAAAAAAAALAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKwYAAAAAAAArBgAAAAAAAAAAAAAAAPC/" + ], + [ + 526, + 1, + "insert", + { + "characters": " count" + }, + "BgAAACwGAAAAAAAALQYAAAAAAAAAAAAALQYAAAAAAAAuBgAAAAAAAAAAAAAuBgAAAAAAAC8GAAAAAAAAAAAAAC8GAAAAAAAAMAYAAAAAAAAAAAAAMAYAAAAAAAAxBgAAAAAAAAAAAAAxBgAAAAAAADIGAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALAYAAAAAAAAsBgAAAAAAAAAAAAAAAPC/" + ], + [ + 527, + 1, + "insert", + { + "characters": " published" + }, + "CgAAADIGAAAAAAAAMwYAAAAAAAAAAAAAMwYAAAAAAAA0BgAAAAAAAAAAAAA0BgAAAAAAADUGAAAAAAAAAAAAADUGAAAAAAAANgYAAAAAAAAAAAAANgYAAAAAAAA3BgAAAAAAAAAAAAA3BgAAAAAAADgGAAAAAAAAAAAAADgGAAAAAAAAOQYAAAAAAAAAAAAAOQYAAAAAAAA6BgAAAAAAAAAAAAA6BgAAAAAAADsGAAAAAAAAAAAAADsGAAAAAAAAPAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAMgYAAAAAAAAyBgAAAAAAAAAAAAAAAPC/" + ], + [ + 536, + 1, + "paste", + null, + "AQAAAKsGAAAAAAAA3QYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAYG5A" + ], + [ + 538, + 1, + "insert", + { + "characters": "\t" + }, + "AQAAAKsGAAAAAAAArwYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAAAAA" + ], + [ + 542, + 1, + "insert", + { + "characters": "3" + }, + "AgAAALYGAAAAAAAAtwYAAAAAAAAAAAAAtwYAAAAAAAC3BgAAAAAAAAEAAAAx", + "AQAAAAAAAAABAAAAtgYAAAAAAAC3BgAAAAAAAAAAAAAAAPC/" + ], + [ + 544, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAOEGAAAAAAAA4gYAAAAAAAAAAAAA4gYAAAAAAADmBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4QYAAAAAAADhBgAAAAAAAP///////+9/" + ], + [ + 549, + 1, + "insert", + { + "characters": "0" + }, + "AwAAALYGAAAAAAAAtwYAAAAAAAAAAAAAtwYAAAAAAAC3BgAAAAAAAAEAAAAz4gYAAAAAAADiBgAAAAAAAAQAAAAgICAg", + "AQAAAAAAAAABAAAAtgYAAAAAAAC3BgAAAAAAAAAAAAAAAPC/" + ], + [ + 554, + 1, + "cut", + null, + "AQAAAK8GAAAAAAAArwYAAAAAAAAyAAAAYXNzZXJ0IDAgPT0gbGVuKGRhby5maW5kX25vdF9wdWJsaXNoZWRfY29tbWVudHMoKSk", + "AQAAAAAAAAABAAAArwYAAAAAAADhBgAAAAAAAP///////+9/" + ], + [ + 556, 1, "left_delete", null, - "AQAAAIoAAAAAAAAAigAAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAAAA" + "AQAAAKoGAAAAAAAAqgYAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAAAAA" ], [ - 12, + 558, + 1, + "paste", + null, + "AQAAACYGAAAAAAAAWAYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJgYAAAAAAAAmBgAAAAAAAAAAAAAAYH5A" + ], + [ + 560, + 1, + "insert", + { + "characters": "\t" + }, + "AQAAACYGAAAAAAAAKgYAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAJgYAAAAAAAAmBgAAAAAAAAAAAAAAAAAA" + ], + [ + 562, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAFwGAAAAAAAAXQYAAAAAAAAAAAAAXQYAAAAAAABhBgAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAXAYAAAAAAABcBgAAAAAAAP///////+9/" + ], + [ + 564, 1, "trim_trailing_white_space", null, - "AQAAAIoAAAAAAAAAigAAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" + "AgAAAOUGAAAAAAAA5QYAAAAAAAAEAAAAICAgIF0GAAAAAAAAXQYAAAAAAAAEAAAAICAgIA", + "AQAAAAAAAAABAAAAYQYAAAAAAABhBgAAAAAAAAAAAAAAAPC/" + ], + [ + 571, + 2, + "right_delete", + null, + "AgAAAOkGAAAAAAAA6QYAAAAAAAAEAAAAdGVzdOkGAAAAAAAA6QYAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAA6QYAAAAAAADtBgAAAAAAAAAAAAAAAPC/" + ], + [ + 583, + 1, + "reindent", + null, + "AQAAANEDAAAAAAAA1QMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0QMAAAAAAADRAwAAAAAAAAAAAAAAAPC/" + ], + [ + 584, + 1, + "paste", + null, + "AQAAANUDAAAAAAAA6wMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1QMAAAAAAADVAwAAAAAAAAAAAAAAAPC/" + ], + [ + 597, + 1, + "insert", + { + "characters": "\nc1" + }, + "BAAAANADAAAAAAAA0QMAAAAAAAAAAAAA0QMAAAAAAADVAwAAAAAAAAAAAADVAwAAAAAAANYDAAAAAAAAAAAAANYDAAAAAAAA1wMAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA0AMAAAAAAADQAwAAAAAAAP///////+9/" + ], + [ + 598, + 1, + "insert", + { + "characters": ".id" + }, + "AwAAANcDAAAAAAAA2AMAAAAAAAAAAAAA2AMAAAAAAADZAwAAAAAAAAAAAADZAwAAAAAAANoDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA1wMAAAAAAADXAwAAAAAAAAAAAAAAAPC/" + ], + [ + 599, + 1, + "insert", + { + "characters": " =" + }, + "AgAAANoDAAAAAAAA2wMAAAAAAAAAAAAA2wMAAAAAAADcAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA2gMAAAAAAADaAwAAAAAAAAAAAAAAAPC/" + ], + [ + 600, + 1, + "insert", + { + "characters": " find" + }, + "BQAAANwDAAAAAAAA3QMAAAAAAAAAAAAA3QMAAAAAAADeAwAAAAAAAAAAAADeAwAAAAAAAN8DAAAAAAAAAAAAAN8DAAAAAAAA4AMAAAAAAAAAAAAA4AMAAAAAAADhAwAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA3AMAAAAAAADcAwAAAAAAAAAAAAAAAPC/" + ], + [ + 601, + 1, + "insert", + { + "characters": "_c1.id" + }, + "BgAAAOEDAAAAAAAA4gMAAAAAAAAAAAAA4gMAAAAAAADjAwAAAAAAAAAAAADjAwAAAAAAAOQDAAAAAAAAAAAAAOQDAAAAAAAA5QMAAAAAAAAAAAAA5QMAAAAAAADmAwAAAAAAAAAAAADmAwAAAAAAAOcDAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAA4QMAAAAAAADhAwAAAAAAAAAAAAAAAPC/" + ], + [ + 604, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAAIEAAAAAAAAAwQAAAAAAAAAAAAAAwQAAAAAAAAHBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAAgQAAAAAAAACBAAAAAAAAAAAAAAAAPC/" + ], + [ + 609, + 1, + "paste", + null, + "AQAAAAcEAAAAAAAALgQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAABwQAAAAAAAAHBAAAAAAAAAAAAAAAQGRA" + ], + [ + 613, + 1, + "insert", + { + "characters": "assre" + }, + "BgAAAAcEAAAAAAAACAQAAAAAAAAAAAAACAQAAAAAAAAIBAAAAAAAAAkAAABmaW5kX2MxID0IBAAAAAAAAAkEAAAAAAAAAAAAAAkEAAAAAAAACgQAAAAAAAAAAAAACgQAAAAAAAALBAAAAAAAAAAAAAALBAAAAAAAAAwEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAABwQAAAAAAAAQBAAAAAAAAAAAAAAAAPC/" + ], + [ + 614, + 1, + "left_delete", + null, + "AQAAAAsEAAAAAAAACwQAAAAAAAABAAAAZQ", + "AQAAAAAAAAABAAAADAQAAAAAAAAMBAAAAAAAAAAAAAAAAPC/" + ], + [ + 615, + 1, + "insert", + { + "characters": "e" + }, + "AQAAAAsEAAAAAAAADAQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACwQAAAAAAAALBAAAAAAAAAAAAAAAAPC/" + ], + [ + 616, + 2, + "left_delete", + null, + "AgAAAAsEAAAAAAAACwQAAAAAAAABAAAAZQoEAAAAAAAACgQAAAAAAAABAAAAcg", + "AQAAAAAAAAABAAAADAQAAAAAAAAMBAAAAAAAAAAAAAAAAPC/" + ], + [ + 617, + 1, + "insert", + { + "characters": "ert" + }, + "AwAAAAoEAAAAAAAACwQAAAAAAAAAAAAACwQAAAAAAAAMBAAAAAAAAAAAAAAMBAAAAAAAAA0EAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAACgQAAAAAAAAKBAAAAAAAAAAAAAAAAPC/" + ], + [ + 619, + 1, + "insert", + { + "characters": " is" + }, + "AwAAACsEAAAAAAAALAQAAAAAAAAAAAAALAQAAAAAAAAtBAAAAAAAAAAAAAAtBAAAAAAAAC4EAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAKwQAAAAAAAArBAAAAAAAAP///////+9/" + ], + [ + 620, + 1, + "insert", + { + "characters": " None" + }, + "BQAAAC4EAAAAAAAALwQAAAAAAAAAAAAALwQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADEEAAAAAAAAAAAAADEEAAAAAAAAMgQAAAAAAAAAAAAAMgQAAAAAAAAzBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALgQAAAAAAAAuBAAAAAAAAAAAAAAAAPC/" + ], + [ + 622, + 1, + "right_delete", + null, + "AQAAACwEAAAAAAAALAQAAAAAAAAHAAAAaXMgTm9uZQ", + "AQAAAAAAAAABAAAAMwQAAAAAAAAsBAAAAAAAAAAAAAAAAPC/" + ], + [ + 624, + 1, + "insert", + { + "characters": "not" + }, + "AwAAAA4EAAAAAAAADwQAAAAAAAAAAAAADwQAAAAAAAAQBAAAAAAAAAAAAAAQBAAAAAAAABEEAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAADgQAAAAAAAAOBAAAAAAAAAAAAAAAAPC/" + ], + [ + 625, + 1, + "insert", + { + "characters": " " + }, + "AQAAABEEAAAAAAAAEgQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAEQQAAAAAAAARBAAAAAAAAAAAAAAAAPC/" + ], + [ + 627, + 1, + "right_delete", + null, + "AQAAAA4EAAAAAAAADgQAAAAAAAAEAAAAbm90IA", + "AQAAAAAAAAABAAAAEgQAAAAAAAAOBAAAAAAAAAAAAAAAAPC/" + ], + [ + 629, + 1, + "insert", + { + "characters": " " + }, + "AQAAACwEAAAAAAAALQQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALAQAAAAAAAAsBAAAAAAAAP///////+9/" + ], + [ + 630, + 1, + "left_delete", + null, + "AQAAACwEAAAAAAAALAQAAAAAAAABAAAAIA", + "AQAAAAAAAAABAAAALQQAAAAAAAAtBAAAAAAAAAAAAAAAAPC/" + ], + [ + 631, + 1, + "insert", + { + "characters": "is" + }, + "AgAAACwEAAAAAAAALQQAAAAAAAAAAAAALQQAAAAAAAAuBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALAQAAAAAAAAsBAAAAAAAAAAAAAAAAPC/" + ], + [ + 632, + 1, + "insert", + { + "characters": " None" + }, + "BQAAAC4EAAAAAAAALwQAAAAAAAAAAAAALwQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADEEAAAAAAAAAAAAADEEAAAAAAAAMgQAAAAAAAAAAAAAMgQAAAAAAAAzBAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAALgQAAAAAAAAuBAAAAAAAAAAAAAAAAPC/" + ], + [ + 638, + 2, + "left_delete", + null, + "AgAAABwIAAAAAAAAHAgAAAAAAABcAAAAICAgIGRhby5kZWxldGVfY29tbWVudChjMSkKICAgIGFzc2VydCAwID09IGxlbihkYW8uZmluZF9wdWJsaXNoZWRfY29tbWVudHNfYnlfdXJsKCIvcG9zdDEiKSkbCAAAAAAAABsIAAAAAAAAAQAAAAo", + "AQAAAAAAAAABAAAAeAgAAAAAAAAcCAAAAAAAAAAAAAAAAPC/" + ], + [ + 641, + 1, + "left_delete", + null, + "AQAAABoIAAAAAAAAGggAAAAAAAABAAAACg", + "AQAAAAAAAAABAAAAGwgAAAAAAAAbCAAAAAAAAAAAAAAAAPC/" ] ] }, { - "file": "tests/test_config.py", + "contents": "Package Control Messages\n========================\n\npython-black\n------------\n\n Thanks for trying out the python-black package!\n ===============================================\n\n\n `python-black` is an unofficial `black` plugin developed for Sublime Text 4.\n\n The current version can format the currently active `.py` file before saving.\n\n The configuration file used is the same as the official `black`.\n\n **Sublime Text needs to be restarted after installing `python-black`!**", "settings": { - "buffer_size": 1113, + "buffer_size": 506, + "line_ending": "Unix", + "name": "Package Control Messages", + "read_only": true, + "scratch": true + }, + "undo_stack": + [ + [ + 1, + 1, + "insert", + { + "characters": "Package Control Messages\n========================\n\npython-black\n------------\n\n Thanks for trying out the python-black package!\n ===============================================\n\n\n `python-black` is an unofficial `black` plugin developed for Sublime Text 4.\n\n The current version can format the currently active `.py` file before saving.\n\n The configuration file used is the same as the official `black`.\n\n **Sublime Text needs to be restarted after installing `python-black`!**" + }, + "GgAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAAzAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAE0AAAAAAAAAAAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAyQAAAAAAAAAAAAAAyQAAAAAAAADKAAAAAAAAAAAAAADKAAAAAAAAAMsAAAAAAAAAAAAAAMsAAAAAAAAAzAAAAAAAAAAAAAAAzAAAAAAAAAAaAQAAAAAAAAAAAAAaAQAAAAAAABsBAAAAAAAAAAAAABsBAAAAAAAAHAEAAAAAAAAAAAAAHAEAAAAAAABrAQAAAAAAAAAAAABrAQAAAAAAAGwBAAAAAAAAAAAAAGwBAAAAAAAAbQEAAAAAAAAAAAAAbQEAAAAAAACvAQAAAAAAAAAAAACvAQAAAAAAALABAAAAAAAAAAAAALABAAAAAAAAsQEAAAAAAAAAAAAAsQEAAAAAAAD6AQAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/" + ] + ] + }, + { + "file": "Makefile", + "settings": + { + "buffer_size": 338, "encoding": "UTF-8", "line_ending": "Unix" }, "undo_stack": [ [ - 3, + 8, 1, "insert", { - "characters": "sqlite:/" + "characters": " tests/" }, - "CAAAALUAAAAAAAAAtgAAAAAAAAAAAAAAtgAAAAAAAAC3AAAAAAAAAAAAAAC3AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAC6AAAAAAAAALsAAAAAAAAAAAAAALsAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAAC9AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtQAAAAAAAAC1AAAAAAAAAAAAAAAAAPC/" + "BwAAAGEAAAAAAAAAYgAAAAAAAAAAAAAAYgAAAAAAAABjAAAAAAAAAAAAAABjAAAAAAAAAGQAAAAAAAAAAAAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAYQAAAAAAAABhAAAAAAAAAP///////+9/" ], [ - 4, + 10, 1, "insert", { - "characters": "/" + "characters": " tests/" }, - "AQAAAL0AAAAAAAAAvgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvQAAAAAAAAC9AAAAAAAAAAAAAAAAAPC/" - ], - [ - 12, - 1, - "right_delete", - null, - "AQAAAD4BAAAAAAAAPgEAAAAAAAAMAAAAX1NRTElURV9GSUxF", - "AQAAAAAAAAABAAAAPgEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" - ], - [ - 20, - 1, - "right_delete", - null, - "AQAAAOUBAAAAAAAA5QEAAAAAAAAMAAAAX1NRTElURV9GSUxF", - "AQAAAAAAAAABAAAA5QEAAAAAAADxAQAAAAAAAAAAAAAAAPC/" - ], - [ - 24, - 1, - "right_delete", - null, - "AQAAACsCAAAAAAAAKwIAAAAAAAAMAAAAX1NRTElURV9GSUxF", - "AQAAAAAAAAABAAAAKwIAAAAAAAA3AgAAAAAAAAAAAAAAAPC/" - ], - [ - 31, - 1, - "right_delete", - null, - "AQAAAGgDAAAAAAAAaAMAAAAAAAAMAAAAX1NRTElURV9GSUxF", - "AQAAAAAAAAABAAAAaAMAAAAAAAB0AwAAAAAAAAAAAAAAAPC/" + "BwAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAACGAAAAAAAAAIcAAAAAAAAAAAAAAIcAAAAAAAAAiAAAAAAAAAAAAAAAiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAA", + "AQAAAAAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAIINA" ] ] + }, + { + "file": "stacosys/db/dao.py", + "settings": + { + "buffer_size": 2026, + "line_ending": "Unix" + }, + "undo_stack": + [ + ] } ], "build_system": "", @@ -8316,6 +6145,10 @@ "last_filter": "", "selected_items": [ + [ + "insta", + "Package Control: Install Package" + ], [ "break", "Python Breakpoints: Toggle" @@ -8368,10 +6201,6 @@ "python", "Python Breakpoints: Toggle" ], - [ - "insta", - "Package Control: Install Package" - ], [ "docstr", "AutoDocstring: Current" @@ -8458,35 +6287,37 @@ ], "file_history": [ + "/home/yannic/work/stacosys/stacosys/db/dao.py", + "/home/yannic/work/stacosys/tests/test_db.py", + "/home/yannic/work/stacosys/stacosys/run.py", + "/home/yannic/work/stacosys/config-dev.ini", + "/home/yannic/work/stacosys/dbmigration/migrate_from_3.3_to_4.0.py", + "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", + "/home/yannic/work/stacosys/stacosys/model/comment.py", + "/home/yannic/work/stacosys/tests/test_api.py", + "/home/yannic/work/stacosys/tests/test_form.py", + "/home/yannic/work/stacosys/config.ini", + "/home/yannic/work/stacosys/stacosys/service/configuration.py", + "/home/yannic/work/stacosys/tests/test_config.py", "/home/yannic/work/stacosys/dbmigration/migrate_from_1.1_to_2.0.py", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/pydal/objects.py", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/markdown/extensions/def_list.py", "/home/yannic/work/stacosys/stacosys/db/database.py", "/home/yannic/work/stacosys/pyproject.toml", "/home/yannic/work/stacosys/tests/test_rssfeed.py", - "/home/yannic/work/stacosys/tests/test_db.py", - "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", "/home/yannic/work/stacosys/stacosys/service/mail.py", "/home/yannic/work/stacosys/stacosys/interface/form.py", "/home/yannic/work/stacosys/stacosys/interface/__init__.py", "/home/yannic/work/stacosys/stacosys/interface/api.py", - "/home/yannic/work/stacosys/stacosys/db/dao.py", - "/home/yannic/work/stacosys/stacosys/model/comment.py", - "/home/yannic/work/stacosys/stacosys/run.py", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/peewee.py", - "/home/yannic/work/stacosys/config-dev.ini", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/background.py", "/home/yannic/work/stacosys/tests/test_mail.py", "/home/yannic/work/stacosys/Makefile", "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/builtins.pyi", - "/home/yannic/work/stacosys/tests/test_config.py", "/home/yannic/work/stacosys/.venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi", "/usr/lib64/python3.11/smtplib.py", "/home/yannic/work/stacosys/stacosys/interface/web/admin.py", - "/home/yannic/work/stacosys/stacosys/service/configuration.py", - "/home/yannic/work/stacosys/config.ini", "/home/yannic/work/stacosys/comments.xml", - "/home/yannic/work/stacosys/tests/test_api.py", "/home/yannic/work/stacosys/stacosys/service/__init__.py", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/PyRSS2Gen.py", "/home/yannic/work/blog/README.md", @@ -8495,7 +6326,6 @@ "/home/yannic/work/stacosys/stacosys/core/__init__.py", "/home/yannic/work/stacosys/stacosys/core/configuration.py", "/home/yannic/work/stacosys/.pylintrc", - "/home/yannic/work/stacosys/tests/test_form.py", "/home/yannic/work/stacosys/stacosys/core/mailer.py", "/home/yannic/work/stacosys/stacosys/conf/config.py", "/home/yannic/work/stacosys/stacosys/core/rss.py", @@ -8524,6 +6354,8 @@ "case_sensitive": false, "find_history": [ + "find_not_published_comments", + "find_comment_by_id", "asdict", "def delete", "db_dal", @@ -8559,19 +6391,18 @@ { "buffer": 0, "file": "stacosys/db/__init__.py", - "selected": true, "semi_transient": false, "settings": { - "buffer_size": 672, + "buffer_size": 701, "regions": { }, "selection": [ [ - 195, - 195 + 148, + 148 ] ], "settings": @@ -8593,7 +6424,7 @@ } ], "lsp_active": true, - "lsp_hover_provider_count": 3, + "lsp_hover_provider_count": 5, "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/db/__init__.py", "show_definitions": false, "syntax": "Packages/Python/Python.sublime-syntax", @@ -8604,25 +6435,25 @@ "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 0, + "stack_index": 5, "stack_multiselect": false, "type": "text" }, { "buffer": 1, - "file": "stacosys/run.py", + "file": "tests/test_api.py", "semi_transient": false, "settings": { - "buffer_size": 2472, + "buffer_size": 1625, "regions": { }, "selection": [ [ - 120, - 120 + 699, + 699 ] ], "settings": @@ -8644,8 +6475,8 @@ } ], "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/run.py", + "lsp_hover_provider_count": 2, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_api.py", "show_definitions": false, "syntax": "Packages/Python/Python.sublime-syntax", "tab_size": 4, @@ -8655,34 +6486,55 @@ "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 6, + "stack_index": 4, "stack_multiselect": false, "type": "text" }, { "buffer": 2, - "file": "config-dev.ini", + "file": "tests/test_db.py", "semi_transient": false, "settings": { - "buffer_size": 657, + "buffer_size": 2740, "regions": { }, "selection": [ [ - 59, - 59 + 2075, + 2075 ] ], "settings": { - "lsp_uri": "file:///home/yannic/work/stacosys/config-dev.ini", - "syntax": "Packages/Text/Plain text.tmLanguage" + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".[", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "LSP-pyright" + } + ], + "lsp_active": true, + "lsp_hover_provider_count": 2, + "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_db.py", + "show_definitions": false, + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 0.0, + "translation.y": 399.0, "zoom_level": 1.0 }, "stack_index": 1, @@ -8691,60 +6543,74 @@ }, { "buffer": 3, - "file": "dbmigration/migrate_from_3.3_to_4.0.py", + "selected": true, "semi_transient": false, "settings": { - "buffer_size": 1022, + "buffer_size": 506, "regions": { }, "selection": [ [ - 369, - 369 + 506, + 506 ] ], "settings": { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/dbmigration/migrate_from_3.3_to_4.0.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true + "auto_indent": false, + "lsp_uri": "buffer://sublime/109", + "syntax": "Packages/Text/Plain text.tmLanguage", + "tab_width": 2, + "word_wrap": true }, "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 2, + "stack_index": 0, "stack_multiselect": false, "type": "text" }, { "buffer": 4, - "file": "stacosys/db/dao.py", + "file": "Makefile", "semi_transient": false, "settings": + { + "buffer_size": 338, + "regions": + { + }, + "selection": + [ + [ + 106, + 139 + ] + ], + "settings": + { + "lsp_uri": "file:///home/yannic/work/stacosys/Makefile", + "syntax": "Packages/Makefile/Makefile.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": false + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 3, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 5, + "file": "stacosys/db/dao.py", + "semi_transient": true, + "settings": { "buffer_size": 2026, "regions": @@ -8753,8 +6619,8 @@ "selection": [ [ - 80, - 80 + 724, + 751 ] ], "settings": @@ -8784,397 +6650,10 @@ "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 0.0, + "translation.y": 57.0, "zoom_level": 1.0 }, - "stack_index": 7, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 5, - "file": "stacosys/service/rssfeed.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1754, - "regions": - { - }, - "selection": - [ - [ - 1668, - 1631 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/rssfeed.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 456.0, - "zoom_level": 1.0 - }, - "stack_index": 8, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 6, - "file": "stacosys/model/comment.py", - "semi_transient": false, - "settings": - { - "buffer_size": 421, - "regions": - { - }, - "selection": - [ - [ - 421, - 421 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/model/comment.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 11, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 7, - "file": "tests/test_api.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1655, - "regions": - { - }, - "selection": - [ - [ - 935, - 935 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_api.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 9, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 8, - "file": "tests/test_db.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1835, - "regions": - { - }, - "selection": - [ - [ - 335, - 335 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_db.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 10, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 9, - "file": "tests/test_form.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1125, - "regions": - { - }, - "selection": - [ - [ - 300, - 300 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_form.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 12, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 10, - "file": "config.ini", - "semi_transient": false, - "settings": - { - "buffer_size": 500, - "regions": - { - }, - "selection": - [ - [ - 66, - 66 - ] - ], - "settings": - { - "lsp_uri": "file:///home/yannic/work/stacosys/config.ini", - "syntax": "Packages/Text/Plain text.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 5, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 11, - "file": "stacosys/service/configuration.py", - "semi_transient": false, - "settings": - { - "buffer_size": 2563, - "regions": - { - }, - "selection": - [ - [ - 138, - 138 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 3, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/configuration.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 4, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 12, - "file": "tests/test_config.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1113, - "regions": - { - }, - "selection": - [ - [ - 1113, - 1113 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_config.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 171.0, - "zoom_level": 1.0 - }, - "stack_index": 3, + "stack_index": 2, "stack_multiselect": false, "type": "text" } From 18d4225eecf0b7ccc6078a0da41c996108dded2e Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 2 Dec 2022 08:59:32 +0100 Subject: [PATCH 089/182] remove dead code --- stacosys/service/configuration.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/stacosys/service/configuration.py b/stacosys/service/configuration.py index d21dc87..986409e 100644 --- a/stacosys/service/configuration.py +++ b/stacosys/service/configuration.py @@ -33,11 +33,6 @@ class Config: _cfg = configparser.ConfigParser() - # def __new__(cls): - # if not hasattr(cls, "instance"): - # cls.instance = super(Config, cls).__new__(cls) - # return cls.instance - def load(self, config_pathname): self._cfg.read(config_pathname) From f37a8f797e3ab67949f326dc05829ee0f3caf207 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 2 Dec 2022 08:59:55 +0100 Subject: [PATCH 090/182] improve tests --- tests/test_api.py | 5 +-- tests/test_config.py | 21 +++++++++-- tests/test_db.py | 88 ++++++++++++++++++++++++++++++++++++++----- tests/test_form.py | 3 +- tests/test_mail.py | 10 +++-- tests/test_rssfeed.py | 3 +- 6 files changed, 107 insertions(+), 23 deletions(-) diff --git a/tests/test_api.py b/tests/test_api.py index 0d84a0c..6badcbd 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -6,9 +6,8 @@ import logging import pytest -from stacosys.db import database, dao -from stacosys.interface import api -from stacosys.interface import app +from stacosys.db import dao, database +from stacosys.interface import api, app def init_test_db(): diff --git a/tests/test_config.py b/tests/test_config.py index fe44ef2..ae173c2 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -6,29 +6,42 @@ import pytest from stacosys.service import config from stacosys.service.configuration import ConfigParameter -EXPECTED_DB_SQLITE_FILE = "sqlite://db.sqlite" +EXPECTED_DB = "sqlite://db.sqlite" EXPECTED_HTTP_PORT = 8080 EXPECTED_LANG = "fr" @pytest.fixture def init_config(): - config.put(ConfigParameter.DB, EXPECTED_DB_SQLITE_FILE) - config.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) + config.put(ConfigParameter.DB, EXPECTED_DB) + config.put(ConfigParameter.HTTP_PORT, EXPECTED_HTTP_PORT) + + +def test_split_key(): + section, param = config._split_key(ConfigParameter.HTTP_PORT) + assert section == "http" and param == "port" + def test_exists(init_config): assert config.exists(ConfigParameter.DB) + def test_get(init_config): - assert config.get(ConfigParameter.DB) == EXPECTED_DB_SQLITE_FILE + assert config.get(ConfigParameter.DB) == EXPECTED_DB assert config.get(ConfigParameter.HTTP_HOST) == "" assert config.get(ConfigParameter.HTTP_PORT) == str(EXPECTED_HTTP_PORT) assert config.get_int(ConfigParameter.HTTP_PORT) == EXPECTED_HTTP_PORT with pytest.raises(AssertionError): config.get_bool(ConfigParameter.DB) + def test_put(init_config): assert not config.exists(ConfigParameter.LANG) config.put(ConfigParameter.LANG, EXPECTED_LANG) assert config.exists(ConfigParameter.LANG) assert config.get(ConfigParameter.LANG) == EXPECTED_LANG + + +def test_check(init_config): + success, error = config.check() + assert not success and error diff --git a/tests/test_db.py b/tests/test_db.py index d53133c..ebacd80 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -1,22 +1,48 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- +import time import pytest -from stacosys.db import dao -from stacosys.db import database +from stacosys.db import dao, database +from stacosys.model.comment import Comment + @pytest.fixture def setup_db(): database.configure("sqlite:memory://db.sqlite") -def test_dao_published(setup_db): +def equals_comment(comment: Comment, other): + return ( + comment.id == other.id + and comment.author_gravatar == other.author_gravatar + and comment.author_name == other.author_name + and comment.author_site == other.author_site + and comment.content == other.content + and comment.created == other.created + and comment.notified == other.notified + and comment.published == other.published + ) - # test count published + +def test_find_comment_by_id(setup_db): + assert dao.find_comment_by_id(1) is None + c1 = dao.create_comment("/post1", "Yax", "", "", "Comment 1") + assert c1.id is not None + find_c1 = dao.find_comment_by_id(c1.id) + assert find_c1 + assert equals_comment(c1, find_c1) + c1.id = find_c1.id + dao.delete_comment(c1) + assert dao.find_comment_by_id(c1.id) is None + + +def test_dao_published(setup_db): assert 0 == dao.count_published_comments("") c1 = dao.create_comment("/post1", "Yax", "", "", "Comment 1") assert 0 == dao.count_published_comments("") + assert 1 == len(dao.find_not_published_comments()) dao.publish_comment(c1) assert 1 == dao.count_published_comments("") c2 = dao.create_comment("/post2", "Yax", "", "", "Comment 2") @@ -24,20 +50,19 @@ def test_dao_published(setup_db): assert 2 == dao.count_published_comments("") c3 = dao.create_comment("/post2", "Yax", "", "", "Comment 3") dao.publish_comment(c3) + assert 0 == len(dao.find_not_published_comments()) + + # count published assert 1 == dao.count_published_comments("/post1") assert 2 == dao.count_published_comments("/post2") - # test find published + # find published assert 0 == len(dao.find_published_comments_by_url("/")) assert 1 == len(dao.find_published_comments_by_url("/post1")) assert 2 == len(dao.find_published_comments_by_url("/post2")) - dao.delete_comment(c1) - assert 0 == len(dao.find_published_comments_by_url("/post1")) def test_dao_notified(setup_db): - - # test count notified assert 0 == len(dao.find_not_notified_comments()) c1 = dao.create_comment("/post1", "Yax", "", "", "Comment 1") assert 1 == len(dao.find_not_notified_comments()) @@ -51,3 +76,48 @@ def test_dao_notified(setup_db): dao.notify_comment(c3) assert 0 == len(dao.find_not_notified_comments()) + +def create_comment(url, author_name, content): + return dao.create_comment(url, author_name, "", "", content) + + +def test_find_recent_published_comments(setup_db): + + comments = [] + comments.append(create_comment("/post", "Adam", "Comment 1")) + comments.append(create_comment("/post", "Arf", "Comment 2")) + comments.append(create_comment("/post", "Arwin", "Comment 3")) + comments.append(create_comment("/post", "Bill", "Comment 4")) + comments.append(create_comment("/post", "Bo", "Comment 5")) + comments.append(create_comment("/post", "Charles", "Comment 6")) + comments.append(create_comment("/post", "Dan", "Comment 7")) + comments.append(create_comment("/post", "Dwayne", "Comment 8")) + comments.append(create_comment("/post", "Erl", "Comment 9")) + comments.append(create_comment("/post", "Jay", "Comment 10")) + comments.append(create_comment("/post", "Kenny", "Comment 11")) + comments.append(create_comment("/post", "Lord", "Comment 12")) + + rows = dao.find_recent_published_comments() + assert len(rows) == 0 + + # publish every second + for comment in comments: + dao.publish_comment(comment) + time.sleep(1) + + rows = dao.find_recent_published_comments() + assert len(rows) == 10 + + authors = [row.author_name for row in rows] + assert authors == [ + "Lord", + "Kenny", + "Jay", + "Erl", + "Dwayne", + "Dan", + "Charles", + "Bo", + "Bill", + "Arwin", + ] diff --git a/tests/test_form.py b/tests/test_form.py index 1ddd4ae..9244483 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -6,8 +6,7 @@ import logging import pytest from stacosys.db import database -from stacosys.interface import app -from stacosys.interface import form +from stacosys.interface import app, form @pytest.fixture diff --git a/tests/test_mail.py b/tests/test_mail.py index 192c3cc..9f9597f 100644 --- a/tests/test_mail.py +++ b/tests/test_mail.py @@ -2,10 +2,12 @@ # -*- coding: UTF-8 -*- import pytest + from stacosys.service import mailer + def test_configure_and_check(): - mailer.configure_smtp("localhost", 2525, "admin", "admin") - mailer.configure_destination("admin@mydomain.com") - with pytest.raises(ConnectionRefusedError): - mailer.check() \ No newline at end of file + mailer.configure_smtp("localhost", 2525, "admin", "admin") + mailer.configure_destination("admin@mydomain.com") + with pytest.raises(ConnectionRefusedError): + mailer.check() diff --git a/tests/test_rssfeed.py b/tests/test_rssfeed.py index 713eead..021fc1e 100644 --- a/tests/test_rssfeed.py +++ b/tests/test_rssfeed.py @@ -3,5 +3,6 @@ from stacosys.service import rss + def test_configure(): - rss.configure("comments.xml", "blog", "http", "blog.mydomain.com") + rss.configure("comments.xml", "blog", "http", "blog.mydomain.com") From 60f2d580765db30d130b4569edb9a30b65ed8232 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 3 Dec 2022 19:02:24 +0100 Subject: [PATCH 091/182] finalize 3.3 release --- Makefile | 2 +- stacosys.sublime-workspace | 6333 +---------------------------------- stacosys/service/rssfeed.py | 2 - tests/test_db.py | 1 + 4 files changed, 44 insertions(+), 6294 deletions(-) diff --git a/Makefile b/Makefile index 6c11464..e7377fc 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ test: poetry run coverage report typehint: - poetry run mypy --ignore-missing-imports stacosys/ + poetry run mypy --ignore-missing-imports stacosys/ tests/ lint: poetry run pylint stacosys/ diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace index 3bf70a7..d1be777 100644 --- a/stacosys.sublime-workspace +++ b/stacosys.sublime-workspace @@ -3,6 +3,18 @@ { "selected_items": [ + [ + "init", + "init_config" + ], + [ + "author", + "author_name=" + ], + [ + "autho", + "author_name" + ], [ "au", "author_gravatar=" @@ -68,6070 +80,12 @@ "buffers": [ { - "file": "stacosys/db/__init__.py", + "file": "stacosys/service/rssfeed.py", "settings": { - "buffer_size": 701, - "encoding": "UTF-8", + "buffer_size": 1754, "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 1, - 1, - "paste", - null, - "AQAAAAAAAAAAAAAALQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/" - ], - [ - 3, - 1, - "insert", - { - "characters": "\n\nd" - }, - "AwAAAC0AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAADAAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAAPC/" - ], - [ - 4, - 1, - "insert", - { - "characters": "b" - }, - "AQAAADAAAAAAAAAAMQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAPC/" - ], - [ - 5, - 1, - "insert", - { - "characters": " =" - }, - "AgAAADEAAAAAAAAAMgAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMQAAAAAAAAAxAAAAAAAAAAAAAAAAAPC/" - ], - [ - 6, - 1, - "insert", - { - "characters": " None" - }, - "BQAAADMAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADYAAAAAAAAAAAAAADYAAAAAAAAANwAAAAAAAAAAAAAANwAAAAAAAAA4AAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMwAAAAAAAAAzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 11, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAC4AAAAAAAAALwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAAPC/" - ], - [ - 12, - 1, - "paste", - null, - "AQAAAC8AAAAAAAAASwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAALwAAAAAAAAAvAAAAAAAAAAAAAAAAAPC/" - ], - [ - 13, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAEsAAAAAAAAATAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASwAAAAAAAABLAAAAAAAAAAAAAAAAAPC/" - ], - [ - 15, - 1, - "insert", - { - "characters": "\n\n" - }, - "AgAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAVgAAAAAAAABWAAAAAAAAAAAAAAAAAAAA" - ], - [ - 16, - 1, - "paste", - null, - "AQAAAFgAAAAAAAAA6wAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWAAAAAAAAABYAAAAAAAAAAAAAAAAAPC/" - ], - [ - 21, - 1, - "insert", - { - "characters": "i" - }, - "AgAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABoAAAAAAAAAAEAAABs", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaAAAAAAAAABnAAAAAAAAAAAAAAAAAPC/" - ], - [ - 29, - 1, - "insert", - { - "characters": "db" - }, - "AwAAAG8AAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAA8AAABkYi5pbml0KGRiX3VybClwAAAAAAAAAHEAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbwAAAAAAAAB+AAAAAAAAAAAAAAAAAPC/" - ], - [ - 30, - 1, - "insert", - { - "characters": " " - }, - "AgAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcQAAAAAAAABxAAAAAAAAAAAAAAAAAPC/" - ], - [ - 31, - 1, - "left_delete", - null, - "AQAAAHIAAAAAAAAAcgAAAAAAAAABAAAAIA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 32, - 1, - "insert", - { - "characters": "=" - }, - "AQAAAHIAAAAAAAAAcwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcgAAAAAAAAByAAAAAAAAAAAAAAAAAPC/" - ], - [ - 33, - 1, - "insert", - { - "characters": " " - }, - "AQAAAHMAAAAAAAAAdAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcwAAAAAAAABzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 35, - 1, - "", - null, - "AQAAAHQAAAAAAAAAjgAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdAAAAAAAAAB0AAAAAAAAAAAAAAAAAPC/" - ], - [ - 39, - 1, - "insert", - { - "characters": "db_" - }, - "BAAAAHgAAAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAAAB5AAAAAAAAABUAAAAnc3FsaXRlOi8vc3RvcmFnZS5kYid5AAAAAAAAAHoAAAAAAAAAAAAAAHoAAAAAAAAAewAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAjQAAAAAAAAB4AAAAAAAAAAAAAAAAAPC/" - ], - [ - 42, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"sortText\":\"09.9999.db_uri\",\"kind\":6,\"data\":{\"position\":{\"line\":8,\"character\":16},\"symbolLabel\":\"db_uri\",\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_uri\"},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "db_uri" - }, - "AgAAAHgAAAAAAAAAeAAAAAAAAAADAAAAZGJfeAAAAAAAAAB+AAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" - ], - [ - 46, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACEAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 48, - 1, - "trim_trailing_white_space", - null, - "AQAAAIAAAAAAAAAAgAAAAAAAAAAEAAAAICAgIA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAAPC/" - ], - [ - 55, - 1, - "reindent", - null, - "AQAAAIAAAAAAAAAAhAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" - ], - [ - 56, - 1, - "insert", - { - "characters": "db." - }, - "AwAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAACGAAAAAAAAAIcAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAAPC/" - ], - [ - 57, - 1, - "insert", - { - "characters": "defi" - }, - "BAAAAIcAAAAAAAAAiAAAAAAAAAAAAAAAiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" - ], - [ - 58, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"sortText\":\"09.9999.define_table\",\"kind\":2,\"data\":{\"position\":{\"line\":9,\"character\":11},\"symbolLabel\":\"define_table\",\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"define_table\"},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "define_table" - }, - "AgAAAIcAAAAAAAAAhwAAAAAAAAAEAAAAZGVmaYcAAAAAAAAAkwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAPC/" - ], - [ - 59, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAJMAAAAAAAAAlQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAkwAAAAAAAACTAAAAAAAAAAAAAAAAAPC/" - ], - [ - 60, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAJQAAAAAAAAAlgAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAlAAAAAAAAACUAAAAAAAAAAAAAAAAAPC/" - ], - [ - 61, - 1, - "insert", - { - "characters": "comment" - }, - "BwAAAJUAAAAAAAAAlgAAAAAAAAAAAAAAlgAAAAAAAACXAAAAAAAAAAAAAACXAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAmQAAAAAAAAAAAAAAmQAAAAAAAACaAAAAAAAAAAAAAACaAAAAAAAAAJsAAAAAAAAAAAAAAJsAAAAAAAAAnAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAlQAAAAAAAACVAAAAAAAAAAAAAAAAAPC/" - ], - [ - 67, - 1, - "left_delete", - null, - "AQAAAJ8AAAAAAAAAnwAAAAAAAABsAAAAICAgIGRiLmNvbm5lY3QoKQoKICAgIGZyb20gc3RhY29zeXMubW9kZWwuY29tbWVudCBpbXBvcnQgQ29tbWVudAoKICAgIGRiLmNyZWF0ZV90YWJsZXMoW0NvbW1lbnRdLCBzYWZlPVRydWUp", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwEAAAAAAACfAAAAAAAAAAAAAAAAAPC/" - ], - [ - 70, - 1, - "insert", - { - "characters": ";" - }, - "AQAAAJ0AAAAAAAAAngAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnQAAAAAAAACdAAAAAAAAAAAAAAAAAPC/" - ], - [ - 71, - 1, - "left_delete", - null, - "AQAAAJ0AAAAAAAAAnQAAAAAAAAABAAAAOw", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAngAAAAAAAACeAAAAAAAAAAAAAAAAAPC/" - ], - [ - 72, - 1, - "insert", - { - "characters": "," - }, - "AQAAAJ0AAAAAAAAAngAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnQAAAAAAAACdAAAAAAAAAAAAAAAAAPC/" - ], - [ - 73, - 1, - "insert", - { - "characters": " " - }, - "AQAAAJ4AAAAAAAAAnwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAngAAAAAAAACeAAAAAAAAAAAAAAAAAPC/" - ], - [ - 74, - 1, - "insert", - { - "characters": "Field" - }, - "BQAAAJ8AAAAAAAAAoAAAAAAAAAAAAAAAoAAAAAAAAAChAAAAAAAAAAAAAAChAAAAAAAAAKIAAAAAAAAAAAAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACkAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnwAAAAAAAACfAAAAAAAAAAAAAAAAAPC/" - ], - [ - 75, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAKQAAAAAAAAApgAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApAAAAAAAAACkAAAAAAAAAAAAAAAAAPC/" - ], - [ - 76, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAKUAAAAAAAAApwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApQAAAAAAAAClAAAAAAAAAAAAAAAAAPC/" - ], - [ - 77, - 1, - "paste", - null, - "AQAAAKYAAAAAAAAAqQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAApgAAAAAAAACmAAAAAAAAAAAAAAAAAPC/" - ], - [ - 81, - 1, - "insert", - { - "characters": "," - }, - "AQAAAKsAAAAAAAAArAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAqwAAAAAAAACrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 82, - 1, - "insert", - { - "characters": " F" - }, - "AgAAAKwAAAAAAAAArQAAAAAAAAAAAAAArQAAAAAAAACuAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArAAAAAAAAACsAAAAAAAAAAAAAAAAAPC/" - ], - [ - 83, - 1, - "insert", - { - "characters": "ield" - }, - "BAAAAK4AAAAAAAAArwAAAAAAAAAAAAAArwAAAAAAAACwAAAAAAAAAAAAAACwAAAAAAAAALEAAAAAAAAAAAAAALEAAAAAAAAAsgAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAArgAAAAAAAACuAAAAAAAAAAAAAAAAAPC/" - ], - [ - 84, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAALIAAAAAAAAAtAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsgAAAAAAAACyAAAAAAAAAAAAAAAAAPC/" - ], - [ - 85, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAALMAAAAAAAAAtQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAswAAAAAAAACzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 86, - 1, - "paste", - null, - "AQAAALQAAAAAAAAAuwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAAPC/" - ], - [ - 88, - 1, - "insert", - { - "characters": "," - }, - "AQAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvAAAAAAAAAC8AAAAAAAAAAAAAAAAAPC/" - ], - [ - 89, - 1, - "insert", - { - "characters": " type=" - }, - "BgAAAL0AAAAAAAAAvgAAAAAAAAAAAAAAvgAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwQAAAAAAAAAAAAAAwQAAAAAAAADCAAAAAAAAAAAAAADCAAAAAAAAAMMAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvQAAAAAAAAC9AAAAAAAAAAAAAAAAAPC/" - ], - [ - 90, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAMMAAAAAAAAAxQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwwAAAAAAAADDAAAAAAAAAAAAAAAAAPC/" - ], - [ - 91, - 1, - "insert", - { - "characters": "date" - }, - "BAAAAMQAAAAAAAAAxQAAAAAAAAAAAAAAxQAAAAAAAADGAAAAAAAAAAAAAADGAAAAAAAAAMcAAAAAAAAAAAAAAMcAAAAAAAAAyAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAxAAAAAAAAADEAAAAAAAAAAAAAAAAAPC/" - ], - [ - 95, - 1, - "insert", - { - "characters": ";" - }, - "AQAAAMoAAAAAAAAAywAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" - ], - [ - 96, - 1, - "insert", - { - "characters": " " - }, - "AQAAAMsAAAAAAAAAzAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAywAAAAAAAADLAAAAAAAAAAAAAAAAAPC/" - ], - [ - 97, - 2, - "left_delete", - null, - "AgAAAMsAAAAAAAAAywAAAAAAAAABAAAAIMoAAAAAAAAAygAAAAAAAAABAAAAOw", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 98, - 1, - "insert", - { - "characters": "," - }, - "AQAAAMoAAAAAAAAAywAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAygAAAAAAAADKAAAAAAAAAAAAAAAAAPC/" - ], - [ - 99, - 1, - "insert", - { - "characters": " " - }, - "AQAAAMsAAAAAAAAAzAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAywAAAAAAAADLAAAAAAAAAAAAAAAAAPC/" - ], - [ - 104, - 1, - "paste", - null, - "AQAAAMwAAAAAAAAA6QAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 110, - 1, - "paste", - null, - "AgAAANMAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADbAAAAAAAAAAcAAABjcmVhdGVk", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0wAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" - ], - [ - 114, - 1, - "insert", - { - "characters": "," - }, - "AQAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6QAAAAAAAADpAAAAAAAAAAAAAAAAAPC/" - ], - [ - 115, - 1, - "insert", - { - "characters": " de" - }, - "AwAAAOoAAAAAAAAA6wAAAAAAAAAAAAAA6wAAAAAAAADsAAAAAAAAAAAAAADsAAAAAAAAAO0AAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6gAAAAAAAADqAAAAAAAAAAAAAAAAAPC/" - ], - [ - 116, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"sortText\":\"04.9999.default\",\"filterText\":\"default\",\"kind\":6,\"data\":{\"position\":{\"line\":9,\"character\":109},\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"default=\"},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "default=" - }, - "AgAAAOsAAAAAAAAA6wAAAAAAAAACAAAAZGXrAAAAAAAAAPMAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA7QAAAAAAAADtAAAAAAAAAAAAAAAAAPC/" - ], - [ - 117, - 1, - "insert", - { - "characters": "None" - }, - "BAAAAPMAAAAAAAAA9AAAAAAAAAAAAAAA9AAAAAAAAAD1AAAAAAAAAAAAAAD1AAAAAAAAAPYAAAAAAAAAAAAAAPYAAAAAAAAA9wAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8wAAAAAAAADzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 127, - 1, - "", - null, - "AgAAAPMAAAAAAAAA+gAAAAAAAAAAAAAA+gAAAAAAAAD6AAAAAAAAAAQAAABOb25l", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8wAAAAAAAAD3AAAAAAAAAAAAAAAAAPC/" - ], - [ - 133, - 2, - "left_delete", - null, - "AgAAAOoAAAAAAAAA6gAAAAAAAAARAAAAIGRlZmF1bHQ9REVGQVVMVCnpAAAAAAAAAOkAAAAAAAAAAQAAACw", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6gAAAAAAAAD7AAAAAAAAAAAAAAAAAPC/" - ], - [ - 135, - 1, - "insert", - { - "characters": "," - }, - "AQAAAOoAAAAAAAAA6wAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6gAAAAAAAADqAAAAAAAAAAAAAAAAAPC/" - ], - [ - 136, - 1, - "insert", - { - "characters": " " - }, - "AQAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 141, - 1, - "paste", - null, - "AQAAAOsAAAAAAAAACQEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 148, - 1, - "paste", - null, - "AgAAAPIAAAAAAAAA+wAAAAAAAAAAAAAA+wAAAAAAAAD7AAAAAAAAAAgAAABub3RpZmllZA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8gAAAAAAAAD6AAAAAAAAAAAAAAAAAPC/" - ], - [ - 153, - 1, - "insert", - { - "characters": "," - }, - "AQAAAAoBAAAAAAAACwEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACgEAAAAAAAAKAQAAAAAAAAAAAAAAAPC/" - ], - [ - 154, - 1, - "insert", - { - "characters": " " - }, - "AQAAAAsBAAAAAAAADAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAACwEAAAAAAAALAQAAAAAAAAAAAAAAAPC/" - ], - [ - 155, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAAwBAAAAAAAADgEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAEAAAAAAAAMAQAAAAAAAAAAAAAAAPC/" - ], - [ - 156, - 1, - "run_macro_file", - { - "file": "res://Packages/Default/Delete Left Right.sublime-macro" - }, - "AgAAAAwBAAAAAAAADAEAAAAAAAABAAAAIgwBAAAAAAAADAEAAAAAAAABAAAAIg", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADQEAAAAAAAANAQAAAAAAAAAAAAAAAPC/" - ], - [ - 157, - 1, - "insert", - { - "characters": "Field" - }, - "BQAAAAwBAAAAAAAADQEAAAAAAAAAAAAADQEAAAAAAAAOAQAAAAAAAAAAAAAOAQAAAAAAAA8BAAAAAAAAAAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAADAEAAAAAAAAMAQAAAAAAAAAAAAAAAPC/" - ], - [ - 158, - 1, - "insert", - { - "characters": "-" - }, - "AQAAABEBAAAAAAAAEgEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" - ], - [ - 159, - 1, - "left_delete", - null, - "AQAAABEBAAAAAAAAEQEAAAAAAAABAAAALQ", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" - ], - [ - 160, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAABEBAAAAAAAAEwEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" - ], - [ - 161, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAABIBAAAAAAAAFAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" - ], - [ - 166, - 1, - "paste", - null, - "AQAAABMBAAAAAAAAHgEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" - ], - [ - 171, - 1, - "insert", - { - "characters": "," - }, - "AQAAACABAAAAAAAAIQEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIAEAAAAAAAAgAQAAAAAAAAAAAAAAAPC/" - ], - [ - 172, - 1, - "insert", - { - "characters": " " - }, - "AQAAACEBAAAAAAAAIgEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIQEAAAAAAAAhAQAAAAAAAAAAAAAAAPC/" - ], - [ - 173, - 1, - "paste", - null, - "AQAAACIBAAAAAAAANgEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAIgEAAAAAAAAiAQAAAAAAAAAAAAAAAPC/" - ], - [ - 176, - 1, - "insert", - { - "characters": "site" - }, - "BQAAADABAAAAAAAAMQEAAAAAAAAAAAAAMQEAAAAAAAAxAQAAAAAAAAQAAABuYW1lMQEAAAAAAAAyAQAAAAAAAAAAAAAyAQAAAAAAADMBAAAAAAAAAAAAADMBAAAAAAAANAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANAEAAAAAAAAwAQAAAAAAAAAAAAAAAPC/" - ], - [ - 178, - 1, - "insert", - { - "characters": ";" - }, - "AQAAADYBAAAAAAAANwEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 179, - 1, - "left_delete", - null, - "AQAAADYBAAAAAAAANgEAAAAAAAABAAAAOw", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" - ], - [ - 180, - 1, - "insert", - { - "characters": "," - }, - "AQAAADYBAAAAAAAANwEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 181, - 1, - "insert", - { - "characters": " " - }, - "AQAAADcBAAAAAAAAOAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" - ], - [ - 182, - 1, - "paste", - null, - "AQAAADgBAAAAAAAARwEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" - ], - [ - 190, - 1, - "paste", - null, - "AQAAADgBAAAAAAAATAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOAEAAAAAAAA4AQAAAAAAAAAAAAAAAPC/" - ], - [ - 192, - 1, - "cut", - null, - "AQAAAEwBAAAAAAAATAEAAAAAAAAPAAAAYXV0aG9yX2dyYXZhdGFy", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATAEAAAAAAABbAQAAAAAAAAAAAAAAAPC/" - ], - [ - 197, - 1, - "paste", - null, - "AgAAAD8BAAAAAAAATgEAAAAAAAAAAAAATgEAAAAAAABOAQAAAAAAAAsAAABhdXRob3Jfc2l0ZQ", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAPwEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" - ], - [ - 201, - 1, - "insert", - { - "characters": "," - }, - "AQAAADUBAAAAAAAANgEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANQEAAAAAAAA1AQAAAAAAAAAAAAAAAPC/" - ], - [ - 202, - 1, - "insert", - { - "characters": " ef" - }, - "AwAAADYBAAAAAAAANwEAAAAAAAAAAAAANwEAAAAAAAA4AQAAAAAAAAAAAAA4AQAAAAAAADkBAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANgEAAAAAAAA2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 203, - 2, - "left_delete", - null, - "AgAAADgBAAAAAAAAOAEAAAAAAAABAAAAZjcBAAAAAAAANwEAAAAAAAABAAAAZQ", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOQEAAAAAAAA5AQAAAAAAAAAAAAAAAPC/" - ], - [ - 204, - 1, - "insert", - { - "characters": "default=" - }, - "CAAAADcBAAAAAAAAOAEAAAAAAAAAAAAAOAEAAAAAAAA5AQAAAAAAAAAAAAA5AQAAAAAAADoBAAAAAAAAAAAAADoBAAAAAAAAOwEAAAAAAAAAAAAAOwEAAAAAAAA8AQAAAAAAAAAAAAA8AQAAAAAAAD0BAAAAAAAAAAAAAD0BAAAAAAAAPgEAAAAAAAAAAAAAPgEAAAAAAAA/AQAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAAPC/" - ], - [ - 205, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAD8BAAAAAAAAQQEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAPwEAAAAAAAA/AQAAAAAAAAAAAAAAAPC/" - ], - [ - 208, - 1, - "trim_trailing_white_space", - null, - "AQAAAFwBAAAAAAAAXAEAAAAAAAABAAAAIA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAQQEAAAAAAABBAQAAAAAAAAAAAAAAAPC/" - ], - [ - 219, - 1, - "insert", - { - "characters": "\ndef" - }, - "BAAAAFcAAAAAAAAAWAAAAAAAAAAAAAAAWAAAAAAAAABZAAAAAAAAAAAAAABZAAAAAAAAAFoAAAAAAAAAAAAAAFoAAAAAAAAAWwAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAVwAAAAAAAABXAAAAAAAAAAAAAAAAgGZA" - ], - [ - 220, - 1, - "insert", - { - "characters": " _" - }, - "AgAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWwAAAAAAAABbAAAAAAAAAAAAAAAAAPC/" - ], - [ - 221, - 1, - "insert", - { - "characters": "null" - }, - "BAAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" - ], - [ - 222, - 4, - "left_delete", - null, - "BAAAAGAAAAAAAAAAYAAAAAAAAAABAAAAbF8AAAAAAAAAXwAAAAAAAAABAAAAbF4AAAAAAAAAXgAAAAAAAAABAAAAdV0AAAAAAAAAXQAAAAAAAAABAAAAbg", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAYQAAAAAAAABhAAAAAAAAAAAAAAAAAPC/" - ], - [ - 223, - 1, - "insert", - { - "characters": "empty_s" - }, - "BwAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYQAAAAAAAABiAAAAAAAAAAAAAABiAAAAAAAAAGMAAAAAAAAAAAAAAGMAAAAAAAAAZAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXQAAAAAAAABdAAAAAAAAAAAAAAAAAPC/" - ], - [ - 224, - 1, - "insert", - { - "characters": "tring" - }, - "BQAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABpAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZAAAAAAAAABkAAAAAAAAAAAAAAAAAPC/" - ], - [ - 225, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAGkAAAAAAAAAawAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAaQAAAAAAAABpAAAAAAAAAAAAAAAAAPC/" - ], - [ - 227, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAGsAAAAAAAAAbAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAawAAAAAAAABrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 228, - 1, - "insert", - { - "characters": "\nreturn" - }, - "CAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABxAAAAAAAAAAAAAABxAAAAAAAAAHIAAAAAAAAAAAAAAHIAAAAAAAAAcwAAAAAAAAAAAAAAcwAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHUAAAAAAAAAAAAAAHUAAAAAAAAAdgAAAAAAAAAAAAAAdgAAAAAAAAB3AAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAbAAAAAAAAABsAAAAAAAAAAAAAAAAAPC/" - ], - [ - 229, - 1, - "insert", - { - "characters": " " - }, - "AQAAAHcAAAAAAAAAeAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdwAAAAAAAAB3AAAAAAAAAAAAAAAAAPC/" - ], - [ - 230, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAHgAAAAAAAAAegAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAeAAAAAAAAAB4AAAAAAAAAAAAAAAAAPC/" - ], - [ - 232, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAHoAAAAAAAAAewAAAAAAAAAAAAAAewAAAAAAAAB/AAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAegAAAAAAAAB6AAAAAAAAAAAAAAAAAPC/" - ], - [ - 234, - 1, - "trim_trailing_white_space", - null, - "AQAAAHsAAAAAAAAAewAAAAAAAAAEAAAAICAgIA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfwAAAAAAAAB/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 242, - 1, - "insert", - { - "characters": "\n" - }, - "BAAAAPAAAAAAAAAA8QAAAAAAAAAAAAAA8QAAAAAAAAD1AAAAAAAAAAAAAADxAAAAAAAAAPEAAAAAAAAABAAAACAgICDxAAAAAAAAAPkAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8AAAAAAAAADwAAAAAAAAAAAAAAAAAPC/" - ], - [ - 245, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAADkBAAAAAAAAOgEAAAAAAAAAAAAAOgEAAAAAAABCAQAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOQEAAAAAAAA5AQAAAAAAAAAAAAAAAPC/" - ], - [ - 250, - 1, - "paste", - null, - "AgAAAHUBAAAAAAAAggEAAAAAAAAAAAAAggEAAAAAAACCAQAAAAAAAAIAAAAiIg", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAdQEAAAAAAAB3AQAAAAAAAAAAAAAAAPC/" - ], - [ - 252, - 1, - "trim_trailing_white_space", - null, - "AgAAADgBAAAAAAAAOAEAAAAAAAABAAAAIO8AAAAAAAAA7wAAAAAAAAABAAAAIA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAggEAAAAAAACCAQAAAAAAAAAAAAAAAPC/" - ], - [ - 269, - 1, - "insert", - { - "characters": "," - }, - "AQAAAJoBAAAAAAAAmwEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAmgEAAAAAAACaAQAAAAAAAAAAAAAAAPC/" - ], - [ - 270, - 1, - "insert", - { - "characters": " " - }, - "AQAAAJsBAAAAAAAAnAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAmwEAAAAAAACbAQAAAAAAAAAAAAAAAPC/" - ], - [ - 271, - 1, - "paste", - null, - "AQAAAJwBAAAAAAAAsQEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAnAEAAAAAAACcAQAAAAAAAAAAAAAAAPC/" - ], - [ - 273, - 1, - "insert", - { - "characters": "," - }, - "AQAAALIBAAAAAAAAswEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAsgEAAAAAAACyAQAAAAAAAAAAAAAAAPC/" - ], - [ - 274, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAALMBAAAAAAAAtAEAAAAAAAAAAAAAtAEAAAAAAAC8AQAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAswEAAAAAAACzAQAAAAAAAAAAAAAAAPC/" - ], - [ - 275, - 1, - "insert", - { - "characters": "Field" - }, - "BQAAALwBAAAAAAAAvQEAAAAAAAAAAAAAvQEAAAAAAAC+AQAAAAAAAAAAAAC+AQAAAAAAAL8BAAAAAAAAAAAAAL8BAAAAAAAAwAEAAAAAAAAAAAAAwAEAAAAAAADBAQAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvAEAAAAAAAC8AQAAAAAAAAAAAAAAAPC/" - ], - [ - 276, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAMEBAAAAAAAAwwEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwQEAAAAAAADBAQAAAAAAAAAAAAAAAPC/" - ], - [ - 277, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAMIBAAAAAAAAxAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwgEAAAAAAADCAQAAAAAAAAAAAAAAAPC/" - ], - [ - 278, - 1, - "insert", - { - "characters": "content" - }, - "BwAAAMMBAAAAAAAAxAEAAAAAAAAAAAAAxAEAAAAAAADFAQAAAAAAAAAAAADFAQAAAAAAAMYBAAAAAAAAAAAAAMYBAAAAAAAAxwEAAAAAAAAAAAAAxwEAAAAAAADIAQAAAAAAAAAAAADIAQAAAAAAAMkBAAAAAAAAAAAAAMkBAAAAAAAAygEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwwEAAAAAAADDAQAAAAAAAAAAAAAAAPC/" - ], - [ - 280, - 1, - "insert", - { - "characters": "," - }, - "AQAAAMsBAAAAAAAAzAEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAywEAAAAAAADLAQAAAAAAAAAAAAAAAPC/" - ], - [ - 281, - 1, - "insert", - { - "characters": " type\"\"" - }, - "BwAAAMwBAAAAAAAAzQEAAAAAAAAAAAAAzQEAAAAAAADOAQAAAAAAAAAAAADOAQAAAAAAAM8BAAAAAAAAAAAAAM8BAAAAAAAA0AEAAAAAAAAAAAAA0AEAAAAAAADRAQAAAAAAAAAAAADRAQAAAAAAANIBAAAAAAAAAAAAANIBAAAAAAAA0wEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzAEAAAAAAADMAQAAAAAAAAAAAAAAAPC/" - ], - [ - 283, - 1, - "insert", - { - "characters": "=" - }, - "AQAAANEBAAAAAAAA0gEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0QEAAAAAAADRAQAAAAAAAAAAAAAAAPC/" - ], - [ - 287, - 1, - "insert", - { - "characters": ")" - }, - "AQAAANUBAAAAAAAA1gEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA1QEAAAAAAADVAQAAAAAAAAAAAAAAAPC/" - ], - [ - 290, - 1, - "insert", - { - "characters": "text" - }, - "BAAAANMBAAAAAAAA1AEAAAAAAAAAAAAA1AEAAAAAAADVAQAAAAAAAAAAAADVAQAAAAAAANYBAAAAAAAAAAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0wEAAAAAAADTAQAAAAAAAAAAAAAAAPC/" - ], - [ - 305, - 1, - "insert", - { - "characters": "confiu" - }, - "BwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACBAAAAAAAAAAUAAABzZXR1cIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAACDAAAAAAAAAIQAAAAAAAAAAAAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhQAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" - ], - [ - 306, - 1, - "left_delete", - null, - "AQAAAIUAAAAAAAAAhQAAAAAAAAABAAAAdQ", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" - ], - [ - 307, - 1, - "insert", - { - "characters": "gure" - }, - "BAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAiQAAAAAAAAAAAAAA", - "BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" - ], - [ - 5, - 1, - "left_delete", - null, - "AQAAAG0BAAAAAAAAbQEAAAAAAAAXAAAALCBkZWZhdWx0PV9lbXB0eV9zdHJpbmc", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG0BAAAAAAAAhAEAAAAAAAAAAAAAAADwvw" - ], - [ - 8, - 1, - "left_delete", - null, - "AQAAAIcBAAAAAAAAhwEAAAAAAAAXAAAALCBkZWZhdWx0PV9lbXB0eV9zdHJpbmc", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcBAAAAAAAAngEAAAAAAAAAAAAAAADwvw" - ], - [ - 13, - 3, - "left_delete", - null, - "AwAAAFgAAAAAAAAAWAAAAAAAAAAiAAAAZGVmIF9lbXB0eV9zdHJpbmcoKToKICAgIHJldHVybiAiIlcAAAAAAAAAVwAAAAAAAAABAAAAClYAAAAAAAAAVgAAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHoAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" - ], - [ - 20, - 1, - "insert", - { - "characters": "time" - }, - "BAAAAMwAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADOAAAAAAAAAAAAAADOAAAAAAAAAM8AAAAAAAAAAAAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMwAAAAAAAAAzAAAAAAAAAAAAAAAAADwvw" - ], - [ - 23, - 1, - "insert", - { - "characters": "time" - }, - "BAAAABgBAAAAAAAAGQEAAAAAAAAAAAAAGQEAAAAAAAAaAQAAAAAAAAAAAAAaAQAAAAAAABsBAAAAAAAAAAAAABsBAAAAAAAAHAEAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABgBAAAAAAAAGAEAAAAAAAAAAAAAACCDQA" - ], - [ - 26, - 1, - "insert", - { - "characters": "time" - }, - "BAAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAAAAAAD6AAAAAAAAAPsAAAAAAAAAAAAAAPsAAAAAAAAA/AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPgAAAAAAAAA+AAAAAAAAAAAAAAAAADwvw" - ], - [ - 29, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAACZAQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpkYiA9IE5vbmUKCmRlZiBjb25maWd1cmUoZGJfdXJpKToKICAgIGRiID0gREFMKGRiX3VyaSkKICAgIGRiLmRlZmluZV90YWJsZSgiY29tbWVudCIsIEZpZWxkKCJ1cmwiKSwgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJub3RpZmllZCIsIHR5cGU9ImRhdGV0aW1lIiksRmllbGQoInB1Ymxpc2hlZCIsIHR5cGU9ImRhdGV0aW1lIiksCiAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLCBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgRmllbGQoImNvbnRlbnQiLCB0eXBlPSJ0ZXh0IikpCgAAAAAAAAAA0gEAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPwAAAAAAAAA/AAAAAAAAAAAAAAAAADwvw" - ], - [ - 36, - 1, - "insert", - { - "characters": "dal" - }, - "BAAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABTAAAAAAAAAAQAAABOb25lUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" - ], - [ - 37, - 3, - "left_delete", - null, - "AwAAAFQAAAAAAAAAVAAAAAAAAAABAAAAbFMAAAAAAAAAUwAAAAAAAAABAAAAYVIAAAAAAAAAUgAAAAAAAAABAAAAZA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" - ], - [ - 38, - 1, - "insert", - { - "characters": "dal" - }, - "AwAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAUgAAAAAAAAAAAAAAAADwvw" - ], - [ - 39, - 3, - "left_delete", - null, - "AwAAAFQAAAAAAAAAVAAAAAAAAAABAAAAbFMAAAAAAAAAUwAAAAAAAAABAAAAYVIAAAAAAAAAUgAAAAAAAAABAAAAZA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" - ], - [ - 40, - 1, - "insert", - { - "characters": "DAL)" - }, - "BAAAAFIAAAAAAAAAUwAAAAAAAAAAAAAAUwAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFUAAAAAAAAAAAAAAFUAAAAAAAAAVgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFIAAAAAAAAAUgAAAAAAAAAAAAAAAADwvw" - ], - [ - 41, - 1, - "left_delete", - null, - "AQAAAFUAAAAAAAAAVQAAAAAAAAABAAAAKQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" - ], - [ - 42, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAFUAAAAAAAAAVwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" - ], - [ - 56, - 1, - "insert", - { - "characters": "\ndb." - }, - "BQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACKAAAAAAAAAAAAAACKAAAAAAAAAIsAAAAAAAAAAAAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAjAAAAAAAAACNAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" - ], - [ - 57, - 1, - "insert", - { - "characters": "c" - }, - "AQAAAI0AAAAAAAAAjgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0AAAAAAAAAjQAAAAAAAAAAAAAAAADwvw" - ], - [ - 58, - 1, - "insert", - { - "characters": "on" - }, - "AgAAAI4AAAAAAAAAjwAAAAAAAAAAAAAAjwAAAAAAAACQAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI4AAAAAAAAAjgAAAAAAAAAAAAAAAADwvw" - ], - [ - 59, - 2, - "left_delete", - null, - "AgAAAI8AAAAAAAAAjwAAAAAAAAABAAAAbo4AAAAAAAAAjgAAAAAAAAABAAAAbw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJAAAAAAAAAAkAAAAAAAAAAAAAAAAADwvw" - ], - [ - 62, - 1, - "left_delete", - null, - "AQAAAE4AAAAAAAAATgAAAAAAAAABAAAAYg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" - ], - [ - 63, - 1, - "insert", - { - "characters": "atabase" - }, - "BwAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAATgAAAAAAAAAAAAAAAADwvw" - ], - [ - 71, - 1, - "paste", - null, - "AgAAAHsAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACDAAAAAAAAAAIAAABkYg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsAAAAAAAAAfQAAAAAAAAAAAAAAAADwvw" - ], - [ - 75, - 1, - "paste", - null, - "AgAAAJ8AAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACnAAAAAAAAAAIAAABkYg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKEAAAAAAAAAnwAAAAAAAAAAAAAAAADwvw" - ], - [ - 79, - 1, - "insert", - { - "characters": "None" - }, - "BQAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABZAAAAAAAAAAUAAABEQUwoKVkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAXQAAAAAAAAAAAAAAAADwvw" - ], - [ - 83, - 1, - "insert", - { - "characters": "db_dal" - }, - "BwAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABOAAAAAAAAAAgAAABkYXRhYmFzZU4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAATQAAAAAAAAAAAAAAAADwvw" - ], - [ - 94, - 1, - "paste", - null, - "AgAAAHgAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAB+AAAAAAAAAAgAAABkYXRhYmFzZQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHgAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" - ], - [ - 98, - 1, - "right_delete", - null, - "AQAAAJEAAAAAAAAAkQAAAAAAAAAEAAAAZGIuYw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAkQAAAAAAAAAAAAAAAABCQA" - ], - [ - 100, - 1, - "left_delete", - null, - "AQAAAIwAAAAAAAAAjAAAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0AAAAAAAAAjQAAAAAAAAAAAAAAAAAAAA" - ], - [ - 104, - 1, - "paste", - null, - "AgAAAJUAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACbAAAAAAAAAAgAAABkYXRhYmFzZQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAnQAAAAAAAAAAAAAAAADwvw" - ], - [ - 106, - 1, - "trim_trailing_white_space", - null, - "AQAAAIwAAAAAAAAAjAAAAAAAAAAEAAAAICAgIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJsAAAAAAAAAmwAAAAAAAAAAAAAAAADwvw" - ], - [ - 114, - 1, - "insert", - { - "characters": "\ndb_dal." - }, - "CQAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHMAAAAAAAAAcwAAAAAAAAAAAAAAAADwvw" - ], - [ - 122, - 1, - "insert", - { - "characters": "DAL" - }, - "BAAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABXAAAAAAAAAAQAAABOb25lVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAWgAAAAAAAAAAAAAAAADwvw" - ], - [ - 123, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAFkAAAAAAAAAWwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" - ], - [ - 130, - 1, - "left_delete", - null, - "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" - ], - [ - 131, - 1, - "insert", - { - "characters": "." - }, - "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 135, - 1, - "right_delete", - null, - "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 136, - 1, - "insert", - { - "characters": "." - }, - "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 142, - 1, - "insert", - { - "characters": "#" - }, - "AQAAAIUAAAAAAAAAhgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" - ], - [ - 152, - 1, - "left_delete", - null, - "AQAAAH8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" - ], - [ - 153, - 1, - "insert", - { - "characters": "." - }, - "AQAAAH8AAAAAAAAAgAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 154, - 1, - "insert", - { - "characters": "set" - }, - "AwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" - ], - [ - 155, - 3, - "left_delete", - null, - "AwAAAIIAAAAAAAAAggAAAAAAAAABAAAAdIEAAAAAAAAAgQAAAAAAAAABAAAAZYAAAAAAAAAAgAAAAAAAAAABAAAAcw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAgwAAAAAAAAAAAAAAAADwvw" - ], - [ - 156, - 1, - "insert", - { - "characters": "ur" - }, - "AgAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAADwvw" - ], - [ - 157, - 3, - "left_delete", - null, - "AwAAAIEAAAAAAAAAgQAAAAAAAAABAAAAcoAAAAAAAAAAgAAAAAAAAAABAAAAdX8AAAAAAAAAfwAAAAAAAAABAAAALg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIIAAAAAAAAAggAAAAAAAAAAAAAAAADwvw" - ], - [ - 158, - 1, - "insert", - { - "characters": ".co" - }, - "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 159, - 1, - "insert", - { - "characters": "n" - }, - "AQAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIIAAAAAAAAAggAAAAAAAAAAAAAAAADwvw" - ], - [ - 171, - 1, - "insert", - { - "characters": "None" - }, - "BAAAAFoAAAAAAAAAWwAAAAAAAAAAAAAAWwAAAAAAAABcAAAAAAAAAAAAAABcAAAAAAAAAF0AAAAAAAAAAAAAAF0AAAAAAAAAXgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoAAAAAAAAAWgAAAAAAAAAAAAAAAADwvw" - ], - [ - 181, - 1, - "left_delete", - null, - "AQAAAFoAAAAAAAAAWgAAAAAAAAAEAAAATm9uZQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoAAAAAAAAAXgAAAAAAAAAAAAAAAADwvw" - ], - [ - 189, - 1, - "insert", - { - "characters": "global" - }, - "BwAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB6AAAAAAAAAAoAAABkYl9kYWwuY29uegAAAAAAAAB7AAAAAAAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAeQAAAAAAAAAAAAAAAADwvw" - ], - [ - 190, - 1, - "insert", - { - "characters": " db_dal" - }, - "BwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 193, - 1, - "right_delete", - null, - "AQAAAIsAAAAAAAAAiwAAAAAAAAABAAAAIw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsAAAAAAAAAiwAAAAAAAAAAAAAAAABCQA" - ], - [ - 203, - 3, - "right_delete", - null, - "AwAAAE0AAAAAAAAATQAAAAAAAAAPAAAAZGJfZGFsID0gREFMKCkKTQAAAAAAAABNAAAAAAAAAAEAAAAKTQAAAAAAAABNAAAAAAAAAAEAAAAK", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFwAAAAAAAAATQAAAAAAAAAAAAAAAADwvw" - ], - [ - 206, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAADgAQAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpkZWYgY29uZmlndXJlKGRiX3VyaSk6CiAgICBnbG9iYWwgZGJfZGFsCiAgICBkYl9kYWwgPSBEQUwoZGJfdXJpKQogICAgZGJfZGFsLmRlZmluZV90YWJsZSgKICAgICAgICAiY29tbWVudCIsCiAgICAgICAgRmllbGQoInVybCIpLAogICAgICAgIEZpZWxkKCJjcmVhdGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJwdWJsaXNoZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3JfbmFtZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgIEZpZWxkKCJhdXRob3JfZ3JhdmF0YXIiKSwKICAgICAgICBGaWVsZCgiY29udGVudCIsIHR5cGU9InRleHQiKSwKICAgICkKAAAAAAAAAADhAQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0AAAAAAAAATQAAAAAAAAAAAAAAAADwvw" - ], - [ - 214, - 1, - "insert", - { - "characters": "db" - }, - "AgAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0AAAAAAAAATQAAAAAAAAAAAAAAAADwvw" - ], - [ - 215, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAE8AAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAABRAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" - ], - [ - 216, - 3, - "left_delete", - null, - "AwAAAFAAAAAAAAAAUAAAAAAAAAABAAAAPU8AAAAAAAAATwAAAAAAAAABAAAAIE4AAAAAAAAATgAAAAAAAAABAAAAYg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFEAAAAAAAAAUQAAAAAAAAAAAAAAAADwvw" - ], - [ - 217, - 1, - "insert", - { - "characters": "a" - }, - "AQAAAE4AAAAAAAAATwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAATgAAAAAAAAAAAAAAAADwvw" - ], - [ - 218, - 1, - "left_delete", - null, - "AQAAAE4AAAAAAAAATgAAAAAAAAABAAAAYQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE8AAAAAAAAATwAAAAAAAAAAAAAAAADwvw" - ], - [ - 219, - 1, - "insert", - { - "characters": "atabase" - }, - "BwAAAE4AAAAAAAAATwAAAAAAAAAAAAAATwAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFEAAAAAAAAAAAAAAFEAAAAAAAAAUgAAAAAAAAAAAAAAUgAAAAAAAABTAAAAAAAAAAAAAABTAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE4AAAAAAAAATgAAAAAAAAAAAAAAAADwvw" - ], - [ - 220, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFUAAAAAAAAAVQAAAAAAAAAAAAAAAADwvw" - ], - [ - 221, - 1, - "insert", - { - "characters": " " - }, - "AQAAAFcAAAAAAAAAWAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFcAAAAAAAAAVwAAAAAAAAAAAAAAAADwvw" - ], - [ - 223, - 1, - "insert", - { - "characters": "Databas" - }, - "BwAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAFsAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABdAAAAAAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAAAAAAF4AAAAAAAAAXwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgAAAAAAAAAWAAAAAAAAAAAAAAAAADwvw" - ], - [ - 224, - 1, - "insert", - { - "characters": "e" - }, - "AQAAAF8AAAAAAAAAYAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8AAAAAAAAAXwAAAAAAAAAAAAAAAADwvw" - ], - [ - 225, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAGAAAAAAAAAAYgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGAAAAAAAAAAYAAAAAAAAAAAAAAAAADwvw" - ], - [ - 227, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAGIAAAAAAAAAYwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGIAAAAAAAAAYgAAAAAAAAAAAAAAAADwvw" - ], - [ - 230, - 1, - "insert", - { - "characters": "\nclass" - }, - "BgAAAGMAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABlAAAAAAAAAAAAAABlAAAAAAAAAGYAAAAAAAAAAAAAAGYAAAAAAAAAZwAAAAAAAAAAAAAAZwAAAAAAAABoAAAAAAAAAAAAAABoAAAAAAAAAGkAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGMAAAAAAAAAYwAAAAAAAAAAAAAAAAAAAA" - ], - [ - 231, - 1, - "insert", - { - "characters": " Database" - }, - "CQAAAGkAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAG8AAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAABxAAAAAAAAAAAAAABxAAAAAAAAAHIAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGkAAAAAAAAAaQAAAAAAAAAAAAAAAADwvw" - ], - [ - 232, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAHIAAAAAAAAAdAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHIAAAAAAAAAcgAAAAAAAAAAAAAAAADwvw" - ], - [ - 234, - 2, - "left_delete", - null, - "AgAAAHMAAAAAAAAAcwAAAAAAAAABAAAAKXIAAAAAAAAAcgAAAAAAAAABAAAAKA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHQAAAAAAAAAdAAAAAAAAAAAAAAAAADwvw" - ], - [ - 235, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAHIAAAAAAAAAcwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHIAAAAAAAAAcgAAAAAAAAAAAAAAAADwvw" - ], - [ - 236, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHMAAAAAAAAAcwAAAAAAAAAAAAAAAADwvw" - ], - [ - 243, - 1, - "indent", - null, - "DgAAAHkAAAAAAAAAfQAAAAAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAAAAAACqAAAAAAAAAK4AAAAAAAAAAAAAAMcAAAAAAAAAywAAAAAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAAAAAAD7AAAAAAAAAP8AAAAAAAAAAAAAABUBAAAAAAAAGQEAAAAAAAAAAAAARAEAAAAAAABIAQAAAAAAAAAAAAB0AQAAAAAAAHgBAAAAAAAAAAAAAKUBAAAAAAAAqQEAAAAAAAAAAAAAxwEAAAAAAADLAQAAAAAAAAAAAADpAQAAAAAAAO0BAAAAAAAAAAAAAA8CAAAAAAAAEwIAAAAAAAAAAAAAOgIAAAAAAAA+AgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHkAAAAAAAAADAIAAAAAAAAAAAAAAAAAAA" - ], - [ - 250, - 1, - "insert", - { - "characters": "self," - }, - "BgAAAIsAAAAAAAAAjAAAAAAAAAAAAAAAdAAAAAAAAAB0AAAAAAAAAAQAAAAgICAgiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsAAAAAAAAAiwAAAAAAAAAAAAAAAADwvw" - ], - [ - 254, - 1, - "insert", - { - "characters": "\n\ndef" - }, - "CAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAfQAAAAAAAAAAAAAAdAAAAAAAAAB0AAAAAAAAAAQAAAAgICAgeQAAAAAAAAB6AAAAAAAAAAAAAAB6AAAAAAAAAHsAAAAAAAAAAAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHMAAAAAAAAAcwAAAAAAAAAAAAAAAADwvw" - ], - [ - 255, - 1, - "insert", - { - "characters": " __init" - }, - "BwAAAHwAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACBAAAAAAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAAAAAAIIAAAAAAAAAgwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHwAAAAAAAAAfAAAAAAAAAAAAAAAAADwvw" - ], - [ - 256, - 1, - "insert", - { - "characters": "__" - }, - "AgAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMAAAAAAAAAgwAAAAAAAAAAAAAAAADwvw" - ], - [ - 257, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAIUAAAAAAAAAhwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUAAAAAAAAAhQAAAAAAAAAAAAAAAADwvw" - ], - [ - 259, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAIcAAAAAAAAAiAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcAAAAAAAAAhwAAAAAAAAAAAAAAAADwvw" - ], - [ - 260, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAAIgAAAAAAAAAiQAAAAAAAAAAAAAAiQAAAAAAAACNAAAAAAAAAAAAAACNAAAAAAAAAJEAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIgAAAAAAAAAiAAAAAAAAAAAAAAAAADwvw" - ], - [ - 261, - 1, - "insert", - { - "characters": "slef" - }, - "BAAAAJEAAAAAAAAAkgAAAAAAAAAAAAAAkgAAAAAAAACTAAAAAAAAAAAAAACTAAAAAAAAAJQAAAAAAAAAAAAAAJQAAAAAAAAAlQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJEAAAAAAAAAkQAAAAAAAAAAAAAAAADwvw" - ], - [ - 262, - 3, - "left_delete", - null, - "AwAAAJQAAAAAAAAAlAAAAAAAAAABAAAAZpMAAAAAAAAAkwAAAAAAAAABAAAAZZIAAAAAAAAAkgAAAAAAAAABAAAAbA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUAAAAAAAAAlQAAAAAAAAAAAAAAAADwvw" - ], - [ - 263, - 1, - "insert", - { - "characters": "elf" - }, - "AwAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJUAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJIAAAAAAAAAkgAAAAAAAAAAAAAAAADwvw" - ], - [ - 267, - 1, - "right_delete", - null, - "AQAAAHUAAAAAAAAAdQAAAAAAAAAhAAAAICAgIGRlZiBfX2luaXRfXygpOgogICAgICAgIHNlbGYK", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHUAAAAAAAAAlgAAAAAAAAAAAAAAAAAAAA" - ], - [ - 270, - 1, - "reindent", - null, - "AQAAAHUAAAAAAAAAeQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHUAAAAAAAAAdQAAAAAAAAAAAAAAAAAAAA" - ], - [ - 271, - 1, - "insert", - { - "characters": "db" - }, - "AgAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHkAAAAAAAAAeQAAAAAAAAAAAAAAAADwvw" - ], - [ - 272, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsAAAAAAAAAewAAAAAAAAAAAAAAAADwvw" - ], - [ - 273, - 2, - "left_delete", - null, - "AgAAAHwAAAAAAAAAfAAAAAAAAAABAAAAPXsAAAAAAAAAewAAAAAAAAABAAAAIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH0AAAAAAAAAfQAAAAAAAAAAAAAAAADwvw" - ], - [ - 274, - 1, - "insert", - { - "characters": "_dal" - }, - "BAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsAAAAAAAAAewAAAAAAAAAAAAAAAADwvw" - ], - [ - 275, - 1, - "left_delete", - null, - "AQAAAH4AAAAAAAAAfgAAAAAAAAABAAAAbA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 276, - 1, - "insert", - { - "characters": "l" - }, - "AQAAAH4AAAAAAAAAfwAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH4AAAAAAAAAfgAAAAAAAAAAAAAAAADwvw" - ], - [ - 277, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"09.9999.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":9,\"character\":10},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "db_dal" - }, - "AgAAAHkAAAAAAAAAeQAAAAAAAAAGAAAAZGJfZGFseQAAAAAAAAB/AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 278, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACEAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 281, - 1, - "insert", - { - "characters": " =" - }, - "AwAAAH8AAAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAAACBAAAAAAAAAAQAAAAgICAggAAAAAAAAACBAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8AAAAAAAAAfwAAAAAAAAAAAAAAAADwvw" - ], - [ - 282, - 1, - "insert", - { - "characters": " None" - }, - "BQAAAIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAACDAAAAAAAAAIQAAAAAAAAAAAAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIEAAAAAAAAAgQAAAAAAAAAAAAAAAADwvw" - ], - [ - 291, - 1, - "right_delete", - null, - "AQAAALAAAAAAAAAAsAAAAAAAAAANAAAAZ2xvYmFsIGRiX2RhbA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALAAAAAAAAAAvQAAAAAAAAD////////vfw" - ], - [ - 293, - 1, - "left_delete", - null, - "AQAAAKcAAAAAAAAApwAAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKgAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAA" - ], - [ - 296, - 1, - "insert", - { - "characters": "sl" - }, - "AgAAALgAAAAAAAAAuQAAAAAAAAAAAAAAuQAAAAAAAAC6AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALgAAAAAAAAAuAAAAAAAAAAAAAAAAABSQA" - ], - [ - 297, - 1, - "left_delete", - null, - "AQAAALkAAAAAAAAAuQAAAAAAAAABAAAAbA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALoAAAAAAAAAugAAAAAAAAAAAAAAAADwvw" - ], - [ - 298, - 1, - "insert", - { - "characters": "elf." - }, - "BAAAALkAAAAAAAAAugAAAAAAAAAAAAAAugAAAAAAAAC7AAAAAAAAAAAAAAC7AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAvQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALkAAAAAAAAAuQAAAAAAAAAAAAAAAADwvw" - ], - [ - 301, - 1, - "insert", - { - "characters": "self." - }, - "BQAAANoAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADcAAAAAAAAAAAAAADcAAAAAAAAAN0AAAAAAAAAAAAAAN0AAAAAAAAA3gAAAAAAAAAAAAAA3gAAAAAAAADfAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANoAAAAAAAAA2gAAAAAAAAAAAAAAAADwvw" - ], - [ - 303, - 1, - "trim_trailing_white_space", - null, - "AQAAAKcAAAAAAAAApwAAAAAAAAAIAAAAICAgICAgICA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAN8AAAAAAAAA3wAAAAAAAAAAAAAAAADwvw" - ], - [ - 309, - 1, - "cut", - null, - "AQAAAE0AAAAAAAAATQAAAAAAAAAVAAAAZGF0YWJhc2UgPSBEYXRhYmFzZSgp", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGIAAAAAAAAATQAAAAAAAAAAAAAAAAAAAA" - ], - [ - 310, - 2, - "right_delete", - null, - "AgAAAE0AAAAAAAAATQAAAAAAAAABAAAACk0AAAAAAAAATQAAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0AAAAAAAAATQAAAAAAAAAAAAAAAADwvw" - ], - [ - 316, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAADUCAAAAAAAANgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADUCAAAAAAAANQIAAAAAAAAAAAAAAAAAAA" - ], - [ - 317, - 1, - "paste", - null, - "AQAAADYCAAAAAAAASwIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADYCAAAAAAAANgIAAAAAAAAAAAAAAADwvw" - ], - [ - 321, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAABLAgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgpjbGFzcyBEYXRhYmFzZToKCiAgICBkYl9kYWwgPSBOb25lCgogICAgZGVmIGNvbmZpZ3VyZShzZWxmLGRiX3VyaSk6CiAgICAgICAgc2VsZi5kYl9kYWwgPSBEQUwoZGJfdXJpKQogICAgICAgIHNlbGYuZGJfZGFsLmRlZmluZV90YWJsZSgKICAgICAgICAgICAgImNvbW1lbnQiLAogICAgICAgICAgICBGaWVsZCgidXJsIiksCiAgICAgICAgICAgIEZpZWxkKCJjcmVhdGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoIm5vdGlmaWVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoInB1Ymxpc2hlZCIsIHR5cGU9ImRhdGV0aW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3JfbmFtZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX3NpdGUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9ncmF2YXRhciIpLAogICAgICAgICAgICBGaWVsZCgiY29udGVudCIsIHR5cGU9InRleHQiKSwKICAgICAgICApCgpkYXRhYmFzZSA9IERhdGFiYXNlKCkAAAAAAAAAAE8CAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADUCAAAAAAAANQIAAAAAAAAAAAAAAKBnQA" - ], - [ - 336, - 1, - "insert", - { - "characters": "Dal" - }, - "BAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAgAAABEYXRhYmFzZVUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFQAAAAAAAAAXAAAAAAAAAAAAAAAAADwvw" - ], - [ - 340, - 1, - "insert", - { - "characters": "Db" - }, - "AwAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAMAAABEYWxVAAAAAAAAAFYAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFcAAAAAAAAAVAAAAAAAAAAAAAAAAADwvw" - ], - [ - 341, - 2, - "left_delete", - null, - "AgAAAFUAAAAAAAAAVQAAAAAAAAABAAAAYlQAAAAAAAAAVAAAAAAAAAABAAAARA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" - ], - [ - 342, - 1, - "insert", - { - "characters": "Db" - }, - "AgAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABWAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFQAAAAAAAAAVAAAAAAAAAAAAAAAAADwvw" - ], - [ - 343, - 1, - "insert", - { - "characters": "Dal" - }, - "AwAAAFYAAAAAAAAAVwAAAAAAAAAAAAAAVwAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFkAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYAAAAAAAAAVgAAAAAAAAAAAAAAAADwvw" - ], - [ - 355, - 1, - "paste", - null, - "AgAAAEECAAAAAAAARgIAAAAAAAAAAAAARgIAAAAAAABGAgAAAAAAAAgAAABEYXRhYmFzZQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAASQIAAAAAAAAAAAAAAADwvw" - ], - [ - 369, - 1, - "insert", - { - "characters": "Databse" - }, - "CAAAAFQAAAAAAAAAVQAAAAAAAAAAAAAAVQAAAAAAAABVAAAAAAAAAAUAAABEYkRhbFUAAAAAAAAAVgAAAAAAAAAAAAAAVgAAAAAAAABXAAAAAAAAAAAAAABXAAAAAAAAAFgAAAAAAAAAAAAAAFgAAAAAAAAAWQAAAAAAAAAAAAAAWQAAAAAAAABaAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFQAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" - ], - [ - 370, - 2, - "left_delete", - null, - "AgAAAFoAAAAAAAAAWgAAAAAAAAABAAAAZVkAAAAAAAAAWQAAAAAAAAABAAAAcw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFsAAAAAAAAAWwAAAAAAAAAAAAAAAADwvw" - ], - [ - 371, - 1, - "insert", - { - "characters": "ase" - }, - "AwAAAFkAAAAAAAAAWgAAAAAAAAAAAAAAWgAAAAAAAABbAAAAAAAAAAAAAABbAAAAAAAAAFwAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkAAAAAAAAAWQAAAAAAAAAAAAAAAADwvw" - ], - [ - 381, - 1, - "paste", - null, - "AgAAAEQCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABMAgAAAAAAAAUAAABEYkRhbA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEQCAAAAAAAASQIAAAAAAAAAAAAAAADwvw" - ], - [ - 386, - 1, - "insert", - { - "characters": "db" - }, - "AwAAADkCAAAAAAAAOgIAAAAAAAAAAAAAOgIAAAAAAAA6AgAAAAAAAAgAAABkYXRhYmFzZToCAAAAAAAAOwIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAAOQIAAAAAAAAAAAAAAADwvw" - ], - [ - 401, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAADcCAAAAAAAAOAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADcCAAAAAAAANwIAAAAAAAAAAAAAAADwvw" - ], - [ - 402, - 1, - "reindent", - null, - "AQAAADgCAAAAAAAAQAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADgCAAAAAAAAOAIAAAAAAAAAAAAAAADwvw" - ], - [ - 403, - 1, - "left_delete", - null, - "AQAAADwCAAAAAAAAPAIAAAAAAAAEAAAAICAgIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEACAAAAAAAAQAIAAAAAAAAAAAAAAADwvw" - ], - [ - 404, - 1, - "insert", - { - "characters": "def" - }, - "AwAAADwCAAAAAAAAPQIAAAAAAAAAAAAAPQIAAAAAAAA+AgAAAAAAAAAAAAA+AgAAAAAAAD8CAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADwCAAAAAAAAPAIAAAAAAAAAAAAAAADwvw" - ], - [ - 405, - 1, - "insert", - { - "characters": " " - }, - "AQAAAD8CAAAAAAAAQAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD8CAAAAAAAAPwIAAAAAAAAAAAAAAADwvw" - ], - [ - 406, - 1, - "insert", - { - "characters": "dal" - }, - "AwAAAEACAAAAAAAAQQIAAAAAAAAAAAAAQQIAAAAAAABCAgAAAAAAAAAAAABCAgAAAAAAAEMCAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEACAAAAAAAAQAIAAAAAAAAAAAAAAADwvw" - ], - [ - 407, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAEMCAAAAAAAARQIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEMCAAAAAAAAQwIAAAAAAAAAAAAAAADwvw" - ], - [ - 410, - 1, - "insert", - { - "characters": "self" - }, - "BAAAAEQCAAAAAAAARQIAAAAAAAAAAAAARQIAAAAAAABGAgAAAAAAAAAAAABGAgAAAAAAAEcCAAAAAAAAAAAAAEcCAAAAAAAASAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEQCAAAAAAAARAIAAAAAAAAAAAAAAADwvw" - ], - [ - 412, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAEkCAAAAAAAASgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEkCAAAAAAAASQIAAAAAAAAAAAAAAADwvw" - ], - [ - 413, - 1, - "insert", - { - "characters": "\nreturn" - }, - "CQAAAEoCAAAAAAAASwIAAAAAAAAAAAAASwIAAAAAAABPAgAAAAAAAAAAAABPAgAAAAAAAFMCAAAAAAAAAAAAAFMCAAAAAAAAVAIAAAAAAAAAAAAAVAIAAAAAAABVAgAAAAAAAAAAAABVAgAAAAAAAFYCAAAAAAAAAAAAAFYCAAAAAAAAVwIAAAAAAAAAAAAAVwIAAAAAAABYAgAAAAAAAAAAAABYAgAAAAAAAFkCAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEoCAAAAAAAASgIAAAAAAAAAAAAAAADwvw" - ], - [ - 414, - 1, - "insert", - { - "characters": " self." - }, - "BgAAAFkCAAAAAAAAWgIAAAAAAAAAAAAAWgIAAAAAAABbAgAAAAAAAAAAAABbAgAAAAAAAFwCAAAAAAAAAAAAAFwCAAAAAAAAXQIAAAAAAAAAAAAAXQIAAAAAAABeAgAAAAAAAAAAAABeAgAAAAAAAF8CAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkCAAAAAAAAWQIAAAAAAAAAAAAAAADwvw" - ], - [ - 415, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"05.0000.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":25,\"character\":20},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "db_dal" - }, - "AQAAAF8CAAAAAAAAZQIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8CAAAAAAAAXwIAAAAAAAAAAAAAAADwvw" - ], - [ - 420, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAAB3AgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgoKY2xhc3MgRGF0YWJhc2U6CgogICAgZGJfZGFsID0gTm9uZQoKICAgIGRlZiBjb25maWd1cmUoc2VsZiwgZGJfdXJpKToKICAgICAgICBzZWxmLmRiX2RhbCA9IERBTChkYl91cmkpCiAgICAgICAgc2VsZi5kYl9kYWwuZGVmaW5lX3RhYmxlKAogICAgICAgICAgICAiY29tbWVudCIsCiAgICAgICAgICAgIEZpZWxkKCJ1cmwiKSwKICAgICAgICAgICAgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgicHVibGlzaGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgICAgIEZpZWxkKCJjb250ZW50IiwgdHlwZT0idGV4dCIpLAogICAgICAgICkKCiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbAoKZGIgPSBEYXRhYmFzZSgpCgAAAAAAAAAAeAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYCAAAAAAAAZgIAAAAAAAAAAAAAAEBtQA" - ], - [ - 437, - 1, - "insert", - { - "characters": "database" - }, - "CQAAAGgCAAAAAAAAaQIAAAAAAAAAAAAAaQIAAAAAAABpAgAAAAAAAAIAAABkYmkCAAAAAAAAagIAAAAAAAAAAAAAagIAAAAAAABrAgAAAAAAAAAAAABrAgAAAAAAAGwCAAAAAAAAAAAAAGwCAAAAAAAAbQIAAAAAAAAAAAAAbQIAAAAAAABuAgAAAAAAAAAAAABuAgAAAAAAAG8CAAAAAAAAAAAAAG8CAAAAAAAAcAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGgCAAAAAAAAagIAAAAAAAAAAAAAAADwvw" - ], - [ - 439, - 1, - "insert", - { - "characters": "db" - }, - "AgAAAH4CAAAAAAAAfwIAAAAAAAAAAAAAfwIAAAAAAACAAgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH4CAAAAAAAAfgIAAAAAAAAAAAAAAABSQA" - ], - [ - 440, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACCAgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIACAAAAAAAAgAIAAAAAAAAAAAAAAADwvw" - ], - [ - 441, - 1, - "insert", - { - "characters": " data" - }, - "BQAAAIICAAAAAAAAgwIAAAAAAAAAAAAAgwIAAAAAAACEAgAAAAAAAAAAAACEAgAAAAAAAIUCAAAAAAAAAAAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACHAgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIICAAAAAAAAggIAAAAAAAAAAAAAAADwvw" - ], - [ - 442, - 1, - "insert", - { - "characters": "base" - }, - "BAAAAIcCAAAAAAAAiAIAAAAAAAAAAAAAiAIAAAAAAACJAgAAAAAAAAAAAACJAgAAAAAAAIoCAAAAAAAAAAAAAIoCAAAAAAAAiwIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcCAAAAAAAAhwIAAAAAAAAAAAAAAADwvw" - ], - [ - 443, - 1, - "insert", - { - "characters": "." - }, - "AQAAAIsCAAAAAAAAjAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsCAAAAAAAAiwIAAAAAAAAAAAAAAADwvw" - ], - [ - 444, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"05.0000.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":29,\"character\":14},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "db_dal" - }, - "AQAAAIwCAAAAAAAAkgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwCAAAAAAAAjAIAAAAAAAAAAAAAAADwvw" - ], - [ - 460, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAACSAgAAIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgpmcm9tIHB5ZGFsIGltcG9ydCBEQUwsIEZpZWxkCgoKY2xhc3MgRGF0YWJhc2U6CgogICAgZGJfZGFsID0gTm9uZQoKICAgIGRlZiBjb25maWd1cmUoc2VsZiwgZGJfdXJpKToKICAgICAgICBzZWxmLmRiX2RhbCA9IERBTChkYl91cmkpCiAgICAgICAgc2VsZi5kYl9kYWwuZGVmaW5lX3RhYmxlKAogICAgICAgICAgICAiY29tbWVudCIsCiAgICAgICAgICAgIEZpZWxkKCJ1cmwiKSwKICAgICAgICAgICAgRmllbGQoImNyZWF0ZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgibm90aWZpZWQiLCB0eXBlPSJkYXRldGltZSIpLAogICAgICAgICAgICBGaWVsZCgicHVibGlzaGVkIiwgdHlwZT0iZGF0ZXRpbWUiKSwKICAgICAgICAgICAgRmllbGQoImF1dGhvcl9uYW1lIiksCiAgICAgICAgICAgIEZpZWxkKCJhdXRob3Jfc2l0ZSIpLAogICAgICAgICAgICBGaWVsZCgiYXV0aG9yX2dyYXZhdGFyIiksCiAgICAgICAgICAgIEZpZWxkKCJjb250ZW50IiwgdHlwZT0idGV4dCIpLAogICAgICAgICkKCiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbAoKCmRhdGFiYXNlID0gRGF0YWJhc2UoKQpkYiA9IGRhdGFiYXNlLmRiX2RhbAAAAAAAAAAAkwIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJICAAAAAAAAkgIAAAAAAAAAAAAAAADwvw" - ], - [ - 469, - 1, - "insert", - { - "characters": "DAL" - }, - "BAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABtAAAAAAAAAAQAAABOb25lbQAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGwAAAAAAAAAcAAAAAAAAAAAAAAAAADwvw" - ], - [ - 470, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAG8AAAAAAAAAcQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8AAAAAAAAAbwAAAAAAAAAAAAAAAADwvw" - ], - [ - 482, - 2, - "left_delete", - null, - "AgAAADgCAAAAAAAAOAIAAAAAAAAuAAAACiAgICBkZWYgZGFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRiX2RhbDcCAAAAAAAANwIAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYCAAAAAAAAOAIAAAAAAAAAAAAAAADwvw" - ], - [ - 503, - 1, - "insert", - { - "characters": "\n\n" - }, - "BQAAADcCAAAAAAAAOAIAAAAAAAAAAAAAOAIAAAAAAABAAgAAAAAAAAAAAABAAgAAAAAAAEECAAAAAAAAAAAAAEECAAAAAAAASQIAAAAAAAAAAAAAOAIAAAAAAAA4AgAAAAAAAAgAAAAgICAgICAgIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADcCAAAAAAAANwIAAAAAAAAAAAAAAADwvw" - ], - [ - 504, - 1, - "left_delete", - null, - "AQAAAD0CAAAAAAAAPQIAAAAAAAAEAAAAICAgIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAAQQIAAAAAAAAAAAAAAADwvw" - ], - [ - 505, - 1, - "insert", - { - "characters": "def" - }, - "AwAAAD0CAAAAAAAAPgIAAAAAAAAAAAAAPgIAAAAAAAA/AgAAAAAAAAAAAAA/AgAAAAAAAEACAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD0CAAAAAAAAPQIAAAAAAAAAAAAAAADwvw" - ], - [ - 506, - 1, - "insert", - { - "characters": " " - }, - "AQAAAEACAAAAAAAAQQIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEACAAAAAAAAQAIAAAAAAAAAAAAAAADwvw" - ], - [ - 507, - 1, - "insert", - { - "characters": "get" - }, - "AwAAAEECAAAAAAAAQgIAAAAAAAAAAAAAQgIAAAAAAABDAgAAAAAAAAAAAABDAgAAAAAAAEQCAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEECAAAAAAAAQQIAAAAAAAAAAAAAAADwvw" - ], - [ - 508, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAEQCAAAAAAAARgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEQCAAAAAAAARAIAAAAAAAAAAAAAAADwvw" - ], - [ - 509, - 1, - "insert", - { - "characters": "self" - }, - "BAAAAEUCAAAAAAAARgIAAAAAAAAAAAAARgIAAAAAAABHAgAAAAAAAAAAAABHAgAAAAAAAEgCAAAAAAAAAAAAAEgCAAAAAAAASQIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEUCAAAAAAAARQIAAAAAAAAAAAAAAADwvw" - ], - [ - 511, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAEoCAAAAAAAASwIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEoCAAAAAAAASgIAAAAAAAAAAAAAAADwvw" - ], - [ - 512, - 1, - "insert", - { - "characters": "\nreturn" - }, - "CQAAAEsCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABQAgAAAAAAAAAAAABQAgAAAAAAAFQCAAAAAAAAAAAAAFQCAAAAAAAAVQIAAAAAAAAAAAAAVQIAAAAAAABWAgAAAAAAAAAAAABWAgAAAAAAAFcCAAAAAAAAAAAAAFcCAAAAAAAAWAIAAAAAAAAAAAAAWAIAAAAAAABZAgAAAAAAAAAAAABZAgAAAAAAAFoCAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEsCAAAAAAAASwIAAAAAAAAAAAAAAADwvw" - ], - [ - 513, - 1, - "insert", - { - "characters": " sek" - }, - "BAAAAFoCAAAAAAAAWwIAAAAAAAAAAAAAWwIAAAAAAABcAgAAAAAAAAAAAABcAgAAAAAAAF0CAAAAAAAAAAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoCAAAAAAAAWgIAAAAAAAAAAAAAAADwvw" - ], - [ - 514, - 1, - "insert", - { - "characters": "f" - }, - "AQAAAF4CAAAAAAAAXwIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF4CAAAAAAAAXgIAAAAAAAAAAAAAAADwvw" - ], - [ - 515, - 2, - "left_delete", - null, - "AgAAAF4CAAAAAAAAXgIAAAAAAAABAAAAZl0CAAAAAAAAXQIAAAAAAAABAAAAaw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8CAAAAAAAAXwIAAAAAAAAAAAAAAADwvw" - ], - [ - 516, - 1, - "insert", - { - "characters": "lf.d" - }, - "BAAAAF0CAAAAAAAAXgIAAAAAAAAAAAAAXgIAAAAAAABfAgAAAAAAAAAAAABfAgAAAAAAAGACAAAAAAAAAAAAAGACAAAAAAAAYQIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF0CAAAAAAAAXQIAAAAAAAAAAAAAAADwvw" - ], - [ - 517, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"session_name\":\"LSP-pyright\",\"item\":{\"kind\":6,\"sortText\":\"05.0001.db_dal\",\"data\":{\"filePath\":\"/home/yannic/work/stacosys/stacosys/db/__init__.py\",\"position\":{\"line\":25,\"character\":21},\"symbolLabel\":\"db_dal\",\"workspacePath\":\"/home/yannic/work/stacosys\"},\"label\":\"db_dal\"}}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "db_dal" - }, - "AgAAAGACAAAAAAAAYAIAAAAAAAABAAAAZGACAAAAAAAAZgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGECAAAAAAAAYQIAAAAAAAAAAAAAAADwvw" - ], - [ - 524, - 1, - "insert", - { - "characters": "get" - }, - "BAAAAI0CAAAAAAAAjgIAAAAAAAAAAAAAjgIAAAAAAACOAgAAAAAAAAYAAABkYl9kYWyOAgAAAAAAAI8CAAAAAAAAAAAAAI8CAAAAAAAAkAIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0CAAAAAAAAkwIAAAAAAAAAAAAAAADwvw" - ], - [ - 525, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJACAAAAAAAAkAIAAAAAAAAAAAAAAADwvw" - ], - [ - 530, - 1, - "right_delete", - null, - "AQAAAJACAAAAAAAAkAIAAAAAAAACAAAAKCk", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJACAAAAAAAAkgIAAAAAAAD////////vfw" - ], - [ - 537, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAJACAAAAAAAAkgIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJACAAAAAAAAkAIAAAAAAAAAAAAAACBjQA" - ], - [ - 549, - 1, - "left_delete", - null, - "AQAAAIACAAAAAAAAgAIAAAAAAAABAAAAYg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIECAAAAAAAAgQIAAAAAAAAAAAAAAADwvw" - ], - [ - 550, - 1, - "insert", - { - "characters": "al" - }, - "AgAAAIACAAAAAAAAgQIAAAAAAAAAAAAAgQIAAAAAAACCAgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIACAAAAAAAAgAIAAAAAAAAAAAAAAADwvw" - ], - [ - 552, - 2, - "right_delete", - null, - "AgAAAJECAAAAAAAAkQIAAAAAAAABAAAAKJECAAAAAAAAkQIAAAAAAAABAAAAKQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJECAAAAAAAAkQIAAAAAAAAAAAAAAADwvw" - ], - [ - 559, - 1, - "insert", - { - "characters": "db" - }, - "AwAAAH8CAAAAAAAAgAIAAAAAAAAAAAAAgAIAAAAAAACAAgAAAAAAAAMAAABkYWyAAgAAAAAAAIECAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8CAAAAAAAAggIAAAAAAAAAAAAAAADwvw" - ], - [ - 577, - 1, - "insert", - { - "characters": "\n" - }, - "AQAAAH4CAAAAAAAAfwIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH4CAAAAAAAAfgIAAAAAAAAAAAAAAADwvw" - ], - [ - 581, - 1, - "insert", - { - "characters": "al" - }, - "AwAAAIECAAAAAAAAggIAAAAAAAAAAAAAggIAAAAAAACCAgAAAAAAAAEAAABiggIAAAAAAACDAgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIECAAAAAAAAggIAAAAAAAAAAAAAAADwvw" - ], - [ - 583, - 1, - "left_delete", - null, - "AQAAAH4CAAAAAAAAfgIAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAH8CAAAAAAAAfwIAAAAAAAAAAAAAAAA7QA" - ], - [ - 590, - 2, - "left_delete", - null, - "AgAAAIECAAAAAAAAgQIAAAAAAAABAAAAbIACAAAAAAAAgAIAAAAAAAABAAAAYQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIICAAAAAAAAggIAAAAAAAAAAAAAAADwvw" - ], - [ - 591, - 1, - "insert", - { - "characters": "b" - }, - "AQAAAIACAAAAAAAAgQIAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIACAAAAAAAAgAIAAAAAAAAAAAAAAADwvw" - ], - [ - 600, - 1, - "", - null, - "AQAAALQAAAAAAAAAwQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" - ], - [ - 602, - 1, - "insert", - { - "characters": "," - }, - "AQAAALQAAAAAAAAAtQAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQAAAAAAAAAtAAAAAAAAAAAAAAAAADwvw" - ], - [ - 603, - 1, - "insert", - { - "characters": " " - }, - "AQAAALUAAAAAAAAAtgAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALUAAAAAAAAAtQAAAAAAAAAAAAAAAADwvw" - ], - [ - 612, - 1, - "insert", - { - "characters": "True" - }, - "BQAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAUAAABGYWxzZb8AAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADBAAAAAAAAAAAAAADBAAAAAAAAAMIAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL4AAAAAAAAAwwAAAAAAAAAAAAAAAADwvw" - ], - [ - 623, - 1, - "insert", - { - "characters": "False" - }, - "BgAAAL4AAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAC/AAAAAAAAAAQAAABUcnVlvwAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMEAAAAAAAAAAAAAAMEAAAAAAAAAwgAAAAAAAAAAAAAAwgAAAAAAAADDAAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL4AAAAAAAAAwgAAAAAAAAAAAAAAAADwvw" - ], - [ - 14, - 1, - "insert", - { - "characters": "," - }, - "AQAAAJEAAAAAAAAAkgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACRAAAAAAAAAJEAAAAAAAAAAAAAAAAA8L8" - ], - [ - 15, - 1, - "insert", - { - "characters": " migra" - }, - "BgAAAJIAAAAAAAAAkwAAAAAAAAAAAAAAkwAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJUAAAAAAAAAAAAAAJUAAAAAAAAAlgAAAAAAAAAAAAAAlgAAAAAAAACXAAAAAAAAAAAAAACXAAAAAAAAAJgAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACSAAAAAAAAAJIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 16, - 1, - "insert", - { - "characters": "te" - }, - "AgAAAJgAAAAAAAAAmQAAAAAAAAAAAAAAmQAAAAAAAACaAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACYAAAAAAAAAJgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 17, - 1, - "insert", - { - "characters": "=False" - }, - "BgAAAJoAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACcAAAAAAAAAAAAAACcAAAAAAAAAJ0AAAAAAAAAAAAAAJ0AAAAAAAAAngAAAAAAAAAAAAAAngAAAAAAAACfAAAAAAAAAAAAAACfAAAAAAAAAKAAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 19, - 1, - "left_delete", - null, - "AQAAAJkAAAAAAAAAmQAAAAAAAAABAAAAZQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 20, - 1, - "insert", - { - "characters": "ion" - }, - "AwAAAJkAAAAAAAAAmgAAAAAAAAAAAAAAmgAAAAAAAACbAAAAAAAAAAAAAACbAAAAAAAAAJwAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 21, - 2, - "left_delete", - null, - "AgAAAJsAAAAAAAAAmwAAAAAAAAABAAAAbpoAAAAAAAAAmgAAAAAAAAABAAAAbw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAA8L8" - ], - [ - 22, - 1, - "insert", - { - "characters": "e" - }, - "AQAAAJoAAAAAAAAAmwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 23, - 2, - "left_delete", - null, - "AgAAAJoAAAAAAAAAmgAAAAAAAAABAAAAZZkAAAAAAAAAmQAAAAAAAAABAAAAaQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACbAAAAAAAAAJsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 24, - 1, - "insert", - { - "characters": "e" - }, - "AQAAAJkAAAAAAAAAmgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 28, - 1, - "insert", - { - "characters": "mir" - }, - "BAAAAM0AAAAAAAAAzgAAAAAAAAAAAAAAzgAAAAAAAADOAAAAAAAAAAUAAABGYWxzZc4AAAAAAAAAzwAAAAAAAAAAAAAAzwAAAAAAAADQAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADNAAAAAAAAANIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 29, - 1, - "left_delete", - null, - "AQAAAM8AAAAAAAAAzwAAAAAAAAABAAAAcg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADQAAAAAAAAANAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 30, - 1, - "insert", - { - "characters": "rgation" - }, - "BwAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA0AAAAAAAAADRAAAAAAAAAAAAAADRAAAAAAAAANIAAAAAAAAAAAAAANIAAAAAAAAA0wAAAAAAAAAAAAAA0wAAAAAAAADUAAAAAAAAAAAAAADUAAAAAAAAANUAAAAAAAAAAAAAANUAAAAAAAAA1gAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADPAAAAAAAAAM8AAAAAAAAAAAAAAAAA8L8" - ], - [ - 32, - 1, - "left_delete", - null, - "AQAAAM8AAAAAAAAAzwAAAAAAAAABAAAAcg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADQAAAAAAAAANAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 34, - 1, - "insert", - { - "characters": "r" - }, - "AQAAANAAAAAAAAAA0QAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADQAAAAAAAAANAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 43, - 1, - "insert", - { - "characters": "ion" - }, - "BAAAAJkAAAAAAAAAmgAAAAAAAAAAAAAAmgAAAAAAAACaAAAAAAAAAAEAAABlmgAAAAAAAACbAAAAAAAAAAAAAACbAAAAAAAAAJwAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 44, - 3, - "left_delete", - null, - "AwAAAJsAAAAAAAAAmwAAAAAAAAABAAAAbpoAAAAAAAAAmgAAAAAAAAABAAAAb5kAAAAAAAAAmQAAAAAAAAABAAAAaQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAA8L8" - ], - [ - 45, - 1, - "insert", - { - "characters": "e" - }, - "AQAAAJkAAAAAAAAAmgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACZAAAAAAAAAJkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 49, - 1, - "insert", - { - "characters": "e" - }, - "AgAAANMAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADUAAAAAAAAAAMAAABpb24", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTAAAAAAAAANYAAAAAAAAAAAAAAAAA8L8" - ], - [ - 59, - 1, - "right_delete", - null, - "AQAAAJEAAAAAAAAAkQAAAAAAAAAPAAAALCBtaWdyYXRlPUZhbHNl", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACRAAAAAAAAAKAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 63, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAAJMAAAAAAAAAlAAAAAAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACTAAAAAAAAAJMAAAAAAAAAAAAAAAAAckA" - ], - [ - 64, - 1, - "paste", - null, - "AQAAAJwAAAAAAAAAqQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAA8L8" - ], - [ - 66, - 1, - "insert", - { - "characters": "if" - }, - "AgAAAJwAAAAAAAAAnQAAAAAAAAAAAAAAnQAAAAAAAACeAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACcAAAAAAAAAJwAAAAAAAAAAAAAAAAAUkA" - ], - [ - 67, - 1, - "insert", - { - "characters": " db" - }, - "AwAAAJ4AAAAAAAAAnwAAAAAAAAAAAAAAnwAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAAKEAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeAAAAAAAAAJ4AAAAAAAAAAAAAAAAA8L8" - ], - [ - 68, - 1, - "insert", - { - "characters": "_uri" - }, - "BAAAAKEAAAAAAAAAogAAAAAAAAAAAAAAogAAAAAAAACjAAAAAAAAAAAAAACjAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAApQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAChAAAAAAAAAKEAAAAAAAAAAAAAAAAA8L8" - ], - [ - 69, - 1, - "insert", - { - "characters": ".st" - }, - "AwAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAACnAAAAAAAAAKgAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" - ], - [ - 70, - 1, - "insert", - { - "characters": " " - }, - "AQAAAKgAAAAAAAAAqQAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 72, - 1, - "insert", - { - "characters": "arts" - }, - "BAAAAKgAAAAAAAAAqQAAAAAAAAAAAAAAqQAAAAAAAACqAAAAAAAAAAAAAACqAAAAAAAAAKsAAAAAAAAAAAAAAKsAAAAAAAAArAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 73, - 1, - "left_delete", - null, - "AQAAAKsAAAAAAAAAqwAAAAAAAAABAAAAcw", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsAAAAAAAAAKwAAAAAAAAAAAAAAAAA8L8" - ], - [ - 74, - 1, - "insert", - { - "characters": "w" - }, - "AQAAAKsAAAAAAAAArAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAAAAAAAAAKsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 75, - 3, - "left_delete", - null, - "AwAAAKsAAAAAAAAAqwAAAAAAAAABAAAAd6oAAAAAAAAAqgAAAAAAAAABAAAAdKkAAAAAAAAAqQAAAAAAAAABAAAAcg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACsAAAAAAAAAKwAAAAAAAAAAAAAAAAA8L8" - ], - [ - 78, - 1, - "insert", - { - "characters": "\n\"" - }, - "AwAAAKoAAAAAAAAAqwAAAAAAAAAAAAAAqwAAAAAAAACzAAAAAAAAAAAAAACzAAAAAAAAALQAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACqAAAAAAAAAKoAAAAAAAAAAAAAAAAA8L8" - ], - [ - 79, - 1, - "left_delete", - null, - "AQAAALMAAAAAAAAAswAAAAAAAAABAAAAIg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC0AAAAAAAAALQAAAAAAAAAAAAAAAAA8L8" - ], - [ - 80, - 1, - "insert", - { - "characters": "#" - }, - "AQAAALMAAAAAAAAAtAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACzAAAAAAAAALMAAAAAAAAAAAAAAAAA8L8" - ], - [ - 83, - 4, - "left_delete", - null, - "BAAAAKgAAAAAAAAAqAAAAAAAAAABAAAAYacAAAAAAAAApwAAAAAAAAABAAAAdKYAAAAAAAAApgAAAAAAAAABAAAAc6UAAAAAAAAApQAAAAAAAAABAAAALg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACpAAAAAAAAAKkAAAAAAAAAAAAAAAAA8L8" - ], - [ - 84, - 1, - "insert", - { - "characters": ".st" - }, - "AwAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACnAAAAAAAAAAAAAACnAAAAAAAAAKgAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" - ], - [ - 85, - 1, - "insert", - { - "characters": "art" - }, - "AwAAAKgAAAAAAAAAqQAAAAAAAAAAAAAAqQAAAAAAAACqAAAAAAAAAAAAAACqAAAAAAAAAKsAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAAAAAAAAAKgAAAAAAAAAAAAAAAAA8L8" - ], - [ - 86, - 6, - "left_delete", - null, - "BgAAAKoAAAAAAAAAqgAAAAAAAAABAAAAdKkAAAAAAAAAqQAAAAAAAAABAAAAcqgAAAAAAAAAqAAAAAAAAAABAAAAYacAAAAAAAAApwAAAAAAAAABAAAAdKYAAAAAAAAApgAAAAAAAAABAAAAc6UAAAAAAAAApQAAAAAAAAABAAAALg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACrAAAAAAAAAKsAAAAAAAAAAAAAAAAA8L8" - ], - [ - 87, - 1, - "insert_snippet", - { - "contents": "[$0]" - }, - "AQAAAKUAAAAAAAAApwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKUAAAAAAAAAAAAAAAAA8L8" - ], - [ - 94, - 1, - "insert", - { - "characters": ".startswith" - }, - "DAAAAKUAAAAAAAAApgAAAAAAAAAAAAAApgAAAAAAAACmAAAAAAAAAAIAAABbXaYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAAqgAAAAAAAACrAAAAAAAAAAAAAACrAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAArQAAAAAAAAAAAAAArQAAAAAAAACuAAAAAAAAAAAAAACuAAAAAAAAAK8AAAAAAAAAAAAAAK8AAAAAAAAAsAAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAAAAAAAAAKcAAAAAAAAAAAAAAAAA8L8" - ], - [ - 95, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAALAAAAAAAAAAsgAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACwAAAAAAAAALAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 102, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAALEAAAAAAAAAswAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACxAAAAAAAAALEAAAAAAAAAAAAAAAAA8L8" - ], - [ - 103, - 1, - "paste", - null, - "AQAAALIAAAAAAAAAvwAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACyAAAAAAAAALIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 106, - 1, - "cut", - null, - "AQAAAJ8AAAAAAAAAnwAAAAAAAAAiAAAAZGJfdXJpLnN0YXJ0c3dpdGgoInNxbGl0ZTptZW1vcnkiKQ", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADBAAAAAAAAAJ8AAAAAAAAAAAAAAAAA8L8" - ], - [ - 111, - 1, - "paste", - null, - "AgAAAOIAAAAAAAAABAEAAAAAAAAAAAAABAEAAAAAAAAEAQAAAAAAAAcAAABtaWdyYXRl", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpAAAAAAAAAOIAAAAAAAAAAAAAAAAA8L8" - ], - [ - 115, - 1, - "right_delete", - null, - "AQAAAJQAAAAAAAAAlAAAAAAAAAAkAAAAICAgICAgICBpZiAgCiAgICAgICAgI3NxbGl0ZTptZW1vcnkK", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACUAAAAAAAAALgAAAAAAAAAAAAAAAAAAAA" - ] - ] - }, - { - "file": "tests/test_api.py", - "settings": - { - "buffer_size": 1625, - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 3, - 1, - "insert", - { - "characters": "," - }, - "AQAAAH4CAAAAAAAAfwIAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB+AgAAAAAAAH4CAAAAAAAAAAAAAAAA8L8" - ], - [ - 4, - 1, - "insert", - { - "characters": " " - }, - "AQAAAH8CAAAAAAAAgAIAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AgAAAAAAAH8CAAAAAAAAAAAAAAAA8L8" - ], - [ - 5, - 2, - "left_delete", - null, - "AgAAAH8CAAAAAAAAfwIAAAAAAAABAAAAIH4CAAAAAAAAfgIAAAAAAAABAAAALA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAAgAAAAAAAIACAAAAAAAAAAAAAAAA8L8" - ], - [ - 6, - 1, - "revert", - null, - "AgAAAAAAAAAAAAAAAAAAAAAAAAB3BgAAIyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiBVVEYtOCAtKi0KCmltcG9ydCBqc29uCmltcG9ydCBsb2dnaW5nCgppbXBvcnQgcHl0ZXN0Cgpmcm9tIHN0YWNvc3lzLmRiIGltcG9ydCBkYXRhYmFzZSwgZGFvCmZyb20gc3RhY29zeXMuaW50ZXJmYWNlIGltcG9ydCBhcGkKZnJvbSBzdGFjb3N5cy5pbnRlcmZhY2UgaW1wb3J0IGFwcAoKCmRlZiBpbml0X3Rlc3RfZGIoKToKICAgIGMxID0gZGFvLmNyZWF0ZV9jb21tZW50KCIvc2l0ZTEiLCAiQm9iIiwgIi9ib2Iuc2l0ZSIsICIiLCAiY29tbWVudCAxIikKICAgIGMyID0gZGFvLmNyZWF0ZV9jb21tZW50KCIvc2l0ZTIiLCAiQmlsbCIsICIvYmlsbC5zaXRlIiwgIiIsICJjb21tZW50IDIiKQogICAgYzMgPSBkYW8uY3JlYXRlX2NvbW1lbnQoIi9zaXRlMyIsICJKYWNrIiwgIi9qYWNrLnNpdGUiLCAiIiwgImNvbW1lbnQgMyIpCiAgICBkYW8ucHVibGlzaF9jb21tZW50KGMxKQogICAgZGFvLnB1Ymxpc2hfY29tbWVudChjMykKICAgIGFzc2VydCBjMgoKCkBweXRlc3QuZml4dHVyZQpkZWYgY2xpZW50KCk6CiAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKICAgIGRhdGFiYXNlLmNvbmZpZ3VyZSgic3FsaXRlOm1lbW9yeTovL2RiLnNxbGl0ZSIpCiAgICBpbml0X3Rlc3RfZGIoKQogICAgbG9nZ2VyLmluZm8oZiJzdGFydCBpbnRlcmZhY2Uge2FwaX0iKQogICAgcmV0dXJuIGFwcC50ZXN0X2NsaWVudCgpCgoKZGVmIHRlc3RfYXBpX3BpbmcoY2xpZW50KToKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL3BpbmciKQogICAgYXNzZXJ0IHJlc3AuZGF0YSA9PSBiIk9LIgoKCmRlZiB0ZXN0X2FwaV9jb3VudF9nbG9iYWwoY2xpZW50KToKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL2NvbW1lbnRzL2NvdW50IikKICAgIGQgPSBqc29uLmxvYWRzKHJlc3AuZGF0YSkKICAgIGFzc2VydCBkIGFuZCBkWyJjb3VudCJdID09IDIKCgpkZWYgdGVzdF9hcGlfY291bnRfdXJsKGNsaWVudCk6CiAgICByZXNwID0gY2xpZW50LmdldCgiL2FwaS9jb21tZW50cy9jb3VudD91cmw9L3NpdGUxIikKICAgIGQgPSBqc29uLmxvYWRzKHJlc3AuZGF0YSkKICAgIGFzc2VydCBkIGFuZCBkWyJjb3VudCJdID09IDEKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL2NvbW1lbnRzL2NvdW50P3VybD0vc2l0ZTIiKQogICAgZCA9IGpzb24ubG9hZHMocmVzcC5kYXRhKQogICAgYXNzZXJ0IGQgYW5kIGRbImNvdW50Il0gPT0gMAoKCmRlZiB0ZXN0X2FwaV9jb21tZW50KGNsaWVudCk6CiAgICByZXNwID0gY2xpZW50LmdldCgiL2FwaS9jb21tZW50cz91cmw9L3NpdGUxIikKICAgIGQgPSBqc29uLmxvYWRzKHJlc3AuZGF0YSkKICAgIGFzc2VydCBkIGFuZCBsZW4oZFsiZGF0YSJdKSA9PSAxCiAgICBjb21tZW50ID0gZFsiZGF0YSJdWzBdCiAgICBhc3NlcnQgY29tbWVudFsiYXV0aG9yIl0gPT0gIkJvYiIKICAgIGFzc2VydCBjb21tZW50WyJjb250ZW50Il0gPT0gImNvbW1lbnQgMSIKCgpkZWYgdGVzdF9hcGlfY29tbWVudF9ub3RfZm91bmQoY2xpZW50KToKICAgIHJlc3AgPSBjbGllbnQuZ2V0KCIvYXBpL2NvbW1lbnRzP3VybD0vc2l0ZTIiKQogICAgZCA9IGpzb24ubG9hZHMocmVzcC5kYXRhKQogICAgYXNzZXJ0IGQgYW5kIGRbImRhdGEiXSA9PSBbXQoAAAAAAAAAAFkGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAuwIAAAAAAAC7AgAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "tests/test_db.py", - "settings": - { - "buffer_size": 2740, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 7, - 1, - "insert", - { - "characters": " " - }, - "AQAAAHcAAAAAAAAAeAAAAAAAAAAAAAAA", - "AQAAAA" - ], - [ - 10, - 1, - "trim_trailing_white_space", - null, - "AQAAAHcAAAAAAAAAdwAAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAlQAAAAAAAACVAAAAAAAAAAAAAAAAAPC/" - ], - [ - 23, - 1, - "insert", - { - "characters": "\ndef" - }, - "BQAAAMwAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADNAAAAAAAAAAEAAAAKzQAAAAAAAADOAAAAAAAAAAAAAADOAAAAAAAAAM8AAAAAAAAAAAAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzQAAAAAAAADMAAAAAAAAAAAAAAAAAPC/" - ], - [ - 24, - 1, - "insert", - { - "characters": " test" - }, - "BQAAANAAAAAAAAAA0QAAAAAAAAAAAAAA0QAAAAAAAADSAAAAAAAAAAAAAADSAAAAAAAAANMAAAAAAAAAAAAAANMAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADVAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0AAAAAAAAADQAAAAAAAAAAAAAAAAAPC/" - ], - [ - 25, - 1, - "insert", - { - "characters": "_findc" - }, - "BgAAANUAAAAAAAAA1gAAAAAAAAAAAAAA1gAAAAAAAADXAAAAAAAAAAAAAADXAAAAAAAAANgAAAAAAAAAAAAAANgAAAAAAAAA2QAAAAAAAAAAAAAA2QAAAAAAAADaAAAAAAAAAAAAAADaAAAAAAAAANsAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1QAAAAAAAADVAAAAAAAAAAAAAAAAAPC/" - ], - [ - 26, - 1, - "left_delete", - null, - "AQAAANoAAAAAAAAA2gAAAAAAAAABAAAAYw", - "AQAAAAAAAAABAAAA2wAAAAAAAADbAAAAAAAAAAAAAAAAAPC/" - ], - [ - 27, - 1, - "insert", - { - "characters": "_comment_" - }, - "CQAAANoAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADcAAAAAAAAAAAAAADcAAAAAAAAAN0AAAAAAAAAAAAAAN0AAAAAAAAA3gAAAAAAAAAAAAAA3gAAAAAAAADfAAAAAAAAAAAAAADfAAAAAAAAAOAAAAAAAAAAAAAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADiAAAAAAAAAAAAAADiAAAAAAAAAOMAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2gAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" - ], - [ - 28, - 1, - "insert", - { - "characters": "by_id" - }, - "BQAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA5wAAAAAAAADoAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" - ], - [ - 29, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAOgAAAAAAAAA6gAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6AAAAAAAAADoAAAAAAAAAAAAAAAAAPC/" - ], - [ - 32, - 1, - "insert", - { - "characters": "sert" - }, - "BAAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA6gAAAAAAAADrAAAAAAAAAAAAAADrAAAAAAAAAOwAAAAAAAAAAAAAAOwAAAAAAAAA7QAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6QAAAAAAAADpAAAAAAAAAAAAAAAAAPC/" - ], - [ - 33, - 2, - "left_delete", - null, - "AgAAAOwAAAAAAAAA7AAAAAAAAAABAAAAdOsAAAAAAAAA6wAAAAAAAAABAAAAcg", - "AQAAAAAAAAABAAAA7QAAAAAAAADtAAAAAAAAAAAAAAAAAPC/" - ], - [ - 34, - 1, - "insert", - { - "characters": "t" - }, - "AQAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 35, - 1, - "insert_completion", - { - "completion": "setup_db", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "setup_db" - }, - "AgAAAOkAAAAAAAAA6QAAAAAAAAADAAAAc2V06QAAAAAAAADxAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA7AAAAAAAAADsAAAAAAAAAAAAAAAAAPC/" - ], - [ - 37, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAPIAAAAAAAAA8wAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA8gAAAAAAAADyAAAAAAAAAAAAAAAAAPC/" - ], - [ - 38, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAPMAAAAAAAAA9AAAAAAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA8wAAAAAAAADzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 48, - 1, - "insert", - { - "characters": "," - }, - "AgAAAPEAAAAAAAAA8gAAAAAAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAAQAAAAgICAg", - "AQAAAAAAAAABAAAA8QAAAAAAAADxAAAAAAAAAAAAAAAAAPC/" - ], - [ - 49, - 1, - "insert", - { - "characters": " f" - }, - "AgAAAPIAAAAAAAAA8wAAAAAAAAAAAAAA8wAAAAAAAAD0AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA8gAAAAAAAADyAAAAAAAAAAAAAAAAAPC/" - ], - [ - 50, - 1, - "left_delete", - null, - "AQAAAPMAAAAAAAAA8wAAAAAAAAABAAAAZg", - "AQAAAAAAAAABAAAA9AAAAAAAAAD0AAAAAAAAAAAAAAAAAPC/" - ], - [ - 51, - 2, - "left_delete", - null, - "AgAAAPIAAAAAAAAA8gAAAAAAAAABAAAAIPEAAAAAAAAA8QAAAAAAAAABAAAALA", - "AQAAAAAAAAABAAAA8wAAAAAAAADzAAAAAAAAAAAAAAAAAPC/" - ], - [ - 53, - 1, - "reindent", - null, - "AQAAAPQAAAAAAAAA+AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA9AAAAAAAAAD0AAAAAAAAAAAAAAAAQHRA" - ], - [ - 54, - 1, - "insert", - { - "characters": "asse" - }, - "BAAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAAAAAAD6AAAAAAAAAPsAAAAAAAAAAAAAAPsAAAAAAAAA/AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAAPC/" - ], - [ - 55, - 1, - "insert", - { - "characters": "rt" - }, - "AgAAAPwAAAAAAAAA/QAAAAAAAAAAAAAA/QAAAAAAAAD+AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/AAAAAAAAAD8AAAAAAAAAAAAAAAAAPC/" - ], - [ - 56, - 1, - "insert", - { - "characters": " " - }, - "AQAAAP4AAAAAAAAA/wAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/gAAAAAAAAD+AAAAAAAAAAAAAAAAAPC/" - ], - [ - 58, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAP8AAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAEAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 61, - 1, - "insert", - { - "characters": " " - }, - "AgAAAP8AAAAAAAAAAAEAAAAAAAAAAAAAAQEAAAAAAAABAQAAAAAAAAQAAAAgICAg", - "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 66, - 1, - "paste", - null, - "AQAAAP8AAAAAAAAAEQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 67, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAABEBAAAAAAAAEwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEQEAAAAAAAARAQAAAAAAAAAAAAAAAPC/" - ], - [ - 68, - 1, - "insert", - { - "characters": "1" - }, - "AQAAABIBAAAAAAAAEwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" - ], - [ - 73, - 1, - "insert", - { - "characters": "dao." - }, - "BAAAAP8AAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAABAQAAAAAAAAAAAAABAQAAAAAAAAIBAAAAAAAAAAAAAAIBAAAAAAAAAwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAPC/" - ], - [ - 75, - 1, - "trim_trailing_white_space", - null, - "AQAAABgBAAAAAAAAGAEAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAAwEAAAAAAAADAQAAAAAAAAAAAAAAAPC/" - ], - [ - 80, - 1, - "insert", - { - "characters": " is" - }, - "AwAAABgBAAAAAAAAGQEAAAAAAAAAAAAAGQEAAAAAAAAaAQAAAAAAAAAAAAAaAQAAAAAAABsBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGAEAAAAAAAAYAQAAAAAAAAAAAAAAAPC/" - ], - [ - 81, - 1, - "insert", - { - "characters": " None" - }, - "BQAAABsBAAAAAAAAHAEAAAAAAAAAAAAAHAEAAAAAAAAdAQAAAAAAAAAAAAAdAQAAAAAAAB4BAAAAAAAAAAAAAB4BAAAAAAAAHwEAAAAAAAAAAAAAHwEAAAAAAAAgAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGwEAAAAAAAAbAQAAAAAAAAAAAAAAAPC/" - ], - [ - 84, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAACABAAAAAAAAIQEAAAAAAAAAAAAAIQEAAAAAAAAlAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAIAEAAAAAAAAgAQAAAAAAAAAAAAAAAPC/" - ], - [ - 104, - 1, - "paste", - null, - "AQAAACUBAAAAAAAAYgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJQEAAAAAAAAlAQAAAAAAAAAAAAAAAPC/" - ], - [ - 106, - 1, - "insert", - { - "characters": "\nasser" - }, - "BwAAAGIBAAAAAAAAYwEAAAAAAAAAAAAAYwEAAAAAAABnAQAAAAAAAAAAAABnAQAAAAAAAGgBAAAAAAAAAAAAAGgBAAAAAAAAaQEAAAAAAAAAAAAAaQEAAAAAAABqAQAAAAAAAAAAAABqAQAAAAAAAGsBAAAAAAAAAAAAAGsBAAAAAAAAbAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYgEAAAAAAABiAQAAAAAAAAAAAAAAAPC/" - ], - [ - 107, - 1, - "insert", - { - "characters": "t" - }, - "AQAAAGwBAAAAAAAAbQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbAEAAAAAAABsAQAAAAAAAAAAAAAAAPC/" - ], - [ - 108, - 1, - "insert", - { - "characters": " " - }, - "AQAAAG0BAAAAAAAAbgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbQEAAAAAAABtAQAAAAAAAAAAAAAAAPC/" - ], - [ - 109, - 1, - "insert", - { - "characters": "c1." - }, - "AwAAAG4BAAAAAAAAbwEAAAAAAAAAAAAAbwEAAAAAAABwAQAAAAAAAAAAAABwAQAAAAAAAHEBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbgEAAAAAAABuAQAAAAAAAAAAAAAAAPC/" - ], - [ - 110, - 1, - "insert", - { - "characters": "id" - }, - "AgAAAHEBAAAAAAAAcgEAAAAAAAAAAAAAcgEAAAAAAABzAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcQEAAAAAAABxAQAAAAAAAAAAAAAAAPC/" - ], - [ - 111, - 1, - "insert", - { - "characters": " is" - }, - "AwAAAHMBAAAAAAAAdAEAAAAAAAAAAAAAdAEAAAAAAAB1AQAAAAAAAAAAAAB1AQAAAAAAAHYBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcwEAAAAAAABzAQAAAAAAAAAAAAAAAPC/" - ], - [ - 112, - 1, - "insert", - { - "characters": " not" - }, - "BAAAAHYBAAAAAAAAdwEAAAAAAAAAAAAAdwEAAAAAAAB4AQAAAAAAAAAAAAB4AQAAAAAAAHkBAAAAAAAAAAAAAHkBAAAAAAAAegEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdgEAAAAAAAB2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 113, - 1, - "insert", - { - "characters": " None" - }, - "BQAAAHoBAAAAAAAAewEAAAAAAAAAAAAAewEAAAAAAAB8AQAAAAAAAAAAAAB8AQAAAAAAAH0BAAAAAAAAAAAAAH0BAAAAAAAAfgEAAAAAAAAAAAAAfgEAAAAAAAB/AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAegEAAAAAAAB6AQAAAAAAAAAAAAAAAPC/" - ], - [ - 117, - 1, - "reindent", - null, - "AQAAAIABAAAAAAAAhAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAEAAAAAAACAAQAAAAAAAAAAAAAAgG9A" - ], - [ - 120, - 1, - "insert", - { - "characters": "c2" - }, - "AgAAAIQBAAAAAAAAhQEAAAAAAAAAAAAAhQEAAAAAAACGAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhAEAAAAAAACEAQAAAAAAAAAAAAAAAEJA" - ], - [ - 121, - 2, - "left_delete", - null, - "AgAAAIUBAAAAAAAAhQEAAAAAAAABAAAAMoQBAAAAAAAAhAEAAAAAAAABAAAAYw", - "AQAAAAAAAAABAAAAhgEAAAAAAACGAQAAAAAAAAAAAAAAAPC/" - ], - [ - 122, - 1, - "insert", - { - "characters": "rec" - }, - "AwAAAIQBAAAAAAAAhQEAAAAAAAAAAAAAhQEAAAAAAACGAQAAAAAAAAAAAACGAQAAAAAAAIcBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhAEAAAAAAACEAQAAAAAAAAAAAAAAAPC/" - ], - [ - 123, - 3, - "left_delete", - null, - "AwAAAIYBAAAAAAAAhgEAAAAAAAABAAAAY4UBAAAAAAAAhQEAAAAAAAABAAAAZYQBAAAAAAAAhAEAAAAAAAABAAAAcg", - "AQAAAAAAAAABAAAAhwEAAAAAAACHAQAAAAAAAAAAAAAAAPC/" - ], - [ - 124, - 1, - "insert", - { - "characters": "find_c1" - }, - "BwAAAIQBAAAAAAAAhQEAAAAAAAAAAAAAhQEAAAAAAACGAQAAAAAAAAAAAACGAQAAAAAAAIcBAAAAAAAAAAAAAIcBAAAAAAAAiAEAAAAAAAAAAAAAiAEAAAAAAACJAQAAAAAAAAAAAACJAQAAAAAAAIoBAAAAAAAAAAAAAIoBAAAAAAAAiwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhAEAAAAAAACEAQAAAAAAAAAAAAAAAPC/" - ], - [ - 125, - 1, - "insert", - { - "characters": " " - }, - "AgAAAIsBAAAAAAAAjAEAAAAAAAAAAAAAjAEAAAAAAACNAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiwEAAAAAAACLAQAAAAAAAAAAAAAAAPC/" - ], - [ - 126, - 1, - "left_delete", - null, - "AQAAAIwBAAAAAAAAjAEAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAAjQEAAAAAAACNAQAAAAAAAAAAAAAAAPC/" - ], - [ - 127, - 1, - "insert", - { - "characters": "=" - }, - "AQAAAIwBAAAAAAAAjQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjAEAAAAAAACMAQAAAAAAAAAAAAAAAPC/" - ], - [ - 128, - 1, - "insert", - { - "characters": " " - }, - "AQAAAI0BAAAAAAAAjgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQEAAAAAAACNAQAAAAAAAAAAAAAAAPC/" - ], - [ - 136, - 1, - "paste", - null, - "AQAAAI4BAAAAAAAApwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjgEAAAAAAACOAQAAAAAAAAAAAAAAQHRA" - ], - [ - 139, - 1, - "insert", - { - "characters": "c1.id" - }, - "BgAAAKUBAAAAAAAApgEAAAAAAAAAAAAApgEAAAAAAACmAQAAAAAAAAEAAAAxpgEAAAAAAACnAQAAAAAAAAAAAACnAQAAAAAAAKgBAAAAAAAAAAAAAKgBAAAAAAAAqQEAAAAAAAAAAAAAqQEAAAAAAACqAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAApgEAAAAAAAClAQAAAAAAAAAAAAAAAPC/" - ], - [ - 141, - 1, - "insert", - { - "characters": "\nassert" - }, - "CAAAAKsBAAAAAAAArAEAAAAAAAAAAAAArAEAAAAAAACwAQAAAAAAAAAAAACwAQAAAAAAALEBAAAAAAAAAAAAALEBAAAAAAAAsgEAAAAAAAAAAAAAsgEAAAAAAACzAQAAAAAAAAAAAACzAQAAAAAAALQBAAAAAAAAAAAAALQBAAAAAAAAtQEAAAAAAAAAAAAAtQEAAAAAAAC2AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqwEAAAAAAACrAQAAAAAAAAAAAAAAAPC/" - ], - [ - 142, - 1, - "insert", - { - "characters": " " - }, - "AQAAALYBAAAAAAAAtwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtgEAAAAAAAC2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 143, - 1, - "insert", - { - "characters": "find" - }, - "BAAAALcBAAAAAAAAuAEAAAAAAAAAAAAAuAEAAAAAAAC5AQAAAAAAAAAAAAC5AQAAAAAAALoBAAAAAAAAAAAAALoBAAAAAAAAuwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtwEAAAAAAAC3AQAAAAAAAAAAAAAAAPC/" - ], - [ - 144, - 1, - "insert", - { - "characters": "_c1" - }, - "AwAAALsBAAAAAAAAvAEAAAAAAAAAAAAAvAEAAAAAAAC9AQAAAAAAAAAAAAC9AQAAAAAAAL4BAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAuwEAAAAAAAC7AQAAAAAAAAAAAAAAAPC/" - ], - [ - 145, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"find_c1\",\"position\":{\"line\":17,\"character\":18},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"find_c1\",\"sortText\":\"09.9999.find_c1\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "find_c1" - }, - "AgAAALcBAAAAAAAAtwEAAAAAAAAHAAAAZmluZF9jMbcBAAAAAAAAvgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvgEAAAAAAAC+AQAAAAAAAAAAAAAAAPC/" - ], - [ - 146, - 1, - "insert", - { - "characters": "\n\n" - }, - "BQAAAL4BAAAAAAAAvwEAAAAAAAAAAAAAvwEAAAAAAADDAQAAAAAAAAAAAADDAQAAAAAAAMQBAAAAAAAAAAAAAMQBAAAAAAAAyAEAAAAAAAAAAAAAvwEAAAAAAAC/AQAAAAAAAAQAAAAgICAg", - "AQAAAAAAAAABAAAAvgEAAAAAAAC+AQAAAAAAAAAAAAAAAPC/" - ], - [ - 148, - 1, - "reindent", - null, - "AQAAAL8BAAAAAAAAwwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvwEAAAAAAAC/AQAAAAAAAAAAAAAAAEJA" - ], - [ - 149, - 1, - "insert", - { - "characters": "assert" - }, - "BwAAAMMBAAAAAAAAxAEAAAAAAAAAAAAAxQEAAAAAAADFAQAAAAAAAAQAAAAgICAgxAEAAAAAAADFAQAAAAAAAAAAAADFAQAAAAAAAMYBAAAAAAAAAAAAAMYBAAAAAAAAxwEAAAAAAAAAAAAAxwEAAAAAAADIAQAAAAAAAAAAAADIAQAAAAAAAMkBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwwEAAAAAAADDAQAAAAAAAAAAAAAAAPC/" - ], - [ - 150, - 1, - "insert", - { - "characters": " find_" - }, - "BgAAAMkBAAAAAAAAygEAAAAAAAAAAAAAygEAAAAAAADLAQAAAAAAAAAAAADLAQAAAAAAAMwBAAAAAAAAAAAAAMwBAAAAAAAAzQEAAAAAAAAAAAAAzQEAAAAAAADOAQAAAAAAAAAAAADOAQAAAAAAAM8BAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAyQEAAAAAAADJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 157, - 1, - "insert", - { - "characters": "c1.i" - }, - "BAAAAM8BAAAAAAAA0AEAAAAAAAAAAAAA0AEAAAAAAADRAQAAAAAAAAAAAADRAQAAAAAAANIBAAAAAAAAAAAAANIBAAAAAAAA0wEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzwEAAAAAAADPAQAAAAAAAAAAAAAAAPC/" - ], - [ - 158, - 1, - "insert", - { - "characters": "d" - }, - "AQAAANMBAAAAAAAA1AEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0wEAAAAAAADTAQAAAAAAAAAAAAAAAPC/" - ], - [ - 159, - 1, - "insert", - { - "characters": " " - }, - "AQAAANQBAAAAAAAA1QEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1AEAAAAAAADUAQAAAAAAAAAAAAAAAPC/" - ], - [ - 160, - 3, - "left_delete", - null, - "AwAAANQBAAAAAAAA1AEAAAAAAAABAAAAINMBAAAAAAAA0wEAAAAAAAABAAAAZNIBAAAAAAAA0gEAAAAAAAABAAAAaQ", - "AQAAAAAAAAABAAAA1QEAAAAAAADVAQAAAAAAAAAAAAAAAPC/" - ], - [ - 162, - 1, - "insert", - { - "characters": "id" - }, - "AgAAANIBAAAAAAAA0wEAAAAAAAAAAAAA0wEAAAAAAADUAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0gEAAAAAAADSAQAAAAAAAAAAAAAAAPC/" - ], - [ - 163, - 1, - "insert", - { - "characters": " =" - }, - "AgAAANQBAAAAAAAA1QEAAAAAAAAAAAAA1QEAAAAAAADWAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1AEAAAAAAADUAQAAAAAAAAAAAAAAAPC/" - ], - [ - 164, - 1, - "insert", - { - "characters": " c1." - }, - "BAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA1wEAAAAAAADYAQAAAAAAAAAAAADYAQAAAAAAANkBAAAAAAAAAAAAANkBAAAAAAAA2gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1gEAAAAAAADWAQAAAAAAAAAAAAAAAPC/" - ], - [ - 165, - 1, - "insert", - { - "characters": "id" - }, - "AgAAANoBAAAAAAAA2wEAAAAAAAAAAAAA2wEAAAAAAADcAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2gEAAAAAAADaAQAAAAAAAAAAAAAAAPC/" - ], - [ - 166, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAANwBAAAAAAAA3QEAAAAAAAAAAAAA3QEAAAAAAADhAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3AEAAAAAAADcAQAAAAAAAAAAAAAAAPC/" - ], - [ - 168, - 1, - "trim_trailing_white_space", - null, - "AQAAAN0BAAAAAAAA3QEAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAA4QEAAAAAAADhAQAAAAAAAAAAAAAAAPC/" - ], - [ - 172, - 1, - "insert", - { - "characters": "=" - }, - "AQAAANUBAAAAAAAA1gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1QEAAAAAAADVAQAAAAAAAAAAAAAAAPC/" - ], - [ - 178, - 1, - "insert", - { - "characters": "\ndef" - }, - "BAAAAMwAAAAAAAAAzQAAAAAAAAAAAAAAzQAAAAAAAADOAAAAAAAAAAAAAADOAAAAAAAAAM8AAAAAAAAAAAAAAM8AAAAAAAAA0AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzAAAAAAAAADMAAAAAAAAAAAAAAAA4GlA" - ], - [ - 179, - 1, - "insert", - { - "characters": " " - }, - "AQAAANAAAAAAAAAA0QAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0AAAAAAAAADQAAAAAAAAAAAAAAAAAPC/" - ], - [ - 180, - 1, - "insert", - { - "characters": "is_" - }, - "AwAAANEAAAAAAAAA0gAAAAAAAAAAAAAA0gAAAAAAAADTAAAAAAAAAAAAAADTAAAAAAAAANQAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0QAAAAAAAADRAAAAAAAAAAAAAAAAAPC/" - ], - [ - 181, - 3, - "left_delete", - null, - "AwAAANMAAAAAAAAA0wAAAAAAAAABAAAAX9IAAAAAAAAA0gAAAAAAAAABAAAAc9EAAAAAAAAA0QAAAAAAAAABAAAAaQ", - "AQAAAAAAAAABAAAA1AAAAAAAAADUAAAAAAAAAAAAAAAAAPC/" - ], - [ - 182, - 1, - "insert", - { - "characters": "equals_" - }, - "BwAAANEAAAAAAAAA0gAAAAAAAAAAAAAA0gAAAAAAAADTAAAAAAAAAAAAAADTAAAAAAAAANQAAAAAAAAAAAAAANQAAAAAAAAA1QAAAAAAAAAAAAAA1QAAAAAAAADWAAAAAAAAAAAAAADWAAAAAAAAANcAAAAAAAAAAAAAANcAAAAAAAAA2AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0QAAAAAAAADRAAAAAAAAAAAAAAAAAPC/" - ], - [ - 183, - 1, - "insert", - { - "characters": "oco" - }, - "AwAAANgAAAAAAAAA2QAAAAAAAAAAAAAA2QAAAAAAAADaAAAAAAAAAAAAAADaAAAAAAAAANsAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2AAAAAAAAADYAAAAAAAAAAAAAAAAAPC/" - ], - [ - 184, - 3, - "left_delete", - null, - "AwAAANoAAAAAAAAA2gAAAAAAAAABAAAAb9kAAAAAAAAA2QAAAAAAAAABAAAAY9gAAAAAAAAA2AAAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAA2wAAAAAAAADbAAAAAAAAAAAAAAAAAPC/" - ], - [ - 185, - 1, - "insert", - { - "characters": "coù" - }, - "AwAAANgAAAAAAAAA2QAAAAAAAAAAAAAA2QAAAAAAAADaAAAAAAAAAAAAAADaAAAAAAAAANsAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2AAAAAAAAADYAAAAAAAAAAAAAAAAAPC/" - ], - [ - 186, - 1, - "left_delete", - null, - "AQAAANoAAAAAAAAA2gAAAAAAAAACAAAAw7k", - "AQAAAAAAAAABAAAA2wAAAAAAAADbAAAAAAAAAAAAAAAAAPC/" - ], - [ - 187, - 1, - "insert", - { - "characters": "mment" - }, - "BQAAANoAAAAAAAAA2wAAAAAAAAAAAAAA2wAAAAAAAADcAAAAAAAAAAAAAADcAAAAAAAAAN0AAAAAAAAAAAAAAN0AAAAAAAAA3gAAAAAAAAAAAAAA3gAAAAAAAADfAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2gAAAAAAAADaAAAAAAAAAAAAAAAAAPC/" - ], - [ - 188, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAN8AAAAAAAAA4QAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3wAAAAAAAADfAAAAAAAAAAAAAAAAAPC/" - ], - [ - 189, - 1, - "insert", - { - "characters": "c" - }, - "AQAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4AAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" - ], - [ - 190, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAOEAAAAAAAAA4gAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4QAAAAAAAADhAAAAAAAAAAAAAAAAAPC/" - ], - [ - 191, - 1, - "insert", - { - "characters": " c" - }, - "AgAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA4wAAAAAAAADkAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" - ], - [ - 192, - 1, - "left_delete", - null, - "AQAAAOMAAAAAAAAA4wAAAAAAAAABAAAAYw", - "AQAAAAAAAAABAAAA5AAAAAAAAADkAAAAAAAAAAAAAAAAAPC/" - ], - [ - 193, - 1, - "insert", - { - "characters": "Comment," - }, - "CAAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA5wAAAAAAAADoAAAAAAAAAAAAAADoAAAAAAAAAOkAAAAAAAAAAAAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA6gAAAAAAAADrAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" - ], - [ - 194, - 1, - "insert", - { - "characters": " " - }, - "AQAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6wAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 206, - 1, - "right_delete", - null, - "AQAAAOEAAAAAAAAA4QAAAAAAAAAJAAAAOiBDb21tZW50", - "AQAAAAAAAAABAAAA6gAAAAAAAADhAAAAAAAAAAAAAAAAAPC/" - ], - [ - 208, - 1, - "insert", - { - "characters": "c1," - }, - "BAAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADhAAAAAAAAAAEAAABj4QAAAAAAAADiAAAAAAAAAAAAAADiAAAAAAAAAOMAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4QAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" - ], - [ - 209, - 1, - "insert", - { - "characters": " c2" - }, - "AwAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" - ], - [ - 210, - 2, - "right_delete", - null, - "AgAAAOYAAAAAAAAA5gAAAAAAAAABAAAALOYAAAAAAAAA5gAAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAA5gAAAAAAAADmAAAAAAAAAAAAAAAAAPC/" - ], - [ - 218, - 1, - "insert", - { - "characters": "com" - }, - "BAAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADhAAAAAAAAAAIAAABjMeEAAAAAAAAA4gAAAAAAAAAAAAAA4gAAAAAAAADjAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4gAAAAAAAADgAAAAAAAAAAAAAAAAAPC/" - ], - [ - 219, - 1, - "left_delete", - null, - "AQAAAOIAAAAAAAAA4gAAAAAAAAABAAAAbQ", - "AQAAAAAAAAABAAAA4wAAAAAAAADjAAAAAAAAAAAAAAAAAPC/" - ], - [ - 220, - 1, - "insert", - { - "characters": "mment" - }, - "BQAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA4wAAAAAAAADkAAAAAAAAAAAAAADkAAAAAAAAAOUAAAAAAAAAAAAAAOUAAAAAAAAA5gAAAAAAAAAAAAAA5gAAAAAAAADnAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAPC/" - ], - [ - 227, - 1, - "insert", - { - "characters": "other" - }, - "BgAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA6gAAAAAAAADqAAAAAAAAAAIAAABjMuoAAAAAAAAA6wAAAAAAAAAAAAAA6wAAAAAAAADsAAAAAAAAAAAAAADsAAAAAAAAAO0AAAAAAAAAAAAAAO0AAAAAAAAA7gAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6QAAAAAAAADrAAAAAAAAAAAAAAAAAPC/" - ], - [ - 229, - 1, - "insert", - { - "characters": ":" - }, - "AQAAAO8AAAAAAAAA8AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA7wAAAAAAAADvAAAAAAAAAAAAAAAAAPC/" - ], - [ - 230, - 1, - "insert", - { - "characters": "\nret" - }, - "BQAAAPAAAAAAAAAA8QAAAAAAAAAAAAAA8QAAAAAAAAD1AAAAAAAAAAAAAAD1AAAAAAAAAPYAAAAAAAAAAAAAAPYAAAAAAAAA9wAAAAAAAAAAAAAA9wAAAAAAAAD4AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA8AAAAAAAAADwAAAAAAAAAAAAAAAAAPC/" - ], - [ - 231, - 1, - "insert", - { - "characters": "urn" - }, - "AwAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAAAAAAD6AAAAAAAAAPsAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAAPC/" - ], - [ - 232, - 1, - "insert", - { - "characters": " comment" - }, - "CAAAAPsAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAD9AAAAAAAAAAAAAAD9AAAAAAAAAP4AAAAAAAAAAAAAAP4AAAAAAAAA/wAAAAAAAAAAAAAA/wAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAAAAAAEBAAAAAAAAAgEAAAAAAAAAAAAAAgEAAAAAAAADAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA+wAAAAAAAAD7AAAAAAAAAAAAAAAAAPC/" - ], - [ - 233, - 1, - "insert", - { - "characters": ".id" - }, - "AwAAAAMBAAAAAAAABAEAAAAAAAAAAAAABAEAAAAAAAAFAQAAAAAAAAAAAAAFAQAAAAAAAAYBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAAwEAAAAAAAADAQAAAAAAAAAAAAAAAPC/" - ], - [ - 234, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAAYBAAAAAAAABwEAAAAAAAAAAAAABwEAAAAAAAAIAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAABgEAAAAAAAAGAQAAAAAAAAAAAAAAAPC/" - ], - [ - 235, - 1, - "insert", - { - "characters": " " - }, - "AQAAAAgBAAAAAAAACQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACAEAAAAAAAAIAQAAAAAAAAAAAAAAAPC/" - ], - [ - 236, - 1, - "left_delete", - null, - "AQAAAAgBAAAAAAAACAEAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAACQEAAAAAAAAJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 237, - 1, - "insert", - { - "characters": "=" - }, - "AQAAAAgBAAAAAAAACQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACAEAAAAAAAAIAQAAAAAAAAAAAAAAAPC/" - ], - [ - 238, - 1, - "insert", - { - "characters": " other.id" - }, - "CQAAAAkBAAAAAAAACgEAAAAAAAAAAAAACgEAAAAAAAALAQAAAAAAAAAAAAALAQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADQEAAAAAAAAAAAAADQEAAAAAAAAOAQAAAAAAAAAAAAAOAQAAAAAAAA8BAAAAAAAAAAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAARAQAAAAAAABIBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACQEAAAAAAAAJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 239, - 1, - "insert", - { - "characters": " " - }, - "AQAAABIBAAAAAAAAEwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" - ], - [ - 240, - 1, - "insert", - { - "characters": "\nand" - }, - "BQAAABMBAAAAAAAAFAEAAAAAAAAAAAAAFAEAAAAAAAAYAQAAAAAAAAAAAAAYAQAAAAAAABkBAAAAAAAAAAAAABkBAAAAAAAAGgEAAAAAAAAAAAAAGgEAAAAAAAAbAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEwEAAAAAAAATAQAAAAAAAAAAAAAAAPC/" - ], - [ - 241, - 1, - "insert", - { - "characters": " " - }, - "AQAAABsBAAAAAAAAHAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGwEAAAAAAAAbAQAAAAAAAAAAAAAAAPC/" - ], - [ - 244, - 1, - "insert", - { - "characters": "comment." - }, - "CAAAABwBAAAAAAAAHQEAAAAAAAAAAAAAHQEAAAAAAAAeAQAAAAAAAAAAAAAeAQAAAAAAAB8BAAAAAAAAAAAAAB8BAAAAAAAAIAEAAAAAAAAAAAAAIAEAAAAAAAAhAQAAAAAAAAAAAAAhAQAAAAAAACIBAAAAAAAAAAAAACIBAAAAAAAAIwEAAAAAAAAAAAAAIwEAAAAAAAAkAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAHAEAAAAAAAAcAQAAAAAAAAAAAAAAAPC/" - ], - [ - 248, - 1, - "insert", - { - "characters": "\nfrom" - }, - "BQAAAHYAAAAAAAAAdwAAAAAAAAAAAAAAdwAAAAAAAAB4AAAAAAAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAAAAAAHkAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAB7AAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdgAAAAAAAAB2AAAAAAAAAAAAAAAAAPC/" - ], - [ - 249, - 1, - "insert", - { - "characters": " stacoys" - }, - "CAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAAAAAAAfwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAIEAAAAAAAAAAAAAAIEAAAAAAAAAggAAAAAAAAAAAAAAggAAAAAAAACDAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAewAAAAAAAAB7AAAAAAAAAAAAAAAAAPC/" - ], - [ - 250, - 3, - "left_delete", - null, - "AwAAAIIAAAAAAAAAggAAAAAAAAABAAAAc4EAAAAAAAAAgQAAAAAAAAABAAAAeYAAAAAAAAAAgAAAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAAgwAAAAAAAACDAAAAAAAAAAAAAAAAAPC/" - ], - [ - 251, - 1, - "insert", - { - "characters": "osys.co" - }, - "BwAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACFAAAAAAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAAAAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAPC/" - ], - [ - 252, - 1, - "insert", - { - "characters": "mm" - }, - "AgAAAIcAAAAAAAAAiAAAAAAAAAAAAAAAiAAAAAAAAACJAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" - ], - [ - 253, - 3, - "left_delete", - null, - "AwAAAIgAAAAAAAAAiAAAAAAAAAABAAAAbYcAAAAAAAAAhwAAAAAAAAABAAAAbYYAAAAAAAAAhgAAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAAiQAAAAAAAACJAAAAAAAAAAAAAAAAAPC/" - ], - [ - 254, - 1, - "insert", - { - "characters": "m" - }, - "AQAAAIYAAAAAAAAAhwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhgAAAAAAAACGAAAAAAAAAAAAAAAAAPC/" - ], - [ - 255, - 2, - "left_delete", - null, - "AgAAAIYAAAAAAAAAhgAAAAAAAAABAAAAbYUAAAAAAAAAhQAAAAAAAAABAAAAYw", - "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" - ], - [ - 256, - 1, - "insert", - { - "characters": "mop" - }, - "AwAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACHAAAAAAAAAAAAAACHAAAAAAAAAIgAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQAAAAAAAACFAAAAAAAAAAAAAAAAAPC/" - ], - [ - 257, - 1, - "left_delete", - null, - "AQAAAIcAAAAAAAAAhwAAAAAAAAABAAAAcA", - "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" - ], - [ - 258, - 1, - "insert", - { - "characters": "d" - }, - "AQAAAIcAAAAAAAAAiAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhwAAAAAAAACHAAAAAAAAAAAAAAAAAPC/" - ], - [ - 259, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"label\":\"model\",\"sortText\":\"02.9999.model\",\"kind\":9},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "model" - }, - "AgAAAIUAAAAAAAAAhQAAAAAAAAADAAAAbW9khQAAAAAAAACKAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiAAAAAAAAACIAAAAAAAAAAAAAAAAAPC/" - ], - [ - 260, - 1, - "insert", - { - "characters": "i" - }, - "AQAAAIoAAAAAAAAAiwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" - ], - [ - 261, - 1, - "left_delete", - null, - "AQAAAIoAAAAAAAAAigAAAAAAAAABAAAAaQ", - "AQAAAAAAAAABAAAAiwAAAAAAAACLAAAAAAAAAAAAAAAAAPC/" - ], - [ - 262, - 1, - "insert", - { - "characters": " imort" - }, - "BgAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAACMAAAAAAAAAI0AAAAAAAAAAAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" - ], - [ - 263, - 1, - "insert", - { - "characters": " " - }, - "AQAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAAPC/" - ], - [ - 264, - 4, - "left_delete", - null, - "BAAAAJAAAAAAAAAAkAAAAAAAAAABAAAAII8AAAAAAAAAjwAAAAAAAAABAAAAdI4AAAAAAAAAjgAAAAAAAAABAAAAco0AAAAAAAAAjQAAAAAAAAABAAAAbw", - "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" - ], - [ - 265, - 1, - "insert", - { - "characters": "port" - }, - "BAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAjQAAAAAAAACNAAAAAAAAAAAAAAAAAPC/" - ], - [ - 266, - 1, - "insert", - { - "characters": " " - }, - "AQAAAJEAAAAAAAAAkgAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkQAAAAAAAACRAAAAAAAAAAAAAAAAAPC/" - ], - [ - 267, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"comment\",\"position\":{\"line\":7,\"character\":27},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"comment\",\"sortText\":\"09.9999.comment\",\"kind\":9},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "comment" - }, - "AQAAAJIAAAAAAAAAmQAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAkgAAAAAAAACSAAAAAAAAAAAAAAAAAPC/" - ], - [ - 274, - 1, - "insert", - { - "characters": ".comment" - }, - "CAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAACMAAAAAAAAAI0AAAAAAAAAAAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAJAAAAAAAAAAkQAAAAAAAAAAAAAAkQAAAAAAAACSAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAigAAAAAAAACKAAAAAAAAAAAAAAAAAPC/" - ], - [ - 280, - 1, - "insert", - { - "characters": "C" - }, - "AgAAAJoAAAAAAAAAmwAAAAAAAAAAAAAAmwAAAAAAAACbAAAAAAAAAAEAAABj", - "AQAAAAAAAAABAAAAmwAAAAAAAACaAAAAAAAAAAAAAAAAAPC/" - ], - [ - 284, - 1, - "insert", - { - "characters": " :" - }, - "AgAAABIBAAAAAAAAEwEAAAAAAAAAAAAAEwEAAAAAAAAUAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEgEAAAAAAAASAQAAAAAAAAAAAAAAAPC/" - ], - [ - 285, - 1, - "insert", - { - "characters": " Comment" - }, - "CAAAABQBAAAAAAAAFQEAAAAAAAAAAAAAFQEAAAAAAAAWAQAAAAAAAAAAAAAWAQAAAAAAABcBAAAAAAAAAAAAABcBAAAAAAAAGAEAAAAAAAAAAAAAGAEAAAAAAAAZAQAAAAAAAAAAAAAZAQAAAAAAABoBAAAAAAAAAAAAABoBAAAAAAAAGwEAAAAAAAAAAAAAGwEAAAAAAAAcAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAFAEAAAAAAAAUAQAAAAAAAAAAAAAAAPC/" - ], - [ - 289, - 1, - "right_delete", - null, - "AQAAAEkBAAAAAAAASQEAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAATQEAAAAAAABJAQAAAAAAAAAAAAAAAAAA" - ], - [ - 290, - 1, - "left_delete", - null, - "AQAAAEgBAAAAAAAASAEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 293, - 1, - "left_delete", - null, - "AQAAAFMBAAAAAAAAUwEAAAAAAAABAAAALg", - "AQAAAAAAAAABAAAAVAEAAAAAAABUAQAAAAAAAAAAAAAAAPC/" - ], - [ - 294, - 1, - "insert", - { - "characters": "." - }, - "AQAAAFMBAAAAAAAAVAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUwEAAAAAAABTAQAAAAAAAAAAAAAAAPC/" - ], - [ - 295, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"author_gravatar\",\"position\":{\"line\":14,\"character\":46},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"author_gravatar\",\"sortText\":\"09.9999.author_gravatar\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "author_gravatar" - }, - "AQAAAFQBAAAAAAAAYwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVAEAAAAAAABUAQAAAAAAAAAAAAAAAPC/" - ], - [ - 296, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAAGMBAAAAAAAAZAEAAAAAAAAAAAAAZAEAAAAAAABlAQAAAAAAAAAAAABlAQAAAAAAAGYBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYwEAAAAAAABjAQAAAAAAAAAAAAAAAPC/" - ], - [ - 297, - 1, - "insert", - { - "characters": " other.a" - }, - "CAAAAGYBAAAAAAAAZwEAAAAAAAAAAAAAZwEAAAAAAABoAQAAAAAAAAAAAABoAQAAAAAAAGkBAAAAAAAAAAAAAGkBAAAAAAAAagEAAAAAAAAAAAAAagEAAAAAAABrAQAAAAAAAAAAAABrAQAAAAAAAGwBAAAAAAAAAAAAAGwBAAAAAAAAbQEAAAAAAAAAAAAAbQEAAAAAAABuAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAZgEAAAAAAABmAQAAAAAAAAAAAAAAAPC/" - ], - [ - 298, - 1, - "insert_completion", - { - "completion": "author_gravatar", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "author_gravatar" - }, - "AgAAAG0BAAAAAAAAbQEAAAAAAAABAAAAYW0BAAAAAAAAfAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbgEAAAAAAABuAQAAAAAAAAAAAAAAAPC/" - ], - [ - 299, - 1, - "insert", - { - "characters": " and" - }, - "BAAAAHwBAAAAAAAAfQEAAAAAAAAAAAAAfQEAAAAAAAB+AQAAAAAAAAAAAAB+AQAAAAAAAH8BAAAAAAAAAAAAAH8BAAAAAAAAgAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfAEAAAAAAAB8AQAAAAAAAAAAAAAAAPC/" - ], - [ - 300, - 1, - "insert", - { - "characters": " comment." - }, - "CQAAAIABAAAAAAAAgQEAAAAAAAAAAAAAgQEAAAAAAACCAQAAAAAAAAAAAACCAQAAAAAAAIMBAAAAAAAAAAAAAIMBAAAAAAAAhAEAAAAAAAAAAAAAhAEAAAAAAACFAQAAAAAAAAAAAACFAQAAAAAAAIYBAAAAAAAAAAAAAIYBAAAAAAAAhwEAAAAAAAAAAAAAhwEAAAAAAACIAQAAAAAAAAAAAACIAQAAAAAAAIkBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgAEAAAAAAACAAQAAAAAAAAAAAAAAAPC/" - ], - [ - 302, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"author_name\",\"position\":{\"line\":14,\"character\":99},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"author_name\",\"sortText\":\"09.9999.author_name\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "author_name" - }, - "AQAAAIkBAAAAAAAAlAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiQEAAAAAAACJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 303, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAAJQBAAAAAAAAlQEAAAAAAAAAAAAAlQEAAAAAAACWAQAAAAAAAAAAAACWAQAAAAAAAJcBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlAEAAAAAAACUAQAAAAAAAAAAAAAAAPC/" - ], - [ - 304, - 1, - "insert", - { - "characters": " other." - }, - "BwAAAJcBAAAAAAAAmAEAAAAAAAAAAAAAmAEAAAAAAACZAQAAAAAAAAAAAACZAQAAAAAAAJoBAAAAAAAAAAAAAJoBAAAAAAAAmwEAAAAAAAAAAAAAmwEAAAAAAACcAQAAAAAAAAAAAACcAQAAAAAAAJ0BAAAAAAAAAAAAAJ0BAAAAAAAAngEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAlwEAAAAAAACXAQAAAAAAAAAAAAAAAPC/" - ], - [ - 305, - 1, - "insert", - { - "characters": "a" - }, - "AQAAAJ4BAAAAAAAAnwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAngEAAAAAAACeAQAAAAAAAAAAAAAAAPC/" - ], - [ - 306, - 1, - "insert_completion", - { - "completion": "author_name", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "author_name" - }, - "AgAAAJ4BAAAAAAAAngEAAAAAAAABAAAAYZ4BAAAAAAAAqQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAnwEAAAAAAACfAQAAAAAAAAAAAAAAAPC/" - ], - [ - 307, - 1, - "insert", - { - "characters": " and" - }, - "BAAAAKkBAAAAAAAAqgEAAAAAAAAAAAAAqgEAAAAAAACrAQAAAAAAAAAAAACrAQAAAAAAAKwBAAAAAAAAAAAAAKwBAAAAAAAArQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqQEAAAAAAACpAQAAAAAAAAAAAAAAAPC/" - ], - [ - 308, - 1, - "insert", - { - "characters": " comment." - }, - "CQAAAK0BAAAAAAAArgEAAAAAAAAAAAAArgEAAAAAAACvAQAAAAAAAAAAAACvAQAAAAAAALABAAAAAAAAAAAAALABAAAAAAAAsQEAAAAAAAAAAAAAsQEAAAAAAACyAQAAAAAAAAAAAACyAQAAAAAAALMBAAAAAAAAAAAAALMBAAAAAAAAtAEAAAAAAAAAAAAAtAEAAAAAAAC1AQAAAAAAAAAAAAC1AQAAAAAAALYBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAArQEAAAAAAACtAQAAAAAAAAAAAAAAAPC/" - ], - [ - 311, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"author_site\",\"position\":{\"line\":14,\"character\":144},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"author_site\",\"sortText\":\"09.9999.author_site\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "author_site" - }, - "AQAAALYBAAAAAAAAwQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtgEAAAAAAAC2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 312, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAAMEBAAAAAAAAwgEAAAAAAAAAAAAAwgEAAAAAAADDAQAAAAAAAAAAAADDAQAAAAAAAMQBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwQEAAAAAAADBAQAAAAAAAAAAAAAAAPC/" - ], - [ - 313, - 1, - "insert", - { - "characters": " other." - }, - "BwAAAMQBAAAAAAAAxQEAAAAAAAAAAAAAxQEAAAAAAADGAQAAAAAAAAAAAADGAQAAAAAAAMcBAAAAAAAAAAAAAMcBAAAAAAAAyAEAAAAAAAAAAAAAyAEAAAAAAADJAQAAAAAAAAAAAADJAQAAAAAAAMoBAAAAAAAAAAAAAMoBAAAAAAAAywEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxAEAAAAAAADEAQAAAAAAAAAAAAAAAPC/" - ], - [ - 314, - 1, - "insert", - { - "characters": "ai" - }, - "AgAAAMsBAAAAAAAAzAEAAAAAAAAAAAAAzAEAAAAAAADNAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAywEAAAAAAADLAQAAAAAAAAAAAAAAAPC/" - ], - [ - 315, - 1, - "insert_completion", - { - "completion": "author_site", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "author_site" - }, - "AgAAAMsBAAAAAAAAywEAAAAAAAACAAAAYWnLAQAAAAAAANYBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAzQEAAAAAAADNAQAAAAAAAAAAAAAAAPC/" - ], - [ - 316, - 1, - "insert", - { - "characters": " and" - }, - "BAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA1wEAAAAAAADYAQAAAAAAAAAAAADYAQAAAAAAANkBAAAAAAAAAAAAANkBAAAAAAAA2gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1gEAAAAAAADWAQAAAAAAAAAAAAAAAPC/" - ], - [ - 317, - 1, - "insert", - { - "characters": " comment." - }, - "CQAAANoBAAAAAAAA2wEAAAAAAAAAAAAA2wEAAAAAAADcAQAAAAAAAAAAAADcAQAAAAAAAN0BAAAAAAAAAAAAAN0BAAAAAAAA3gEAAAAAAAAAAAAA3gEAAAAAAADfAQAAAAAAAAAAAADfAQAAAAAAAOABAAAAAAAAAAAAAOABAAAAAAAA4QEAAAAAAAAAAAAA4QEAAAAAAADiAQAAAAAAAAAAAADiAQAAAAAAAOMBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2gEAAAAAAADaAQAAAAAAAAAAAAAAAPC/" - ], - [ - 323, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"content\",\"position\":{\"line\":14,\"character\":189},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"content\",\"sortText\":\"09.9999.content\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "content" - }, - "AQAAAOMBAAAAAAAA6gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4wEAAAAAAADjAQAAAAAAAAAAAAAAAPC/" - ], - [ - 324, - 1, - "insert", - { - "characters": " =" - }, - "AgAAAOoBAAAAAAAA6wEAAAAAAAAAAAAA6wEAAAAAAADsAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6gEAAAAAAADqAQAAAAAAAAAAAAAAAPC/" - ], - [ - 325, - 1, - "insert", - { - "characters": "=" - }, - "AQAAAOwBAAAAAAAA7QEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA7AEAAAAAAADsAQAAAAAAAAAAAAAAAPC/" - ], - [ - 326, - 1, - "insert", - { - "characters": " other." - }, - "BwAAAO0BAAAAAAAA7gEAAAAAAAAAAAAA7gEAAAAAAADvAQAAAAAAAAAAAADvAQAAAAAAAPABAAAAAAAAAAAAAPABAAAAAAAA8QEAAAAAAAAAAAAA8QEAAAAAAADyAQAAAAAAAAAAAADyAQAAAAAAAPMBAAAAAAAAAAAAAPMBAAAAAAAA9AEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA7QEAAAAAAADtAQAAAAAAAAAAAAAAAPC/" - ], - [ - 327, - 1, - "insert", - { - "characters": "content" - }, - "BwAAAPQBAAAAAAAA9QEAAAAAAAAAAAAA9QEAAAAAAAD2AQAAAAAAAAAAAAD2AQAAAAAAAPcBAAAAAAAAAAAAAPcBAAAAAAAA+AEAAAAAAAAAAAAA+AEAAAAAAAD5AQAAAAAAAAAAAAD5AQAAAAAAAPoBAAAAAAAAAAAAAPoBAAAAAAAA+wEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA9AEAAAAAAAD0AQAAAAAAAAAAAAAAAPC/" - ], - [ - 328, - 1, - "insert", - { - "characters": " and" - }, - "BAAAAPsBAAAAAAAA/AEAAAAAAAAAAAAA/AEAAAAAAAD9AQAAAAAAAAAAAAD9AQAAAAAAAP4BAAAAAAAAAAAAAP4BAAAAAAAA/wEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA+wEAAAAAAAD7AQAAAAAAAAAAAAAAAPC/" - ], - [ - 329, - 1, - "insert", - { - "characters": " comment." - }, - "CQAAAP8BAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAABAgAAAAAAAAAAAAABAgAAAAAAAAICAAAAAAAAAAAAAAICAAAAAAAAAwIAAAAAAAAAAAAAAwIAAAAAAAAEAgAAAAAAAAAAAAAEAgAAAAAAAAUCAAAAAAAAAAAAAAUCAAAAAAAABgIAAAAAAAAAAAAABgIAAAAAAAAHAgAAAAAAAAAAAAAHAgAAAAAAAAgCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA/wEAAAAAAAD/AQAAAAAAAAAAAAAAAPC/" - ], - [ - 334, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"created\",\"position\":{\"line\":14,\"character\":226},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"created\",\"sortText\":\"09.9999.created\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "created" - }, - "AQAAAAgCAAAAAAAADwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACAIAAAAAAAAIAgAAAAAAAAAAAAAAAPC/" - ], - [ - 335, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAAA8CAAAAAAAAEAIAAAAAAAAAAAAAEAIAAAAAAAARAgAAAAAAAAAAAAARAgAAAAAAABICAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADwIAAAAAAAAPAgAAAAAAAAAAAAAAAPC/" - ], - [ - 336, - 1, - "insert", - { - "characters": " other.c" - }, - "CAAAABICAAAAAAAAEwIAAAAAAAAAAAAAEwIAAAAAAAAUAgAAAAAAAAAAAAAUAgAAAAAAABUCAAAAAAAAAAAAABUCAAAAAAAAFgIAAAAAAAAAAAAAFgIAAAAAAAAXAgAAAAAAAAAAAAAXAgAAAAAAABgCAAAAAAAAAAAAABgCAAAAAAAAGQIAAAAAAAAAAAAAGQIAAAAAAAAaAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEgIAAAAAAAASAgAAAAAAAAAAAAAAAPC/" - ], - [ - 337, - 1, - "insert", - { - "characters": "re" - }, - "AgAAABoCAAAAAAAAGwIAAAAAAAAAAAAAGwIAAAAAAAAcAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAGgIAAAAAAAAaAgAAAAAAAAAAAAAAAPC/" - ], - [ - 338, - 1, - "insert_completion", - { - "completion": "created", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "created" - }, - "AgAAABkCAAAAAAAAGQIAAAAAAAADAAAAY3JlGQIAAAAAAAAgAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAHAIAAAAAAAAcAgAAAAAAAAAAAAAAAPC/" - ], - [ - 339, - 1, - "insert", - { - "characters": " and" - }, - "BAAAACACAAAAAAAAIQIAAAAAAAAAAAAAIQIAAAAAAAAiAgAAAAAAAAAAAAAiAgAAAAAAACMCAAAAAAAAAAAAACMCAAAAAAAAJAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAIAIAAAAAAAAgAgAAAAAAAAAAAAAAAPC/" - ], - [ - 340, - 1, - "insert", - { - "characters": " comment." - }, - "CQAAACQCAAAAAAAAJQIAAAAAAAAAAAAAJQIAAAAAAAAmAgAAAAAAAAAAAAAmAgAAAAAAACcCAAAAAAAAAAAAACcCAAAAAAAAKAIAAAAAAAAAAAAAKAIAAAAAAAApAgAAAAAAAAAAAAApAgAAAAAAACoCAAAAAAAAAAAAACoCAAAAAAAAKwIAAAAAAAAAAAAAKwIAAAAAAAAsAgAAAAAAAAAAAAAsAgAAAAAAAC0CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJAIAAAAAAAAkAgAAAAAAAAAAAAAAAPC/" - ], - [ - 347, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"notified\",\"position\":{\"line\":14,\"character\":263},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"notified\",\"sortText\":\"09.9999.notified\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": true, - "trigger": "notified" - }, - "AQAAAC0CAAAAAAAANQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALQIAAAAAAAAtAgAAAAAAAAAAAAAAAPC/" - ], - [ - 348, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAADUCAAAAAAAANgIAAAAAAAAAAAAANgIAAAAAAAA3AgAAAAAAAAAAAAA3AgAAAAAAADgCAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAANQIAAAAAAAA1AgAAAAAAAAAAAAAAAPC/" - ], - [ - 349, - 1, - "insert", - { - "characters": " other" - }, - "BgAAADgCAAAAAAAAOQIAAAAAAAAAAAAAOQIAAAAAAAA6AgAAAAAAAAAAAAA6AgAAAAAAADsCAAAAAAAAAAAAADsCAAAAAAAAPAIAAAAAAAAAAAAAPAIAAAAAAAA9AgAAAAAAAAAAAAA9AgAAAAAAAD4CAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAOAIAAAAAAAA4AgAAAAAAAAAAAAAAAPC/" - ], - [ - 350, - 1, - "insert", - { - "characters": ".noti" - }, - "BQAAAD4CAAAAAAAAPwIAAAAAAAAAAAAAPwIAAAAAAABAAgAAAAAAAAAAAABAAgAAAAAAAEECAAAAAAAAAAAAAEECAAAAAAAAQgIAAAAAAAAAAAAAQgIAAAAAAABDAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAPgIAAAAAAAA+AgAAAAAAAAAAAAAAAPC/" - ], - [ - 351, - 1, - "insert_completion", - { - "completion": "notified", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "notified" - }, - "AgAAAD8CAAAAAAAAPwIAAAAAAAAEAAAAbm90aT8CAAAAAAAARwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAQwIAAAAAAABDAgAAAAAAAAAAAAAAAPC/" - ], - [ - 352, - 1, - "insert", - { - "characters": " and" - }, - "BAAAAEcCAAAAAAAASAIAAAAAAAAAAAAASAIAAAAAAABJAgAAAAAAAAAAAABJAgAAAAAAAEoCAAAAAAAAAAAAAEoCAAAAAAAASwIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAARwIAAAAAAABHAgAAAAAAAAAAAAAAAPC/" - ], - [ - 353, - 1, - "insert", - { - "characters": " comment" - }, - "CAAAAEsCAAAAAAAATAIAAAAAAAAAAAAATAIAAAAAAABNAgAAAAAAAAAAAABNAgAAAAAAAE4CAAAAAAAAAAAAAE4CAAAAAAAATwIAAAAAAAAAAAAATwIAAAAAAABQAgAAAAAAAAAAAABQAgAAAAAAAFECAAAAAAAAAAAAAFECAAAAAAAAUgIAAAAAAAAAAAAAUgIAAAAAAABTAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASwIAAAAAAABLAgAAAAAAAAAAAAAAAPC/" - ], - [ - 354, - 1, - "insert", - { - "characters": ".p" - }, - "AgAAAFMCAAAAAAAAVAIAAAAAAAAAAAAAVAIAAAAAAABVAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUwIAAAAAAABTAgAAAAAAAAAAAAAAAPC/" - ], - [ - 355, - 1, - "insert_completion", - { - "completion": "lsp_select_completion_item {\"item\":{\"data\":{\"workspacePath\":\"/home/yannic/work/stacosys\",\"symbolLabel\":\"published\",\"position\":{\"line\":14,\"character\":303},\"filePath\":\"/home/yannic/work/stacosys/tests/test_db.py\"},\"label\":\"published\",\"sortText\":\"09.9999.published\",\"kind\":6},\"session_name\":\"LSP-pyright\"}", - "format": "command", - "keep_prefix": false, - "must_insert": false, - "trigger": "published" - }, - "AgAAAFQCAAAAAAAAVAIAAAAAAAABAAAAcFQCAAAAAAAAXQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVQIAAAAAAABVAgAAAAAAAAAAAAAAAPC/" - ], - [ - 356, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAAF0CAAAAAAAAXgIAAAAAAAAAAAAAXgIAAAAAAABfAgAAAAAAAAAAAABfAgAAAAAAAGACAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXQIAAAAAAABdAgAAAAAAAAAAAAAAAPC/" - ], - [ - 357, - 1, - "insert", - { - "characters": " other.puy" - }, - "CgAAAGACAAAAAAAAYQIAAAAAAAAAAAAAYQIAAAAAAABiAgAAAAAAAAAAAABiAgAAAAAAAGMCAAAAAAAAAAAAAGMCAAAAAAAAZAIAAAAAAAAAAAAAZAIAAAAAAABlAgAAAAAAAAAAAABlAgAAAAAAAGYCAAAAAAAAAAAAAGYCAAAAAAAAZwIAAAAAAAAAAAAAZwIAAAAAAABoAgAAAAAAAAAAAABoAgAAAAAAAGkCAAAAAAAAAAAAAGkCAAAAAAAAagIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYAIAAAAAAABgAgAAAAAAAAAAAAAAAPC/" - ], - [ - 358, - 1, - "left_delete", - null, - "AQAAAGkCAAAAAAAAaQIAAAAAAAABAAAAeQ", - "AQAAAAAAAAABAAAAagIAAAAAAABqAgAAAAAAAAAAAAAAAPC/" - ], - [ - 359, - 1, - "insert_completion", - { - "completion": "published", - "format": "text", - "keep_prefix": false, - "must_insert": false, - "trigger": "published" - }, - "AgAAAGcCAAAAAAAAZwIAAAAAAAACAAAAcHVnAgAAAAAAAHACAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAaQIAAAAAAABpAgAAAAAAAAAAAAAAAPC/" - ], - [ - 362, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAHACAAAAAAAAcQIAAAAAAAAAAAAAcQIAAAAAAAB1AgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAcAIAAAAAAABwAgAAAAAAAP///////+9/" - ], - [ - 364, - 1, - "trim_trailing_white_space", - null, - "AQAAAHECAAAAAAAAcQIAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAdQIAAAAAAAB1AgAAAAAAAAAAAAAAAPC/" - ], - [ - 378, - 1, - "insert", - { - "characters": "equals_" - }, - "BwAAAG8DAAAAAAAAcAMAAAAAAAAAAAAAcAMAAAAAAABxAwAAAAAAAAAAAABxAwAAAAAAAHIDAAAAAAAAAAAAAHIDAAAAAAAAcwMAAAAAAAAAAAAAcwMAAAAAAAB0AwAAAAAAAAAAAAB0AwAAAAAAAHUDAAAAAAAAAAAAAHUDAAAAAAAAdgMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAbwMAAAAAAABvAwAAAAAAAAAAAAAAAPC/" - ], - [ - 379, - 1, - "left_delete", - null, - "AQAAAHUDAAAAAAAAdQMAAAAAAAABAAAAXw", - "AQAAAAAAAAABAAAAdgMAAAAAAAB2AwAAAAAAAAAAAAAAAPC/" - ], - [ - 380, - 1, - "insert", - { - "characters": "_comment(" - }, - "CQAAAHUDAAAAAAAAdgMAAAAAAAAAAAAAdgMAAAAAAAB3AwAAAAAAAAAAAAB3AwAAAAAAAHgDAAAAAAAAAAAAAHgDAAAAAAAAeQMAAAAAAAAAAAAAeQMAAAAAAAB6AwAAAAAAAAAAAAB6AwAAAAAAAHsDAAAAAAAAAAAAAHsDAAAAAAAAfAMAAAAAAAAAAAAAfAMAAAAAAAB9AwAAAAAAAAAAAAB9AwAAAAAAAH4DAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAdQMAAAAAAAB1AwAAAAAAAAAAAAAAAPC/" - ], - [ - 381, - 1, - "insert", - { - "characters": "c1," - }, - "AwAAAH4DAAAAAAAAfwMAAAAAAAAAAAAAfwMAAAAAAACAAwAAAAAAAAAAAACAAwAAAAAAAIEDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAfgMAAAAAAAB+AwAAAAAAAAAAAAAAAPC/" - ], - [ - 382, - 1, - "insert", - { - "characters": " " - }, - "AQAAAIEDAAAAAAAAggMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAgQMAAAAAAACBAwAAAAAAAAAAAAAAAPC/" - ], - [ - 385, - 1, - "insert", - { - "characters": ")" - }, - "AgAAAIkDAAAAAAAAigMAAAAAAAAAAAAAigMAAAAAAACKAwAAAAAAAAwAAAAuaWQgPT0gYzEuaWQ", - "AQAAAAAAAAABAAAAiQMAAAAAAACVAwAAAAAAAAAAAAAAAPC/" - ], - [ - 414, - 1, - "insert", - { - "characters": "\n\t" - }, - "AwAAAEgBAAAAAAAASQEAAAAAAAAAAAAASQEAAAAAAABNAQAAAAAAAAAAAABNAQAAAAAAAFEBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASAEAAAAAAABIAQAAAAAAAAAAAAAAAPC/" - ], - [ - 417, - 1, - "right_delete", - null, - "AQAAAEkBAAAAAAAASQEAAAAAAAAIAAAAICAgICAgICA", - "AQAAAAAAAAABAAAAUQEAAAAAAABJAQAAAAAAAAAAAAAAAAAA" - ], - [ - 418, - 1, - "left_delete", - null, - "AQAAAEgBAAAAAAAASAEAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 420, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAAEgBAAAAAAAASQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASAEAAAAAAABIAQAAAAAAAAAAAAAAAPC/" - ], - [ - 421, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAEkBAAAAAAAASgEAAAAAAAAAAAAASgEAAAAAAABOAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 422, - 1, - "insert", - { - "characters": "\t" - }, - "AQAAAE4BAAAAAAAAUgEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAATgEAAAAAAABOAQAAAAAAAAAAAAAAAPC/" - ], - [ - 424, - 1, - "right_delete", - null, - "AQAAAEoBAAAAAAAASgEAAAAAAAAIAAAAICAgICAgICA", - "AQAAAAAAAAABAAAAUgEAAAAAAABKAQAAAAAAAAAAAAAAAAAA" - ], - [ - 425, - 2, - "left_delete", - null, - "AgAAAEkBAAAAAAAASQEAAAAAAAABAAAACkgBAAAAAAAASAEAAAAAAAABAAAAXA", - "AQAAAAAAAAABAAAASgEAAAAAAABKAQAAAAAAAAAAAAAAAPC/" - ], - [ - 434, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAAEgBAAAAAAAASQEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASAEAAAAAAABIAQAAAAAAAAAAAAAAAPC/" - ], - [ - 435, - 1, - "insert", - { - "characters": "\n\t" - }, - "AwAAAEkBAAAAAAAASgEAAAAAAAAAAAAASgEAAAAAAABOAQAAAAAAAAAAAABOAQAAAAAAAFIBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAASQEAAAAAAABJAQAAAAAAAAAAAAAAAPC/" - ], - [ - 438, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAAIcBAAAAAAAAiAEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhwEAAAAAAACHAQAAAAAAAAAAAAAAAPC/" - ], - [ - 439, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAIgBAAAAAAAAiQEAAAAAAAAAAAAAiQEAAAAAAACRAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAiAEAAAAAAACIAQAAAAAAAAAAAAAAAPC/" - ], - [ - 442, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAAL4BAAAAAAAAvwEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvgEAAAAAAAC+AQAAAAAAAAAAAAAAAPC/" - ], - [ - 443, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAL8BAAAAAAAAwAEAAAAAAAAAAAAAwAEAAAAAAADIAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvwEAAAAAAAC/AQAAAAAAAAAAAAAAAPC/" - ], - [ - 446, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAAPUBAAAAAAAA9gEAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA9QEAAAAAAAD1AQAAAAAAAAAAAAAAAPC/" - ], - [ - 447, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAPYBAAAAAAAA9wEAAAAAAAAAAAAA9wEAAAAAAAD/AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA9gEAAAAAAAD2AQAAAAAAAAAAAAAAAPC/" - ], - [ - 450, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAACQCAAAAAAAAJQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJAIAAAAAAAAkAgAAAAAAAAAAAAAAAPC/" - ], - [ - 451, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAACUCAAAAAAAAJgIAAAAAAAAAAAAAJgIAAAAAAAAuAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJQIAAAAAAAAlAgAAAAAAAAAAAAAAAPC/" - ], - [ - 454, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAAFMCAAAAAAAAVAIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAUwIAAAAAAABTAgAAAAAAAAAAAAAAAPC/" - ], - [ - 455, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAFQCAAAAAAAAVQIAAAAAAAAAAAAAVQIAAAAAAABdAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAVAIAAAAAAABUAgAAAAAAAAAAAAAAAPC/" - ], - [ - 458, - 1, - "insert", - { - "characters": "\\" - }, - "AQAAAIQCAAAAAAAAhQIAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhAIAAAAAAACEAgAAAAAAAAAAAAAAAPC/" - ], - [ - 459, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAIUCAAAAAAAAhgIAAAAAAAAAAAAAhgIAAAAAAACOAgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhQIAAAAAAACFAgAAAAAAAAAAAAAAAPC/" - ], - [ - 493, - 1, - "insert", - { - "characters": "\nass" - }, - "BQAAALQEAAAAAAAAtQQAAAAAAAAAAAAAtQQAAAAAAAC5BAAAAAAAAAAAAAC5BAAAAAAAALoEAAAAAAAAAAAAALoEAAAAAAAAuwQAAAAAAAAAAAAAuwQAAAAAAAC8BAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAtAQAAAAAAAC0BAAAAAAAAAAAAAAAAPC/" - ], - [ - 494, - 1, - "insert", - { - "characters": "ert" - }, - "AwAAALwEAAAAAAAAvQQAAAAAAAAAAAAAvQQAAAAAAAC+BAAAAAAAAAAAAAC+BAAAAAAAAL8EAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvAQAAAAAAAC8BAAAAAAAAAAAAAAAAPC/" - ], - [ - 495, - 1, - "insert", - { - "characters": " 1" - }, - "AgAAAL8EAAAAAAAAwAQAAAAAAAAAAAAAwAQAAAAAAADBBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAvwQAAAAAAAC/BAAAAAAAAAAAAAAAAPC/" - ], - [ - 496, - 1, - "insert", - { - "characters": " ==" - }, - "AwAAAMEEAAAAAAAAwgQAAAAAAAAAAAAAwgQAAAAAAADDBAAAAAAAAAAAAADDBAAAAAAAAMQEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAwQQAAAAAAADBBAAAAAAAAAAAAAAAAPC/" - ], - [ - 497, - 1, - "insert", - { - "characters": " " - }, - "AQAAAMQEAAAAAAAAxQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxAQAAAAAAADEBAAAAAAAAAAAAAAAAPC/" - ], - [ - 498, - 1, - "paste", - null, - "AQAAAMUEAAAAAAAA4AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxQQAAAAAAADFBAAAAAAAAAAAAAAAAPC/" - ], - [ - 502, - 1, - "insert", - { - "characters": "dao." - }, - "BAAAAMUEAAAAAAAAxgQAAAAAAAAAAAAAxgQAAAAAAADHBAAAAAAAAAAAAADHBAAAAAAAAMgEAAAAAAAAAAAAAMgEAAAAAAAAyQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxQQAAAAAAADFBAAAAAAAAAAAAAAAAPC/" - ], - [ - 504, - 1, - "insert_snippet", - { - "contents": "($0)" - }, - "AQAAAOQEAAAAAAAA5gQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5AQAAAAAAADkBAAAAAAAAP///////+9/" - ], - [ - 505, - 1, - "insert_snippet", - { - "contents": "\"$0\"" - }, - "AQAAAOUEAAAAAAAA5wQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA5QQAAAAAAADlBAAAAAAAAAAAAAAAAPC/" - ], - [ - 509, - 2, - "left_delete", - null, - "AgAAAOYEAAAAAAAA5gQAAAAAAAABAAAAIuUEAAAAAAAA5QQAAAAAAAABAAAAIg", - "AQAAAAAAAAABAAAA5wQAAAAAAADnBAAAAAAAAAAAAAAAAPC/" - ], - [ - 514, - 1, - "insert", - { - "characters": "len(" - }, - "BAAAAMUEAAAAAAAAxgQAAAAAAAAAAAAAxgQAAAAAAADHBAAAAAAAAAAAAADHBAAAAAAAAMgEAAAAAAAAAAAAAMgEAAAAAAAAyQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAxQQAAAAAAADFBAAAAAAAAAAAAAAAAPC/" - ], - [ - 516, - 1, - "insert", - { - "characters": ")" - }, - "AQAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA6gQAAAAAAADqBAAAAAAAAP///////+9/" - ], - [ - 523, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAACUGAAAAAAAAJgYAAAAAAAAAAAAAJgYAAAAAAAAqBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJQYAAAAAAAAlBgAAAAAAAAAAAAAAAPC/" - ], - [ - 524, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAACoGAAAAAAAAKwYAAAAAAAAAAAAAKwYAAAAAAAAvBgAAAAAAAAAAAAAmBgAAAAAAACYGAAAAAAAABAAAACAgICA", - "AQAAAAAAAAABAAAAKgYAAAAAAAAqBgAAAAAAAAAAAAAAAPC/" - ], - [ - 525, - 1, - "insert", - { - "characters": "#" - }, - "AQAAACsGAAAAAAAALAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKwYAAAAAAAArBgAAAAAAAAAAAAAAAPC/" - ], - [ - 526, - 1, - "insert", - { - "characters": " count" - }, - "BgAAACwGAAAAAAAALQYAAAAAAAAAAAAALQYAAAAAAAAuBgAAAAAAAAAAAAAuBgAAAAAAAC8GAAAAAAAAAAAAAC8GAAAAAAAAMAYAAAAAAAAAAAAAMAYAAAAAAAAxBgAAAAAAAAAAAAAxBgAAAAAAADIGAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALAYAAAAAAAAsBgAAAAAAAAAAAAAAAPC/" - ], - [ - 527, - 1, - "insert", - { - "characters": " published" - }, - "CgAAADIGAAAAAAAAMwYAAAAAAAAAAAAAMwYAAAAAAAA0BgAAAAAAAAAAAAA0BgAAAAAAADUGAAAAAAAAAAAAADUGAAAAAAAANgYAAAAAAAAAAAAANgYAAAAAAAA3BgAAAAAAAAAAAAA3BgAAAAAAADgGAAAAAAAAAAAAADgGAAAAAAAAOQYAAAAAAAAAAAAAOQYAAAAAAAA6BgAAAAAAAAAAAAA6BgAAAAAAADsGAAAAAAAAAAAAADsGAAAAAAAAPAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAMgYAAAAAAAAyBgAAAAAAAAAAAAAAAPC/" - ], - [ - 536, - 1, - "paste", - null, - "AQAAAKsGAAAAAAAA3QYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAYG5A" - ], - [ - 538, - 1, - "insert", - { - "characters": "\t" - }, - "AQAAAKsGAAAAAAAArwYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAAAAA" - ], - [ - 542, - 1, - "insert", - { - "characters": "3" - }, - "AgAAALYGAAAAAAAAtwYAAAAAAAAAAAAAtwYAAAAAAAC3BgAAAAAAAAEAAAAx", - "AQAAAAAAAAABAAAAtgYAAAAAAAC3BgAAAAAAAAAAAAAAAPC/" - ], - [ - 544, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAOEGAAAAAAAA4gYAAAAAAAAAAAAA4gYAAAAAAADmBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4QYAAAAAAADhBgAAAAAAAP///////+9/" - ], - [ - 549, - 1, - "insert", - { - "characters": "0" - }, - "AwAAALYGAAAAAAAAtwYAAAAAAAAAAAAAtwYAAAAAAAC3BgAAAAAAAAEAAAAz4gYAAAAAAADiBgAAAAAAAAQAAAAgICAg", - "AQAAAAAAAAABAAAAtgYAAAAAAAC3BgAAAAAAAAAAAAAAAPC/" - ], - [ - 554, - 1, - "cut", - null, - "AQAAAK8GAAAAAAAArwYAAAAAAAAyAAAAYXNzZXJ0IDAgPT0gbGVuKGRhby5maW5kX25vdF9wdWJsaXNoZWRfY29tbWVudHMoKSk", - "AQAAAAAAAAABAAAArwYAAAAAAADhBgAAAAAAAP///////+9/" - ], - [ - 556, - 1, - "left_delete", - null, - "AQAAAKoGAAAAAAAAqgYAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAqwYAAAAAAACrBgAAAAAAAAAAAAAAAAAA" - ], - [ - 558, - 1, - "paste", - null, - "AQAAACYGAAAAAAAAWAYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJgYAAAAAAAAmBgAAAAAAAAAAAAAAYH5A" - ], - [ - 560, - 1, - "insert", - { - "characters": "\t" - }, - "AQAAACYGAAAAAAAAKgYAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAJgYAAAAAAAAmBgAAAAAAAAAAAAAAAAAA" - ], - [ - 562, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAFwGAAAAAAAAXQYAAAAAAAAAAAAAXQYAAAAAAABhBgAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAXAYAAAAAAABcBgAAAAAAAP///////+9/" - ], - [ - 564, - 1, - "trim_trailing_white_space", - null, - "AgAAAOUGAAAAAAAA5QYAAAAAAAAEAAAAICAgIF0GAAAAAAAAXQYAAAAAAAAEAAAAICAgIA", - "AQAAAAAAAAABAAAAYQYAAAAAAABhBgAAAAAAAAAAAAAAAPC/" - ], - [ - 571, - 2, - "right_delete", - null, - "AgAAAOkGAAAAAAAA6QYAAAAAAAAEAAAAdGVzdOkGAAAAAAAA6QYAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAA6QYAAAAAAADtBgAAAAAAAAAAAAAAAPC/" - ], - [ - 583, - 1, - "reindent", - null, - "AQAAANEDAAAAAAAA1QMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0QMAAAAAAADRAwAAAAAAAAAAAAAAAPC/" - ], - [ - 584, - 1, - "paste", - null, - "AQAAANUDAAAAAAAA6wMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1QMAAAAAAADVAwAAAAAAAAAAAAAAAPC/" - ], - [ - 597, - 1, - "insert", - { - "characters": "\nc1" - }, - "BAAAANADAAAAAAAA0QMAAAAAAAAAAAAA0QMAAAAAAADVAwAAAAAAAAAAAADVAwAAAAAAANYDAAAAAAAAAAAAANYDAAAAAAAA1wMAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA0AMAAAAAAADQAwAAAAAAAP///////+9/" - ], - [ - 598, - 1, - "insert", - { - "characters": ".id" - }, - "AwAAANcDAAAAAAAA2AMAAAAAAAAAAAAA2AMAAAAAAADZAwAAAAAAAAAAAADZAwAAAAAAANoDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA1wMAAAAAAADXAwAAAAAAAAAAAAAAAPC/" - ], - [ - 599, - 1, - "insert", - { - "characters": " =" - }, - "AgAAANoDAAAAAAAA2wMAAAAAAAAAAAAA2wMAAAAAAADcAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA2gMAAAAAAADaAwAAAAAAAAAAAAAAAPC/" - ], - [ - 600, - 1, - "insert", - { - "characters": " find" - }, - "BQAAANwDAAAAAAAA3QMAAAAAAAAAAAAA3QMAAAAAAADeAwAAAAAAAAAAAADeAwAAAAAAAN8DAAAAAAAAAAAAAN8DAAAAAAAA4AMAAAAAAAAAAAAA4AMAAAAAAADhAwAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA3AMAAAAAAADcAwAAAAAAAAAAAAAAAPC/" - ], - [ - 601, - 1, - "insert", - { - "characters": "_c1.id" - }, - "BgAAAOEDAAAAAAAA4gMAAAAAAAAAAAAA4gMAAAAAAADjAwAAAAAAAAAAAADjAwAAAAAAAOQDAAAAAAAAAAAAAOQDAAAAAAAA5QMAAAAAAAAAAAAA5QMAAAAAAADmAwAAAAAAAAAAAADmAwAAAAAAAOcDAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAA4QMAAAAAAADhAwAAAAAAAAAAAAAAAPC/" - ], - [ - 604, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAAIEAAAAAAAAAwQAAAAAAAAAAAAAAwQAAAAAAAAHBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAAgQAAAAAAAACBAAAAAAAAAAAAAAAAPC/" - ], - [ - 609, - 1, - "paste", - null, - "AQAAAAcEAAAAAAAALgQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAABwQAAAAAAAAHBAAAAAAAAAAAAAAAQGRA" - ], - [ - 613, - 1, - "insert", - { - "characters": "assre" - }, - "BgAAAAcEAAAAAAAACAQAAAAAAAAAAAAACAQAAAAAAAAIBAAAAAAAAAkAAABmaW5kX2MxID0IBAAAAAAAAAkEAAAAAAAAAAAAAAkEAAAAAAAACgQAAAAAAAAAAAAACgQAAAAAAAALBAAAAAAAAAAAAAALBAAAAAAAAAwEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAABwQAAAAAAAAQBAAAAAAAAAAAAAAAAPC/" - ], - [ - 614, - 1, - "left_delete", - null, - "AQAAAAsEAAAAAAAACwQAAAAAAAABAAAAZQ", - "AQAAAAAAAAABAAAADAQAAAAAAAAMBAAAAAAAAAAAAAAAAPC/" - ], - [ - 615, - 1, - "insert", - { - "characters": "e" - }, - "AQAAAAsEAAAAAAAADAQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACwQAAAAAAAALBAAAAAAAAAAAAAAAAPC/" - ], - [ - 616, - 2, - "left_delete", - null, - "AgAAAAsEAAAAAAAACwQAAAAAAAABAAAAZQoEAAAAAAAACgQAAAAAAAABAAAAcg", - "AQAAAAAAAAABAAAADAQAAAAAAAAMBAAAAAAAAAAAAAAAAPC/" - ], - [ - 617, - 1, - "insert", - { - "characters": "ert" - }, - "AwAAAAoEAAAAAAAACwQAAAAAAAAAAAAACwQAAAAAAAAMBAAAAAAAAAAAAAAMBAAAAAAAAA0EAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAACgQAAAAAAAAKBAAAAAAAAAAAAAAAAPC/" - ], - [ - 619, - 1, - "insert", - { - "characters": " is" - }, - "AwAAACsEAAAAAAAALAQAAAAAAAAAAAAALAQAAAAAAAAtBAAAAAAAAAAAAAAtBAAAAAAAAC4EAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAKwQAAAAAAAArBAAAAAAAAP///////+9/" - ], - [ - 620, - 1, - "insert", - { - "characters": " None" - }, - "BQAAAC4EAAAAAAAALwQAAAAAAAAAAAAALwQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADEEAAAAAAAAAAAAADEEAAAAAAAAMgQAAAAAAAAAAAAAMgQAAAAAAAAzBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALgQAAAAAAAAuBAAAAAAAAAAAAAAAAPC/" - ], - [ - 622, - 1, - "right_delete", - null, - "AQAAACwEAAAAAAAALAQAAAAAAAAHAAAAaXMgTm9uZQ", - "AQAAAAAAAAABAAAAMwQAAAAAAAAsBAAAAAAAAAAAAAAAAPC/" - ], - [ - 624, - 1, - "insert", - { - "characters": "not" - }, - "AwAAAA4EAAAAAAAADwQAAAAAAAAAAAAADwQAAAAAAAAQBAAAAAAAAAAAAAAQBAAAAAAAABEEAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAADgQAAAAAAAAOBAAAAAAAAAAAAAAAAPC/" - ], - [ - 625, - 1, - "insert", - { - "characters": " " - }, - "AQAAABEEAAAAAAAAEgQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAEQQAAAAAAAARBAAAAAAAAAAAAAAAAPC/" - ], - [ - 627, - 1, - "right_delete", - null, - "AQAAAA4EAAAAAAAADgQAAAAAAAAEAAAAbm90IA", - "AQAAAAAAAAABAAAAEgQAAAAAAAAOBAAAAAAAAAAAAAAAAPC/" - ], - [ - 629, - 1, - "insert", - { - "characters": " " - }, - "AQAAACwEAAAAAAAALQQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALAQAAAAAAAAsBAAAAAAAAP///////+9/" - ], - [ - 630, - 1, - "left_delete", - null, - "AQAAACwEAAAAAAAALAQAAAAAAAABAAAAIA", - "AQAAAAAAAAABAAAALQQAAAAAAAAtBAAAAAAAAAAAAAAAAPC/" - ], - [ - 631, - 1, - "insert", - { - "characters": "is" - }, - "AgAAACwEAAAAAAAALQQAAAAAAAAAAAAALQQAAAAAAAAuBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALAQAAAAAAAAsBAAAAAAAAAAAAAAAAPC/" - ], - [ - 632, - 1, - "insert", - { - "characters": " None" - }, - "BQAAAC4EAAAAAAAALwQAAAAAAAAAAAAALwQAAAAAAAAwBAAAAAAAAAAAAAAwBAAAAAAAADEEAAAAAAAAAAAAADEEAAAAAAAAMgQAAAAAAAAAAAAAMgQAAAAAAAAzBAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAALgQAAAAAAAAuBAAAAAAAAAAAAAAAAPC/" - ], - [ - 638, - 2, - "left_delete", - null, - "AgAAABwIAAAAAAAAHAgAAAAAAABcAAAAICAgIGRhby5kZWxldGVfY29tbWVudChjMSkKICAgIGFzc2VydCAwID09IGxlbihkYW8uZmluZF9wdWJsaXNoZWRfY29tbWVudHNfYnlfdXJsKCIvcG9zdDEiKSkbCAAAAAAAABsIAAAAAAAAAQAAAAo", - "AQAAAAAAAAABAAAAeAgAAAAAAAAcCAAAAAAAAAAAAAAAAPC/" - ], - [ - 641, - 1, - "left_delete", - null, - "AQAAABoIAAAAAAAAGggAAAAAAAABAAAACg", - "AQAAAAAAAAABAAAAGwgAAAAAAAAbCAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "contents": "Package Control Messages\n========================\n\npython-black\n------------\n\n Thanks for trying out the python-black package!\n ===============================================\n\n\n `python-black` is an unofficial `black` plugin developed for Sublime Text 4.\n\n The current version can format the currently active `.py` file before saving.\n\n The configuration file used is the same as the official `black`.\n\n **Sublime Text needs to be restarted after installing `python-black`!**", - "settings": - { - "buffer_size": 506, - "line_ending": "Unix", - "name": "Package Control Messages", - "read_only": true, - "scratch": true - }, - "undo_stack": - [ - [ - 1, - 1, - "insert", - { - "characters": "Package Control Messages\n========================\n\npython-black\n------------\n\n Thanks for trying out the python-black package!\n ===============================================\n\n\n `python-black` is an unofficial `black` plugin developed for Sublime Text 4.\n\n The current version can format the currently active `.py` file before saving.\n\n The configuration file used is the same as the official `black`.\n\n **Sublime Text needs to be restarted after installing `python-black`!**" - }, - "GgAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAADEAAAAAAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAAzAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAE0AAAAAAAAAAAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAACLAAAAAAAAAAAAAACLAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAyQAAAAAAAAAAAAAAyQAAAAAAAADKAAAAAAAAAAAAAADKAAAAAAAAAMsAAAAAAAAAAAAAAMsAAAAAAAAAzAAAAAAAAAAAAAAAzAAAAAAAAAAaAQAAAAAAAAAAAAAaAQAAAAAAABsBAAAAAAAAAAAAABsBAAAAAAAAHAEAAAAAAAAAAAAAHAEAAAAAAABrAQAAAAAAAAAAAABrAQAAAAAAAGwBAAAAAAAAAAAAAGwBAAAAAAAAbQEAAAAAAAAAAAAAbQEAAAAAAACvAQAAAAAAAAAAAACvAQAAAAAAALABAAAAAAAAAAAAALABAAAAAAAAsQEAAAAAAAAAAAAAsQEAAAAAAAD6AQAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/" - ] - ] - }, - { - "file": "Makefile", - "settings": - { - "buffer_size": 338, - "encoding": "UTF-8", - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 8, - 1, - "insert", - { - "characters": " tests/" - }, - "BwAAAGEAAAAAAAAAYgAAAAAAAAAAAAAAYgAAAAAAAABjAAAAAAAAAAAAAABjAAAAAAAAAGQAAAAAAAAAAAAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAYQAAAAAAAABhAAAAAAAAAP///////+9/" - ], - [ - 10, - 1, - "insert", - { - "characters": " tests/" - }, - "BwAAAIQAAAAAAAAAhQAAAAAAAAAAAAAAhQAAAAAAAACGAAAAAAAAAAAAAACGAAAAAAAAAIcAAAAAAAAAAAAAAIcAAAAAAAAAiAAAAAAAAAAAAAAAiAAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAA", - "AQAAAAAAAAABAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAIINA" - ] - ] - }, - { - "file": "stacosys/db/dao.py", - "settings": - { - "buffer_size": 2026, - "line_ending": "Unix" - }, - "undo_stack": - [ - ] + } } ], "build_system": "", @@ -6145,6 +99,14 @@ "last_filter": "", "selected_items": [ + [ + "dia", + "LSP: Toggle Diagnostics Panel" + ], + [ + "black", + "python-black: Create Black Configuration File" + ], [ "insta", "Package Control: Install Package" @@ -6287,23 +249,25 @@ ], "file_history": [ - "/home/yannic/work/stacosys/stacosys/db/dao.py", + "/home/yannic/work/stacosys/stacosys/db/__init__.py", + "/home/yannic/work/stacosys/tests/test_api.py", "/home/yannic/work/stacosys/tests/test_db.py", + "/home/yannic/work/stacosys/stacosys/service/configuration.py", + "/home/yannic/work/stacosys/Makefile", + "/home/yannic/work/stacosys/stacosys/db/dao.py", + "/home/yannic/work/stacosys/pyproject.toml", "/home/yannic/work/stacosys/stacosys/run.py", "/home/yannic/work/stacosys/config-dev.ini", "/home/yannic/work/stacosys/dbmigration/migrate_from_3.3_to_4.0.py", "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", "/home/yannic/work/stacosys/stacosys/model/comment.py", - "/home/yannic/work/stacosys/tests/test_api.py", "/home/yannic/work/stacosys/tests/test_form.py", "/home/yannic/work/stacosys/config.ini", - "/home/yannic/work/stacosys/stacosys/service/configuration.py", "/home/yannic/work/stacosys/tests/test_config.py", "/home/yannic/work/stacosys/dbmigration/migrate_from_1.1_to_2.0.py", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/pydal/objects.py", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/markdown/extensions/def_list.py", "/home/yannic/work/stacosys/stacosys/db/database.py", - "/home/yannic/work/stacosys/pyproject.toml", "/home/yannic/work/stacosys/tests/test_rssfeed.py", "/home/yannic/work/stacosys/stacosys/service/mail.py", "/home/yannic/work/stacosys/stacosys/interface/form.py", @@ -6312,7 +276,6 @@ "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/peewee.py", "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/background.py", "/home/yannic/work/stacosys/tests/test_mail.py", - "/home/yannic/work/stacosys/Makefile", "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/builtins.pyi", "/home/yannic/work/stacosys/.venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi", "/usr/lib64/python3.11/smtplib.py", @@ -6339,7 +302,7 @@ ], "find": { - "height": 40.0 + "height": 28.0 }, "find_in_files": { @@ -6354,6 +317,7 @@ "case_sensitive": false, "find_history": [ + "bla", "find_not_published_comments", "find_comment_by_id", "asdict", @@ -6390,237 +354,20 @@ [ { "buffer": 0, - "file": "stacosys/db/__init__.py", - "semi_transient": false, - "settings": - { - "buffer_size": 701, - "regions": - { - }, - "selection": - [ - [ - 148, - 148 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 5, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/db/__init__.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 5, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 1, - "file": "tests/test_api.py", - "semi_transient": false, - "settings": - { - "buffer_size": 1625, - "regions": - { - }, - "selection": - [ - [ - 699, - 699 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 2, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_api.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 4, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 2, - "file": "tests/test_db.py", - "semi_transient": false, - "settings": - { - "buffer_size": 2740, - "regions": - { - }, - "selection": - [ - [ - 2075, - 2075 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 2, - "lsp_uri": "file:///home/yannic/work/stacosys/tests/test_db.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 399.0, - "zoom_level": 1.0 - }, - "stack_index": 1, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 3, + "file": "stacosys/service/rssfeed.py", "selected": true, - "semi_transient": false, - "settings": - { - "buffer_size": 506, - "regions": - { - }, - "selection": - [ - [ - 506, - 506 - ] - ], - "settings": - { - "auto_indent": false, - "lsp_uri": "buffer://sublime/109", - "syntax": "Packages/Text/Plain text.tmLanguage", - "tab_width": 2, - "word_wrap": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 0, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 4, - "file": "Makefile", - "semi_transient": false, - "settings": - { - "buffer_size": 338, - "regions": - { - }, - "selection": - [ - [ - 106, - 139 - ] - ], - "settings": - { - "lsp_uri": "file:///home/yannic/work/stacosys/Makefile", - "syntax": "Packages/Makefile/Makefile.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": false - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 3, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 5, - "file": "stacosys/db/dao.py", "semi_transient": true, "settings": { - "buffer_size": 2026, + "buffer_size": 1754, "regions": { }, "selection": [ [ - 724, - 751 + 0, + 0 ] ], "settings": @@ -6643,17 +390,17 @@ ], "lsp_active": true, "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/db/dao.py", + "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/rssfeed.py", "show_definitions": false, "syntax": "Packages/Python/Python.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 57.0, + "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 2, + "stack_index": 0, "stack_multiselect": false, "type": "text" } @@ -6757,6 +504,10 @@ "last_filter": "", "selected_items": [ + [ + "", + "~/work/blog/blog.sublime-project" + ] ], "width": 380.0 }, diff --git a/stacosys/service/rssfeed.py b/stacosys/service/rssfeed.py index 80461a1..dd3c3d5 100644 --- a/stacosys/service/rssfeed.py +++ b/stacosys/service/rssfeed.py @@ -52,7 +52,5 @@ class Rss: lastBuildDate=datetime.now(), items=items, ) - # TODO technical debt: replace pyRss2Gen - # TODO validate feed (https://validator.w3.org/feed/check.cgi) # pylint: disable=consider-using-with rss.write_xml(open(self._rss_file, "w", encoding="utf-8"), encoding="utf-8") diff --git a/tests/test_db.py b/tests/test_db.py index ebacd80..a47e8c6 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -2,6 +2,7 @@ # -*- coding: UTF-8 -*- import time + import pytest from stacosys.db import dao, database From 260e9de547431fe6e1a4db7bf8c20c6086defeb1 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 3 Dec 2022 19:09:08 +0100 Subject: [PATCH 092/182] README --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index a1875fa..18ba551 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![GitLicense](https://gitlicense.com/badge/kianby/stacosys)](https://gitlicense.com/license/kianby/stacosys) - [![Python version](https://img.shields.io/badge/Python-3.10-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-2.1-green.svg)](https://flask.palletsprojects.com) [![Peewee version](https://img.shields.io/badge/Peewee-3.14-green.svg)](https://docs.peewee-orm.com/) + [![Python version](https://img.shields.io/badge/Python-3.11-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-2.1-green.svg)](https://flask.palletsprojects.com) [![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) @@ -41,7 +41,6 @@ Stacosys offers a REST API to retrieve and post comments. Static blog is HTML-ba - [Python](https://www.python.org) - [Flask](http://flask.pocoo.org) -- [Peewee ORM](http://docs.peewee-orm.com) - [Markdown](http://daringfireball.net/projects/markdown) ### Installation From d153be8cf8a7c8bc38f306047f7cc09f1a693f54 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 3 Dec 2022 19:15:22 +0100 Subject: [PATCH 093/182] License badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 18ba551..de80ccf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![GitLicense](https://gitlicense.com/badge/kianby/stacosys)](https://gitlicense.com/license/kianby/stacosys) +[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.11-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-2.1-green.svg)](https://flask.palletsprojects.com) [![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) From 54f6b40d0a440f4cd12ed98759e48edde32a3bad Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 3 Dec 2022 19:24:01 +0100 Subject: [PATCH 094/182] Fix containter launch --- docker/docker-init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/docker-init.sh b/docker/docker-init.sh index b573f35..f0042b8 100644 --- a/docker/docker-init.sh +++ b/docker/docker-init.sh @@ -1,4 +1,4 @@ #!/bin/bash cd /stacosys -python3 run.py /config/config.ini +python3 stacosys/run.py /config/config.ini From c13d1fbec5680ef3b1b38c138fa3c61de6a41bef Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 3 Dec 2022 19:31:13 +0100 Subject: [PATCH 095/182] README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de80ccf..5bc5b84 100644 --- a/README.md +++ b/README.md @@ -49,4 +49,4 @@ Build and Dependency management relies on [Poetry](https://python-poetry.org/), ### Improvements -Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. +Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. \ No newline at end of file From 4176cc38c6eb60928a45a10cba17a5533dc2a780 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 3 Dec 2022 19:47:02 +0100 Subject: [PATCH 096/182] Debug container --- Dockerfile | 1 - docker/docker-init.sh | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f985ffc..7ea52cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,6 @@ RUN chmod +x usr/local/bin/docker-init.sh RUN cd / COPY dist/${STACOSYS_FILENAME} / -#RUN wget https://github.com/kianby/stacosys/releases/download/${STACOSYS_VERSION}/${STACOSYS_FILENAME} RUN python3 -m pip install ${STACOSYS_FILENAME} --target /stacosys RUN rm -f ${STACOSYS_FILENAME} diff --git a/docker/docker-init.sh b/docker/docker-init.sh index f0042b8..7110ef4 100644 --- a/docker/docker-init.sh +++ b/docker/docker-init.sh @@ -2,3 +2,5 @@ cd /stacosys python3 stacosys/run.py /config/config.ini + +tail -f /dev/null \ No newline at end of file From 2178e56df9804efbfd43149f866db0e65cb9e07f Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 3 Dec 2022 19:54:15 +0100 Subject: [PATCH 097/182] workaround for container startup --- docker/docker-init.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docker/docker-init.sh b/docker/docker-init.sh index 7110ef4..7c51f8e 100644 --- a/docker/docker-init.sh +++ b/docker/docker-init.sh @@ -1,6 +1,9 @@ #!/bin/bash cd /stacosys -python3 stacosys/run.py /config/config.ini +# workaround for startup +cp -f stacosys/run.py . +python3 run.py /config/config.ini -tail -f /dev/null \ No newline at end of file +# catch for debug +#tail -f /dev/null \ No newline at end of file From ded5adb3e7a7ab436431f6542c122ce703abcb9c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 28 Jan 2023 16:46:25 +0100 Subject: [PATCH 098/182] set python version with pyenv. Create virtual env inside project --- poetry.lock | 311 ++++++++++++++++++++++++++++++------------------- poetry.toml | 3 + pyproject.toml | 2 +- 3 files changed, 197 insertions(+), 119 deletions(-) create mode 100644 poetry.toml diff --git a/poetry.lock b/poetry.lock index fc0d83d..b44caff 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,6 +1,6 @@ [[package]] name = "astroid" -version = "2.12.13" +version = "2.13.2" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -8,21 +8,23 @@ python-versions = ">=3.7.2" [package.dependencies] lazy-object-proxy = ">=1.4.0" +typing-extensions = ">=4.0.0" wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} [[package]] name = "attrs" -version = "22.1.0" +version = "22.2.0" description = "Classes Without Boilerplate" category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] [[package]] name = "background" @@ -34,7 +36,7 @@ python-versions = "*" [[package]] name = "black" -version = "22.10.0" +version = "22.12.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -54,7 +56,7 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2022.9.24" +version = "2022.12.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -62,14 +64,11 @@ python-versions = ">=3.6" [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.0.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.6.0" - -[package.extras] -unicode-backport = ["unicodedata2"] +python-versions = "*" [[package]] name = "click" @@ -164,19 +163,19 @@ python-versions = ">=3.5" [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" [[package]] name = "isort" -version = "5.10.1" +version = "5.11.4" description = "A Python utility / library to sort Python imports." category = "dev" optional = false -python-versions = ">=3.6.1,<4.0" +python-versions = ">=3.7.0" [package.extras] colors = ["colorama (>=0.4.3,<0.5.0)"] @@ -208,7 +207,7 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "lazy-object-proxy" -version = "1.8.0" +version = "1.9.0" description = "A fast and thorough lazy object proxy." category = "dev" optional = false @@ -269,18 +268,15 @@ python-versions = "*" [[package]] name = "packaging" -version = "21.3" +version = "23.0" description = "Core utilities for Python packages" category = "dev" optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +python-versions = ">=3.7" [[package]] name = "pathspec" -version = "0.10.2" +version = "0.10.3" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false @@ -288,15 +284,15 @@ python-versions = ">=3.7" [[package]] name = "platformdirs" -version = "2.5.4" +version = "2.6.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"] -test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -320,7 +316,7 @@ python-versions = "*" [[package]] name = "pylint" -version = "2.15.7" +version = "2.15.10" description = "python code static checker" category = "dev" optional = false @@ -329,7 +325,7 @@ python-versions = ">=3.7.2" [package.dependencies] astroid = ">=2.12.13,<=2.14.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = ">=0.2" +dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" @@ -339,17 +335,6 @@ tomlkit = ">=0.10.1" spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] -[[package]] -name = "pyparsing" -version = "3.0.9" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "dev" -optional = false -python-versions = ">=3.6.8" - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] - [[package]] name = "pyrss2gen" version = "1.1" @@ -360,7 +345,7 @@ python-versions = "*" [[package]] name = "pytest" -version = "7.2.0" +version = "7.2.1" description = "pytest: simple powerful testing with Python" category = "dev" optional = false @@ -393,7 +378,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "requests" -version = "2.28.1" +version = "2.28.2" description = "Python HTTP for Humans." category = "main" optional = false @@ -401,7 +386,7 @@ python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" @@ -435,7 +420,7 @@ python-versions = ">=3.7" [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.14" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false @@ -470,52 +455,129 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [metadata] lock-version = "1.1" -python-versions = "~3.11" -content-hash = "7ee7b17fa42c245160e4e376453b3d6cea354551dd40342ee57d59b6d71ea31d" +python-versions = "^3.11.0" +content-hash = "f48c2bb51f31361e8c97fad6b813744d524fa28e81a5047844d53043fcf12398" [metadata.files] astroid = [ - {file = "astroid-2.12.13-py3-none-any.whl", hash = "sha256:10e0ad5f7b79c435179d0d0f0df69998c4eef4597534aae44910db060baeb907"}, - {file = "astroid-2.12.13.tar.gz", hash = "sha256:1493fe8bd3dfd73dc35bd53c9d5b6e49ead98497c47b2307662556a5692d29d7"}, + {file = "astroid-2.13.2-py3-none-any.whl", hash = "sha256:8f6a8d40c4ad161d6fc419545ae4b2f275ed86d1c989c97825772120842ee0d2"}, + {file = "astroid-2.13.2.tar.gz", hash = "sha256:3bc7834720e1a24ca797fd785d77efb14f7a28ee8e635ef040b6e2d80ccb3303"}, ] attrs = [ - {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, - {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, ] background = [ {file = "background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802"}, {file = "background-0.2.1.tar.gz", hash = "sha256:4a5ed40b4a2a9f3340b1402862725d35016dc2490f95d89a2de47c3ddf215b91"}, ] black = [ - {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, - {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, - {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, - {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, - {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, - {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, - {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, - {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, - {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, - {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, - {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, - {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, - {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, - {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, - {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, - {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, - {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, - {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, - {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, - {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, - {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, ] certifi = [ - {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, - {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, + {file = "charset-normalizer-3.0.1.tar.gz", hash = "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-win32.whl", hash = "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-win32.whl", hash = "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-win32.whl", hash = "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-win32.whl", hash = "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-win32.whl", hash = "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59"}, + {file = "charset_normalizer-3.0.1-py3-none-any.whl", hash = "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24"}, ] click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, @@ -597,12 +659,12 @@ idna = [ {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, + {file = "isort-5.11.4-py3-none-any.whl", hash = "sha256:c033fd0edb91000a7f09527fe5c75321878f98322a77ddcc81adbd83724afb7b"}, + {file = "isort-5.11.4.tar.gz", hash = "sha256:6db30c5ded9815d813932c04c2f85a360bcdd35fed496f4d8f35495ef0a261b6"}, ] itsdangerous = [ {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, @@ -613,25 +675,42 @@ jinja2 = [ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] lazy-object-proxy = [ - {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"}, - {file = "lazy_object_proxy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4fd031589121ad46e293629b39604031d354043bb5cdf83da4e93c2d7f3389fe"}, - {file = "lazy_object_proxy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:b70d6e7a332eb0217e7872a73926ad4fdc14f846e85ad6749ad111084e76df25"}, - {file = "lazy_object_proxy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:eb329f8d8145379bf5dbe722182410fe8863d186e51bf034d2075eb8d85ee25b"}, - {file = "lazy_object_proxy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4e2d9f764f1befd8bdc97673261b8bb888764dfdbd7a4d8f55e4fbcabb8c3fb7"}, - {file = "lazy_object_proxy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:e20bfa6db17a39c706d24f82df8352488d2943a3b7ce7d4c22579cb89ca8896e"}, - {file = "lazy_object_proxy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:14010b49a2f56ec4943b6cf925f597b534ee2fe1f0738c84b3bce0c1a11ff10d"}, - {file = "lazy_object_proxy-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6850e4aeca6d0df35bb06e05c8b934ff7c533734eb51d0ceb2d63696f1e6030c"}, - {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:5b51d6f3bfeb289dfd4e95de2ecd464cd51982fe6f00e2be1d0bf94864d58acd"}, - {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6f593f26c470a379cf7f5bc6db6b5f1722353e7bf937b8d0d0b3fba911998858"}, - {file = "lazy_object_proxy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1c7c0433154bb7c54185714c6929acc0ba04ee1b167314a779b9025517eada"}, - {file = "lazy_object_proxy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:d176f392dbbdaacccf15919c77f526edf11a34aece58b55ab58539807b85436f"}, - {file = "lazy_object_proxy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:afcaa24e48bb23b3be31e329deb3f1858f1f1df86aea3d70cb5c8578bfe5261c"}, - {file = "lazy_object_proxy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:71d9ae8a82203511a6f60ca5a1b9f8ad201cac0fc75038b2dc5fa519589c9288"}, - {file = "lazy_object_proxy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:8f6ce2118a90efa7f62dd38c7dbfffd42f468b180287b748626293bf12ed468f"}, - {file = "lazy_object_proxy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:eac3a9a5ef13b332c059772fd40b4b1c3d45a3a2b05e33a361dee48e54a4dad0"}, - {file = "lazy_object_proxy-1.8.0-pp37-pypy37_pp73-any.whl", hash = "sha256:ae032743794fba4d171b5b67310d69176287b5bf82a21f588282406a79498891"}, - {file = "lazy_object_proxy-1.8.0-pp38-pypy38_pp73-any.whl", hash = "sha256:7e1561626c49cb394268edd00501b289053a652ed762c58e1081224c8d881cec"}, - {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"}, + {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, ] markdown = [ {file = "Markdown-3.4.1-py3-none-any.whl", hash = "sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186"}, @@ -720,16 +799,16 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] packaging = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, + {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, + {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, ] pathspec = [ - {file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"}, - {file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"}, + {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"}, + {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"}, ] platformdirs = [ - {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, - {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, + {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, + {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, @@ -739,27 +818,23 @@ pydal = [ {file = "pydal-20221110.1.tar.gz", hash = "sha256:7c3e891c70f8d8918e36276f210a1959bb7badf3b276f47191986ffcf5b6a390"}, ] pylint = [ - {file = "pylint-2.15.7-py3-none-any.whl", hash = "sha256:1d561d1d3e8be9dd880edc685162fbdaa0409c88b9b7400873c0cf345602e326"}, - {file = "pylint-2.15.7.tar.gz", hash = "sha256:91e4776dbcb4b4d921a3e4b6fec669551107ba11f29d9199154a01622e460a57"}, -] -pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"}, + {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"}, ] pyrss2gen = [ {file = "PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7"}, ] pytest = [ - {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, - {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, + {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, + {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, ] pytest-cov = [ {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, ] requests = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, ] tomlkit = [ {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, @@ -774,8 +849,8 @@ typing-extensions = [ {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] urllib3 = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, + {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, ] werkzeug = [ {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 0000000..be97f1e --- /dev/null +++ b/poetry.toml @@ -0,0 +1,3 @@ +[virtualenvs] +in-project = true +prefer-active-python = true \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index f8e7c83..88b9676 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = ["Yax"] readme = "README.md" [tool.poetry.dependencies] -python = "~3.11" +python = "^3.11.0" pyrss2gen = "^1.1" markdown = "^3.1.1" requests = "^2.25.1" From dd7ca08b5a7bf5913595cec96752384577094fe7 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 25 Mar 2023 16:50:58 +0100 Subject: [PATCH 099/182] Up dependencies --- poetry.lock | 1317 ++++++++++++++++++++++++++------------------------- 1 file changed, 662 insertions(+), 655 deletions(-) diff --git a/poetry.lock b/poetry.lock index b44caff..fab7ae0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,14 +1,19 @@ +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. + [[package]] name = "astroid" -version = "2.13.2" +version = "2.15.0" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false python-versions = ">=3.7.2" +files = [ + {file = "astroid-2.15.0-py3-none-any.whl", hash = "sha256:e3e4d0ffc2d15d954065579689c36aac57a339a4679a679579af6401db4d3fdb"}, + {file = "astroid-2.15.0.tar.gz", hash = "sha256:525f126d5dc1b8b0b6ee398b33159105615d92dc4a17f2cd064125d57f6186fa"}, +] [package.dependencies] lazy-object-proxy = ">=1.4.0" -typing-extensions = ">=4.0.0" wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} [[package]] @@ -18,6 +23,10 @@ description = "Classes Without Boilerplate" category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, +] [package.extras] cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] @@ -33,6 +42,10 @@ description = "It does what it says it does." category = "main" optional = false python-versions = "*" +files = [ + {file = "background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802"}, + {file = "background-0.2.1.tar.gz", hash = "sha256:4a5ed40b4a2a9f3340b1402862725d35016dc2490f95d89a2de47c3ddf215b91"}, +] [[package]] name = "black" @@ -41,6 +54,20 @@ description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] [package.dependencies] click = ">=8.0.0" @@ -61,14 +88,95 @@ description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, +] [[package]] name = "charset-normalizer" -version = "3.0.1" +version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, + {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, +] [[package]] name = "click" @@ -77,6 +185,10 @@ 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\""} @@ -88,6 +200,10 @@ 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 = "coverage" @@ -96,498 +212,7 @@ description = "Code coverage measurement for Python" category = "main" optional = false python-versions = ">=3.7" - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "coveralls" -version = "3.3.1" -description = "Show coverage stats online via coveralls.io" -category = "dev" -optional = false -python-versions = ">= 3.5" - -[package.dependencies] -coverage = ">=4.1,<6.0.0 || >6.1,<6.1.1 || >6.1.1,<7.0" -docopt = ">=0.6.1" -requests = ">=1.0.0" - -[package.extras] -yaml = ["PyYAML (>=3.10)"] - -[[package]] -name = "dill" -version = "0.3.6" -description = "serialize all of python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.extras] -graph = ["objgraph (>=1.7.2)"] - -[[package]] -name = "docopt" -version = "0.6.2" -description = "Pythonic argument parser, that will make you smile" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "flask" -version = "2.2.2" -description = "A simple framework for building complex web applications." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -click = ">=8.0" -itsdangerous = ">=2.0" -Jinja2 = ">=3.0" -Werkzeug = ">=2.2.2" - -[package.extras] -async = ["asgiref (>=3.2)"] -dotenv = ["python-dotenv"] - -[[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "isort" -version = "5.11.4" -description = "A Python utility / library to sort Python imports." -category = "dev" -optional = false -python-versions = ">=3.7.0" - -[package.extras] -colors = ["colorama (>=0.4.3,<0.5.0)"] -pipfile-deprecated-finder = ["pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] - -[[package]] -name = "itsdangerous" -version = "2.1.2" -description = "Safely pass data to untrusted environments and back." -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "jinja2" -version = "3.1.2" -description = "A very fast and expressive template engine." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "lazy-object-proxy" -version = "1.9.0" -description = "A fast and thorough lazy object proxy." -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "markdown" -version = "3.4.1" -description = "Python implementation of Markdown." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -testing = ["coverage", "pyyaml"] - -[[package]] -name = "markupsafe" -version = "2.1.1" -description = "Safely add untrusted strings to HTML/XML markup." -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -category = "dev" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "mypy" -version = "0.991" -description = "Optional static typing for Python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -mypy-extensions = ">=0.4.3" -typing-extensions = ">=3.10" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -install-types = ["pip"] -python2 = ["typed-ast (>=1.4.0,<2)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "packaging" -version = "23.0" -description = "Core utilities for Python packages" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "pathspec" -version = "0.10.3" -description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "platformdirs" -version = "2.6.2" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] - -[[package]] -name = "pluggy" -version = "1.0.0" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pydal" -version = "20221110.1" -description = "a pure Python Database Abstraction Layer (for python version 2.7 and 3.x)" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "pylint" -version = "2.15.10" -description = "python code static checker" -category = "dev" -optional = false -python-versions = ">=3.7.2" - -[package.dependencies] -astroid = ">=2.12.13,<=2.14.0-dev0" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} -isort = ">=4.2.5,<6" -mccabe = ">=0.6,<0.8" -platformdirs = ">=2.2.0" -tomlkit = ">=0.10.1" - -[package.extras] -spelling = ["pyenchant (>=3.2,<4.0)"] -testutils = ["gitpython (>3)"] - -[[package]] -name = "pyrss2gen" -version = "1.1" -description = "Generate RSS2 using a Python data structure" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "pytest" -version = "7.2.1" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "4.0.0" -description = "Pytest plugin for measuring coverage." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] - -[[package]] -name = "requests" -version = "2.28.2" -description = "Python HTTP for Humans." -category = "main" -optional = false -python-versions = ">=3.7, <4" - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "tomlkit" -version = "0.11.6" -description = "Style preserving TOML library" -category = "dev" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "types-markdown" -version = "3.4.2.1" -description = "Typing stubs for Markdown" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "typing-extensions" -version = "4.4.0" -description = "Backported and Experimental Type Hints for Python 3.7+" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "urllib3" -version = "1.26.14" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "werkzeug" -version = "2.2.2" -description = "The comprehensive WSGI web application library." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -MarkupSafe = ">=2.1.1" - -[package.extras] -watchdog = ["watchdog"] - -[[package]] -name = "wrapt" -version = "1.14.1" -description = "Module for decorators, wrappers and monkey patching." -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" - -[metadata] -lock-version = "1.1" -python-versions = "^3.11.0" -content-hash = "f48c2bb51f31361e8c97fad6b813744d524fa28e81a5047844d53043fcf12398" - -[metadata.files] -astroid = [ - {file = "astroid-2.13.2-py3-none-any.whl", hash = "sha256:8f6a8d40c4ad161d6fc419545ae4b2f275ed86d1c989c97825772120842ee0d2"}, - {file = "astroid-2.13.2.tar.gz", hash = "sha256:3bc7834720e1a24ca797fd785d77efb14f7a28ee8e635ef040b6e2d80ccb3303"}, -] -attrs = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, -] -background = [ - {file = "background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802"}, - {file = "background-0.2.1.tar.gz", hash = "sha256:4a5ed40b4a2a9f3340b1402862725d35016dc2490f95d89a2de47c3ddf215b91"}, -] -black = [ - {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, - {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, - {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, - {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, - {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, - {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, - {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, - {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, - {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, - {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, - {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, - {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, -] -certifi = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, -] -charset-normalizer = [ - {file = "charset-normalizer-3.0.1.tar.gz", hash = "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-win32.whl", hash = "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b"}, - {file = "charset_normalizer-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-win32.whl", hash = "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3"}, - {file = "charset_normalizer-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-win32.whl", hash = "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41"}, - {file = "charset_normalizer-3.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154"}, - {file = "charset_normalizer-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-win32.whl", hash = "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e"}, - {file = "charset_normalizer-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-win32.whl", hash = "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8"}, - {file = "charset_normalizer-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59"}, - {file = "charset_normalizer-3.0.1-py3-none-any.whl", hash = "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24"}, -] -click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, -] -colorama = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] -coverage = [ +files = [ {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, @@ -639,42 +264,158 @@ coverage = [ {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, ] -coveralls = [ + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "coveralls" +version = "3.3.1" +description = "Show coverage stats online via coveralls.io" +category = "dev" +optional = false +python-versions = ">= 3.5" +files = [ {file = "coveralls-3.3.1-py2.py3-none-any.whl", hash = "sha256:f42015f31d386b351d4226389b387ae173207058832fbf5c8ec4b40e27b16026"}, {file = "coveralls-3.3.1.tar.gz", hash = "sha256:b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea"}, ] -dill = [ + +[package.dependencies] +coverage = ">=4.1,<6.0.0 || >6.1,<6.1.1 || >6.1.1,<7.0" +docopt = ">=0.6.1" +requests = ">=1.0.0" + +[package.extras] +yaml = ["PyYAML (>=3.10)"] + +[[package]] +name = "dill" +version = "0.3.6" +description = "serialize all of python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, ] -docopt = [ + +[package.extras] +graph = ["objgraph (>=1.7.2)"] + +[[package]] +name = "docopt" +version = "0.6.2" +description = "Pythonic argument parser, that will make you smile" +category = "dev" +optional = false +python-versions = "*" +files = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, ] -flask = [ - {file = "Flask-2.2.2-py3-none-any.whl", hash = "sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526"}, - {file = "Flask-2.2.2.tar.gz", hash = "sha256:642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b"}, + +[[package]] +name = "flask" +version = "2.2.3" +description = "A simple framework for building complex web applications." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Flask-2.2.3-py3-none-any.whl", hash = "sha256:c0bec9477df1cb867e5a67c9e1ab758de9cb4a3e52dd70681f59fa40a62b3f2d"}, + {file = "Flask-2.2.3.tar.gz", hash = "sha256:7eb373984bf1c770023fce9db164ed0c3353cd0b53f130f4693da0ca756a2e6d"}, ] -idna = [ + +[package.dependencies] +click = ">=8.0" +itsdangerous = ">=2.0" +Jinja2 = ">=3.0" +Werkzeug = ">=2.2.2" + +[package.extras] +async = ["asgiref (>=3.2)"] +dotenv = ["python-dotenv"] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] -iniconfig = [ + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -isort = [ - {file = "isort-5.11.4-py3-none-any.whl", hash = "sha256:c033fd0edb91000a7f09527fe5c75321878f98322a77ddcc81adbd83724afb7b"}, - {file = "isort-5.11.4.tar.gz", hash = "sha256:6db30c5ded9815d813932c04c2f85a360bcdd35fed496f4d8f35495ef0a261b6"}, + +[[package]] +name = "isort" +version = "5.12.0" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, + {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, ] -itsdangerous = [ + +[package.extras] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + +[[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"}, ] -jinja2 = [ + +[[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"}, ] -lazy-object-proxy = [ + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "lazy-object-proxy" +version = "1.9.0" +description = "A fast and thorough lazy object proxy." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, @@ -712,57 +453,102 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, ] -markdown = [ - {file = "Markdown-3.4.1-py3-none-any.whl", hash = "sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186"}, - {file = "Markdown-3.4.1.tar.gz", hash = "sha256:3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff"}, + +[[package]] +name = "markdown" +version = "3.4.3" +description = "Python implementation of John Gruber's Markdown." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Markdown-3.4.3-py3-none-any.whl", hash = "sha256:065fd4df22da73a625f14890dd77eb8040edcbd68794bcd35943be14490608b2"}, + {file = "Markdown-3.4.3.tar.gz", hash = "sha256:8bf101198e004dc93e84a12a7395e31aac6a9c9942848ae1d99b9d72cf9b3520"}, ] -markupsafe = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, + +[package.extras] +testing = ["coverage", "pyyaml"] + +[[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"}, ] -mccabe = [ + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] -mypy = [ + +[[package]] +name = "mypy" +version = "0.991" +description = "Optional static typing for Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, @@ -794,131 +580,352 @@ mypy = [ {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, ] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, + +[package.dependencies] +mypy-extensions = ">=0.4.3" +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] -packaging = [ + +[[package]] +name = "packaging" +version = "23.0" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, ] -pathspec = [ - {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"}, - {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"}, + +[[package]] +name = "pathspec" +version = "0.11.1" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] -platformdirs = [ - {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, - {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, + +[[package]] +name = "platformdirs" +version = "3.1.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "platformdirs-3.1.1-py3-none-any.whl", hash = "sha256:e5986afb596e4bb5bde29a79ac9061aa955b94fca2399b7aaac4090860920dd8"}, + {file = "platformdirs-3.1.1.tar.gz", hash = "sha256:024996549ee88ec1a9aa99ff7f8fc819bb59e2c3477b410d90a16d32d6e707aa"}, ] -pluggy = [ + +[package.extras] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -pydal = [ + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pydal" +version = "20221110.1" +description = "a pure Python Database Abstraction Layer (for python version 2.7 and 3.x)" +category = "main" +optional = false +python-versions = "*" +files = [ {file = "pydal-20221110.1.tar.gz", hash = "sha256:7c3e891c70f8d8918e36276f210a1959bb7badf3b276f47191986ffcf5b6a390"}, ] -pylint = [ - {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"}, - {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"}, + +[[package]] +name = "pylint" +version = "2.17.1" +description = "python code static checker" +category = "dev" +optional = false +python-versions = ">=3.7.2" +files = [ + {file = "pylint-2.17.1-py3-none-any.whl", hash = "sha256:8660a54e3f696243d644fca98f79013a959c03f979992c1ab59c24d3f4ec2700"}, + {file = "pylint-2.17.1.tar.gz", hash = "sha256:d4d009b0116e16845533bc2163493d6681846ac725eab8ca8014afb520178ddd"}, ] -pyrss2gen = [ + +[package.dependencies] +astroid = ">=2.15.0,<=2.17.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} +isort = ">=4.2.5,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomlkit = ">=0.10.1" + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "pyrss2gen" +version = "1.1" +description = "Generate RSS2 using a Python data structure" +category = "main" +optional = false +python-versions = "*" +files = [ {file = "PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7"}, ] -pytest = [ - {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, - {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, + +[[package]] +name = "pytest" +version = "7.2.2" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"}, + {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"}, ] -pytest-cov = [ + +[package.dependencies] +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "4.0.0" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, ] -requests = [ + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "requests" +version = "2.28.2" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" +files = [ {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, ] -tomlkit = [ + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "tomlkit" +version = "0.11.6" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, ] -types-markdown = [ - {file = "types-Markdown-3.4.2.1.tar.gz", hash = "sha256:03c0904cf5886a7d8193e2f50bcf842afc89e0ab80f060f389f6c2635c65628f"}, - {file = "types_Markdown-3.4.2.1-py3-none-any.whl", hash = "sha256:b2333f6f4b8f69af83de359e10a097e4a3f14bbd6d2484e1829d9b0ec56fa0cb"}, + +[[package]] +name = "types-markdown" +version = "3.4.2.5" +description = "Typing stubs for Markdown" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "types-Markdown-3.4.2.5.tar.gz", hash = "sha256:e76a2a07166f7c69aadf5fa51ef954d2baaed35eb8fa30c36f10877d8403fcef"}, + {file = "types_Markdown-3.4.2.5-py3-none-any.whl", hash = "sha256:6707853d2478f6ae9e298db497c93c38fe40d8f89e1d90872d992c3934aa76d7"}, ] -typing-extensions = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + +[[package]] +name = "typing-extensions" +version = "4.5.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "dev" +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"}, ] -urllib3 = [ - {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, - {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, + +[[package]] +name = "urllib3" +version = "1.26.15" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"}, + {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"}, ] -werkzeug = [ - {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, - {file = "Werkzeug-2.2.2.tar.gz", hash = "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f"}, + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "werkzeug" +version = "2.2.3" +description = "The comprehensive WSGI web application library." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Werkzeug-2.2.3-py3-none-any.whl", hash = "sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612"}, + {file = "Werkzeug-2.2.3.tar.gz", hash = "sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe"}, ] -wrapt = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog"] + +[[package]] +name = "wrapt" +version = "1.15.0" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, ] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11.0" +content-hash = "f48c2bb51f31361e8c97fad6b813744d524fa28e81a5047844d53043fcf12398" From a4f1b9ad4fda95b6b377c59caf8f7aea858d7691 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 25 Mar 2023 18:09:53 +0100 Subject: [PATCH 100/182] poetry run ./build.sh creates an executables with pyinstaller --- build.sh | 2 + poetry.lock | 118 ++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 3 +- 3 files changed, 120 insertions(+), 3 deletions(-) create mode 100755 build.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..2e81e1e --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +#!/bin/sh +pyinstaller stacosys/run.py --name stacosys --onefile \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index fab7ae0..f329d3d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,5 +1,17 @@ # This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +[[package]] +name = "altgraph" +version = "0.17.3" +description = "Python graph (network) package" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "altgraph-0.17.3-py2.py3-none-any.whl", hash = "sha256:c8ac1ca6772207179ed8003ce7687757c04b0b71536f81e2ac5755c6226458fe"}, + {file = "altgraph-0.17.3.tar.gz", hash = "sha256:ad33358114df7c9416cdb8fa1eaa5852166c505118717021c6a8c7c7abbd03dd"}, +] + [[package]] name = "astroid" version = "2.15.0" @@ -454,6 +466,21 @@ files = [ {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, ] +[[package]] +name = "macholib" +version = "1.16.2" +description = "Mach-O header analysis and editing" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "macholib-1.16.2-py2.py3-none-any.whl", hash = "sha256:44c40f2cd7d6726af8fa6fe22549178d3a4dfecc35a9cd15ea916d9c83a688e0"}, + {file = "macholib-1.16.2.tar.gz", hash = "sha256:557bbfa1bb255c20e9abafe7ed6cd8046b48d9525db2f9b77d3122a63a2a8bf8"}, +] + +[package.dependencies] +altgraph = ">=0.17" + [[package]] name = "markdown" version = "3.4.3" @@ -627,6 +654,18 @@ files = [ {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] +[[package]] +name = "pefile" +version = "2023.2.7" +description = "Python PE parsing module" +category = "dev" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6"}, + {file = "pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"}, +] + [[package]] name = "platformdirs" version = "3.1.1" @@ -670,6 +709,52 @@ files = [ {file = "pydal-20221110.1.tar.gz", hash = "sha256:7c3e891c70f8d8918e36276f210a1959bb7badf3b276f47191986ffcf5b6a390"}, ] +[[package]] +name = "pyinstaller" +version = "5.9.0" +description = "PyInstaller bundles a Python application and all its dependencies into a single package." +category = "dev" +optional = false +python-versions = "<3.12,>=3.7" +files = [ + {file = "pyinstaller-5.9.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:93d7e8443a6b60745d42aa50f08730f6b419410832b4c616c4f1bb315f087661"}, + {file = "pyinstaller-5.9.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:3b2c34c3c3ddf38f68d9f5afbed82abe0f89d53014c56892326fef10172ee652"}, + {file = "pyinstaller-5.9.0-py3-none-manylinux2014_i686.whl", hash = "sha256:dcd348b174fd72c4df271790ac582969c9423cb099fe92db9ec131a8a9243d5a"}, + {file = "pyinstaller-5.9.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:4b21b0298db44f5f07fc04d8ff81ec31efa47b72798efaecc4e811c50a102111"}, + {file = "pyinstaller-5.9.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:12ca6567be457826e14416637ea54485a185d0ce7a5a044df0d0daf588fff6d1"}, + {file = "pyinstaller-5.9.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c7dd156c2438f197c168b990bbce03c97d3fb758dd9bbc3ca93626c2f4473a47"}, + {file = "pyinstaller-5.9.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:2ba42038b3bd83e1fba7c8eb9e7cde43bd5938e37ca542c89e8779355d213f52"}, + {file = "pyinstaller-5.9.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:d1ff94347183ae3755cfb8f02e64744eb7fe384469bd61e453c6ff59a81665d6"}, + {file = "pyinstaller-5.9.0-py3-none-win32.whl", hash = "sha256:8476538aec8a0a3be4f74b93388bd6989b91cc437ff86d6f0d3a68961176dce6"}, + {file = "pyinstaller-5.9.0-py3-none-win_amd64.whl", hash = "sha256:e7a4c292810285c2466f3bdcb1e03ba2170177ebe3d7054ff1af3bb348bf61a4"}, + {file = "pyinstaller-5.9.0-py3-none-win_arm64.whl", hash = "sha256:6cf6c032c72ef78fd9aa5e47d8952e784db45b2c3f7862bd44a99df68c216f64"}, + {file = "pyinstaller-5.9.0.tar.gz", hash = "sha256:2bde16a8d664e8eba9aa7b84f729f7ab005c1793be4fe1986b3c9cad6c486622"}, +] + +[package.dependencies] +altgraph = "*" +macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} +pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} +pyinstaller-hooks-contrib = ">=2021.4" +pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} +setuptools = ">=42.0.0" + +[package.extras] +encryption = ["tinyaes (>=1.0.0)"] +hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] + +[[package]] +name = "pyinstaller-hooks-contrib" +version = "2023.1" +description = "Community maintained hooks for PyInstaller" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyinstaller-hooks-contrib-2023.1.tar.gz", hash = "sha256:ab56c192e7cd4472ff6b840cda4fc42bceccc7fb4234f064fc834a3248c0afdd"}, + {file = "pyinstaller_hooks_contrib-2023.1-py2.py3-none-any.whl", hash = "sha256:d2ea40a7105651aa525bfe5fe309aa264d4d9bb49f839b862243dcf0a56c34cd"}, +] + [[package]] name = "pylint" version = "2.17.1" @@ -747,6 +832,18 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +[[package]] +name = "pywin32-ctypes" +version = "0.2.0" +description = "" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, + {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, +] + [[package]] name = "requests" version = "2.28.2" @@ -769,6 +866,23 @@ urllib3 = ">=1.21.1,<1.27" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "setuptools" +version = "67.6.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, + {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "tomlkit" version = "0.11.6" @@ -927,5 +1041,5 @@ files = [ [metadata] lock-version = "2.0" -python-versions = "^3.11.0" -content-hash = "f48c2bb51f31361e8c97fad6b813744d524fa28e81a5047844d53043fcf12398" +python-versions = ">=3.11.0,<3.12" +content-hash = "4d50d8e3df593e5b2460ffa6b34a5bb9f24e175edf5566d44f1e875733554075" diff --git a/pyproject.toml b/pyproject.toml index 88b9676..c2da9c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = ["Yax"] readme = "README.md" [tool.poetry.dependencies] -python = "^3.11.0" +python = ">=3.11.0,<3.12" pyrss2gen = "^1.1" markdown = "^3.1.1" requests = "^2.25.1" @@ -23,6 +23,7 @@ pytest = "^7.2.0" coveralls = "^3.3.1" pytest-cov = "^4.0.0" black = "^22.10.0" +pyinstaller = "^5.9.0" [build-system] requires = ["poetry-core>=1.0.0"] From 6aa0686aa430acd548dc5d876a7c0f3c562b8bd7 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 26 Mar 2023 20:04:48 +0200 Subject: [PATCH 101/182] pyinstall spec file handling ninja templates --- .gitignore | 2 +- stacosys.spec | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 stacosys.spec diff --git a/.gitignore b/.gitignore index 3388d87..1642124 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ var/ # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest -*.spec +#*.spec # Installer logs pip-log.txt diff --git a/stacosys.spec b/stacosys.spec new file mode 100644 index 0000000..85a4e01 --- /dev/null +++ b/stacosys.spec @@ -0,0 +1,44 @@ +# -*- mode: python ; coding: utf-8 -*- + + +block_cipher = None + + +a = Analysis( + ['stacosys/run.py'], + pathex=[], + binaries=[], + datas=[('stacosys/interface/templates/*.html', 'stacosys/interface/templates/')], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False, +) +pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='stacosys', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, +) From 875d8ba15acb8b08a1043f3382dd882d2bd951c0 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 28 Mar 2023 19:41:44 +0200 Subject: [PATCH 102/182] README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5bc5b84..67237e4 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,10 @@ Stacosys offers a REST API to retrieve and post comments. Static blog is HTML-ba Build and Dependency management relies on [Poetry](https://python-poetry.org/), but you can also use [published releases](https://github.com/kianby/stacosys/releases) or [Docker image](https://hub.docker.com/r/kianby/stacosys). +Build executable with pyinstaller + + poetry run pyinstaller stacosys.spec + ### Improvements Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. \ No newline at end of file From 9c839e793d7a6ddc74c78da632822b7d9f249ed9 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 28 Mar 2023 19:46:04 +0200 Subject: [PATCH 103/182] python <3.11 allowed --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c2da9c6..796fb44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = ["Yax"] readme = "README.md" [tool.poetry.dependencies] -python = ">=3.11.0,<3.12" +python = ">=3.9.0,<3.12" pyrss2gen = "^1.1" markdown = "^3.1.1" requests = "^2.25.1" From 57ea3b1f3c0b402a13859d86fc770e42267dccff Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 15 Apr 2023 17:54:55 +0200 Subject: [PATCH 104/182] Remove IDE config --- stacosys.sublime-project | 19 -- stacosys.sublime-workspace | 536 ------------------------------------- 2 files changed, 555 deletions(-) delete mode 100644 stacosys.sublime-project delete mode 100644 stacosys.sublime-workspace diff --git a/stacosys.sublime-project b/stacosys.sublime-project deleted file mode 100644 index 7d00994..0000000 --- a/stacosys.sublime-project +++ /dev/null @@ -1,19 +0,0 @@ -{ - "folders": - [ - { - "path": ".", - "folder_exclude_patterns": ["__pycache__",".pytest_cache", ".mypy_cache"], - "file_exclude_patterns": [".coverage"] - } - ], - "settings": { - "LSP": { - "LSP-pyright": { - "settings": { - "python.analysis.diagnosticMode": "workspace" - } - } - } - } -} diff --git a/stacosys.sublime-workspace b/stacosys.sublime-workspace deleted file mode 100644 index d1be777..0000000 --- a/stacosys.sublime-workspace +++ /dev/null @@ -1,536 +0,0 @@ -{ - "auto_complete": - { - "selected_items": - [ - [ - "init", - "init_config" - ], - [ - "author", - "author_name=" - ], - [ - "autho", - "author_name" - ], - [ - "au", - "author_gravatar=" - ], - [ - "auth", - "author_site=" - ], - [ - "db", - "db_uri" - ], - [ - "db_", - "db_uri" - ], - [ - "r", - "rss" - ], - [ - "c", - "check" - ], - [ - "con", - "configure_destination" - ], - [ - "EXP", - "EXPECTED_HTTP_PORT" - ], - [ - "l", - "login" - ], - [ - "assertI", - "assertIsNot" - ], - [ - "Confi", - "ConfigParameter" - ], - [ - "S", - "SITE_URL" - ], - [ - "Config", - "ConfigParameter" - ], - [ - "s", - "SITE_REDIRECT" - ], - [ - "get", - "get_int" - ] - ] - }, - "buffers": - [ - { - "file": "stacosys/service/rssfeed.py", - "settings": - { - "buffer_size": 1754, - "line_ending": "Unix" - } - } - ], - "build_system": "", - "build_system_choices": - [ - ], - "build_varint": "", - "command_palette": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - [ - "dia", - "LSP: Toggle Diagnostics Panel" - ], - [ - "black", - "python-black: Create Black Configuration File" - ], - [ - "insta", - "Package Control: Install Package" - ], - [ - "break", - "Python Breakpoints: Toggle" - ], - [ - "togg", - "Python Breakpoints: Toggle" - ], - [ - "diag", - "LSP: Toggle Diagnostics Panel" - ], - [ - "lsp", - "LSP: Toggle Diagnostics Panel" - ], - [ - "comment", - "Toggle Comment" - ], - [ - "install", - "Package Control: Install Package" - ], - [ - "rename", - "LSP: Rename" - ], - [ - "brea", - "Python Breakpoints: Clear All" - ], - [ - "comm", - "Toggle Comment" - ], - [ - "move", - "File: Move…" - ], - [ - "remove", - "Package Control: Remove Package" - ], - [ - "make", - "Build With: Make" - ], - [ - "python", - "Python Breakpoints: Toggle" - ], - [ - "docstr", - "AutoDocstring: Current" - ], - [ - "Package Control: ", - "Package Control: Install Package" - ], - [ - "distr", - "View: Toggle Distraction Free" - ], - [ - "upg", - "Package Control: Upgrade Package" - ], - [ - "form", - "LSP: Format Document" - ], - [ - "format", - "LSP: Format Document" - ], - [ - "lspc", - "LSP: Clear Diagnostics" - ], - [ - "ren", - "LSP: Rename Symbol" - ], - [ - "instal", - "Package Control: Install Package" - ], - [ - "package re", - "Package Control: Remove Package" - ], - [ - "paka", - "Package Control: Remove Package" - ], - [ - "inst", - "Package Control: Install Package" - ], - [ - "pac", - "Package Control: Remove Package" - ] - ], - "width": 0.0 - }, - "console": - { - "height": 164.0, - "history": - [ - ] - }, - "distraction_free": - { - "menu_visible": true, - "show_minimap": false, - "show_open_files": false, - "show_tabs": false, - "side_bar_visible": false, - "status_bar_visible": false - }, - "expanded_folders": - [ - "/home/yannic/work/stacosys", - "/home/yannic/work/stacosys/dbmigration", - "/home/yannic/work/stacosys/docker", - "/home/yannic/work/stacosys/stacosys", - "/home/yannic/work/stacosys/stacosys/db", - "/home/yannic/work/stacosys/stacosys/interface", - "/home/yannic/work/stacosys/stacosys/interface/web", - "/home/yannic/work/stacosys/stacosys/model", - "/home/yannic/work/stacosys/stacosys/service", - "/home/yannic/work/stacosys/tests" - ], - "file_history": - [ - "/home/yannic/work/stacosys/stacosys/db/__init__.py", - "/home/yannic/work/stacosys/tests/test_api.py", - "/home/yannic/work/stacosys/tests/test_db.py", - "/home/yannic/work/stacosys/stacosys/service/configuration.py", - "/home/yannic/work/stacosys/Makefile", - "/home/yannic/work/stacosys/stacosys/db/dao.py", - "/home/yannic/work/stacosys/pyproject.toml", - "/home/yannic/work/stacosys/stacosys/run.py", - "/home/yannic/work/stacosys/config-dev.ini", - "/home/yannic/work/stacosys/dbmigration/migrate_from_3.3_to_4.0.py", - "/home/yannic/work/stacosys/stacosys/service/rssfeed.py", - "/home/yannic/work/stacosys/stacosys/model/comment.py", - "/home/yannic/work/stacosys/tests/test_form.py", - "/home/yannic/work/stacosys/config.ini", - "/home/yannic/work/stacosys/tests/test_config.py", - "/home/yannic/work/stacosys/dbmigration/migrate_from_1.1_to_2.0.py", - "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/pydal/objects.py", - "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/markdown/extensions/def_list.py", - "/home/yannic/work/stacosys/stacosys/db/database.py", - "/home/yannic/work/stacosys/tests/test_rssfeed.py", - "/home/yannic/work/stacosys/stacosys/service/mail.py", - "/home/yannic/work/stacosys/stacosys/interface/form.py", - "/home/yannic/work/stacosys/stacosys/interface/__init__.py", - "/home/yannic/work/stacosys/stacosys/interface/api.py", - "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/peewee.py", - "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/background.py", - "/home/yannic/work/stacosys/tests/test_mail.py", - "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/builtins.pyi", - "/home/yannic/work/stacosys/.venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi", - "/usr/lib64/python3.11/smtplib.py", - "/home/yannic/work/stacosys/stacosys/interface/web/admin.py", - "/home/yannic/work/stacosys/comments.xml", - "/home/yannic/work/stacosys/stacosys/service/__init__.py", - "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/PyRSS2Gen.py", - "/home/yannic/work/blog/README.md", - "/home/yannic/work/blog/Dockerfile", - "/usr/lib64/python3.11/logging/__init__.py", - "/home/yannic/work/stacosys/stacosys/core/__init__.py", - "/home/yannic/work/stacosys/stacosys/core/configuration.py", - "/home/yannic/work/stacosys/.pylintrc", - "/home/yannic/work/stacosys/stacosys/core/mailer.py", - "/home/yannic/work/stacosys/stacosys/conf/config.py", - "/home/yannic/work/stacosys/stacosys/core/rss.py", - "/home/yannic/work/stacosys/run.sh", - "/home/yannic/work/stacosys/stacosys.sublime-project", - "/home/yannic/work/stacosys/pylintrc", - "/home/yannic/work/stacosys/.venv/lib/python3.11/site-packages/flask/app.py", - "/home/yannic/.cache/sublime-text-3/Package Storage/LSP-pyright/18.7.0/language-server/node_modules/pyright/dist/typeshed-fallback/stdlib/sys.pyi", - "/home/yannic/work/stacosys/flake8.ini", - "/home/yannic/work/stacosys/stacosys/__init__.py" - ], - "find": - { - "height": 28.0 - }, - "find_in_files": - { - "height": 104.0, - "where_history": - [ - "" - ] - }, - "find_state": - { - "case_sensitive": false, - "find_history": - [ - "bla", - "find_not_published_comments", - "find_comment_by_id", - "asdict", - "def delete", - "db_dal", - "tox", - "apscheduler", - "_lang", - "config", - "SITE_TOKE", - "app.conf", - "disable", - "background" - ], - "highlight": true, - "in_selection": false, - "preserve_case": false, - "regex": false, - "replace_history": - [ - ], - "reverse": false, - "scrollbar_highlights": true, - "show_context": true, - "use_buffer2": true, - "use_gitignore": true, - "whole_word": false, - "wrap": true - }, - "groups": - [ - { - "sheets": - [ - { - "buffer": 0, - "file": "stacosys/service/rssfeed.py", - "selected": true, - "semi_transient": true, - "settings": - { - "buffer_size": 1754, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "settings": - { - "auto_complete_triggers": - [ - { - "characters": "<", - "selector": "text.html, text.xml" - }, - { - "rhs_empty": true, - "selector": "punctuation.accessor" - }, - { - "characters": ".[", - "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", - "server": "LSP-pyright" - } - ], - "lsp_active": true, - "lsp_hover_provider_count": 1, - "lsp_uri": "file:///home/yannic/work/stacosys/stacosys/service/rssfeed.py", - "show_definitions": false, - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 0, - "stack_multiselect": false, - "type": "text" - } - ] - } - ], - "incremental_find": - { - "height": 28.0 - }, - "input": - { - "height": 40.0 - }, - "layout": - { - "cells": - [ - [ - 0, - 0, - 1, - 1 - ] - ], - "cols": - [ - 0.0, - 1.0 - ], - "rows": - [ - 0.0, - 1.0 - ] - }, - "menu_visible": true, - "output.LSP Log Panel": - { - "height": 0.0 - }, - "output.diagnostics": - { - "height": 261.0 - }, - "output.exec": - { - "height": 132.0 - }, - "output.find_results": - { - "height": 0.0 - }, - "output.language servers": - { - "height": 132.0 - }, - "output.mdpopups": - { - "height": 0.0 - }, - "output.references": - { - "height": 208.0 - }, - "pinned_build_system": "", - "project": "stacosys.sublime-project", - "replace": - { - "height": 52.0 - }, - "save_all_on_build": true, - "select_file": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - [ - "def del", - ".venv/lib/python3.11/site-packages/markdown/extensions/def_list.py" - ], - [ - "socket.p", - ".venv/lib64/python3.11/site-packages/mypy/typeshed/stdlib/socket.pyi" - ], - [ - "mail", - "stacosys/service/mail.py" - ], - [ - "conf", - "stacosys/service/configuration.py" - ] - ], - "width": 0.0 - }, - "select_project": - { - "height": 500.0, - "last_filter": "", - "selected_items": - [ - [ - "", - "~/work/blog/blog.sublime-project" - ] - ], - "width": 380.0 - }, - "select_symbol": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - ], - "width": 0.0 - }, - "selected_group": 0, - "settings": - { - }, - "show_minimap": true, - "show_open_files": false, - "show_tabs": true, - "side_bar_visible": true, - "side_bar_width": 299.0, - "status_bar_visible": true, - "template_settings": - { - } -} From 43b50f75d95883937a362a6834a6be33f3ee4210 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 15 Apr 2023 17:56:09 +0200 Subject: [PATCH 105/182] gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 1642124..81aa1d1 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,5 @@ config-server.ini config-dev.ini .idea/ .python-version +stacosys.sublime-project +stacosys.sublime-workspace From 7946b342b2c0b843673debca922d6fc8f655b116 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 18 Jul 2023 20:51:11 +0200 Subject: [PATCH 107/182] Upgrade deps --- poetry.lock | 590 +++++++++++++++++++++++++++++----------------------- 1 file changed, 334 insertions(+), 256 deletions(-) diff --git a/poetry.lock b/poetry.lock index f329d3d..a6585ae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -14,39 +14,24 @@ files = [ [[package]] name = "astroid" -version = "2.15.0" +version = "2.15.6" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false python-versions = ">=3.7.2" files = [ - {file = "astroid-2.15.0-py3-none-any.whl", hash = "sha256:e3e4d0ffc2d15d954065579689c36aac57a339a4679a679579af6401db4d3fdb"}, - {file = "astroid-2.15.0.tar.gz", hash = "sha256:525f126d5dc1b8b0b6ee398b33159105615d92dc4a17f2cd064125d57f6186fa"}, + {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"}, + {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"}, ] [package.dependencies] lazy-object-proxy = ">=1.4.0" -wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} - -[[package]] -name = "attrs" -version = "22.2.0" -description = "Classes Without Boilerplate" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] -[package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] - [[package]] name = "background" version = "0.2.1" @@ -86,6 +71,8 @@ click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -93,113 +80,125 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[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 = "certifi" -version = "2022.12.7" +version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, ] [[package]] name = "charset-normalizer" -version = "3.1.0" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] [[package]] name = "click" -version = "8.1.3" +version = "8.1.5" 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"}, + {file = "click-8.1.5-py3-none-any.whl", hash = "sha256:e576aa487d679441d7d30abb87e1b43d24fc53bffb8758443b1a9e1cee504548"}, + {file = "click-8.1.5.tar.gz", hash = "sha256:4be4b1af8d665c6d942909916d31a213a106800c47d0eeba73d34da3cbc11367"}, ] [package.dependencies] @@ -277,6 +276,9 @@ files = [ {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, ] +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + [package.extras] toml = ["tomli"] @@ -327,22 +329,39 @@ files = [ ] [[package]] -name = "flask" -version = "2.2.3" -description = "A simple framework for building complex web applications." -category = "main" +name = "exceptiongroup" +version = "1.1.2" +description = "Backport of PEP 654 (exception groups)" +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Flask-2.2.3-py3-none-any.whl", hash = "sha256:c0bec9477df1cb867e5a67c9e1ab758de9cb4a3e52dd70681f59fa40a62b3f2d"}, - {file = "Flask-2.2.3.tar.gz", hash = "sha256:7eb373984bf1c770023fce9db164ed0c3353cd0b53f130f4693da0ca756a2e6d"}, + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[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] -click = ">=8.0" -itsdangerous = ">=2.0" -Jinja2 = ">=3.0" -Werkzeug = ">=2.2.2" +blinker = ">=1.6.2" +click = ">=8.1.3" +importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=2.3.3" [package.extras] async = ["asgiref (>=3.2)"] @@ -360,6 +379,26 @@ files = [ {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] +[[package]] +name = "importlib-metadata" +version = "6.8.0" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -493,67 +532,70 @@ files = [ {file = "Markdown-3.4.3.tar.gz", hash = "sha256:8bf101198e004dc93e84a12a7395e31aac6a9c9942848ae1d99b9d72cf9b3520"}, ] +[package.dependencies] +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} + [package.extras] testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" -version = "2.1.2" +version = "2.1.3" 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"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, ] [[package]] @@ -610,6 +652,7 @@ files = [ [package.dependencies] mypy-extensions = ">=0.4.3" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = ">=3.10" [package.extras] @@ -632,14 +675,14 @@ files = [ [[package]] name = "packaging" -version = "23.0" +version = "23.1" description = "Core utilities for Python packages" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, - {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, ] [[package]] @@ -668,30 +711,30 @@ files = [ [[package]] name = "platformdirs" -version = "3.1.1" +version = "3.9.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.1.1-py3-none-any.whl", hash = "sha256:e5986afb596e4bb5bde29a79ac9061aa955b94fca2399b7aaac4090860920dd8"}, - {file = "platformdirs-3.1.1.tar.gz", hash = "sha256:024996549ee88ec1a9aa99ff7f8fc819bb59e2c3477b410d90a16d32d6e707aa"}, + {file = "platformdirs-3.9.1-py3-none-any.whl", hash = "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f"}, + {file = "platformdirs-3.9.1.tar.gz", hash = "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421"}, ] [package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, ] [package.extras] @@ -711,24 +754,24 @@ files = [ [[package]] name = "pyinstaller" -version = "5.9.0" +version = "5.13.0" description = "PyInstaller bundles a Python application and all its dependencies into a single package." category = "dev" optional = false -python-versions = "<3.12,>=3.7" +python-versions = "<3.13,>=3.7" files = [ - {file = "pyinstaller-5.9.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:93d7e8443a6b60745d42aa50f08730f6b419410832b4c616c4f1bb315f087661"}, - {file = "pyinstaller-5.9.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:3b2c34c3c3ddf38f68d9f5afbed82abe0f89d53014c56892326fef10172ee652"}, - {file = "pyinstaller-5.9.0-py3-none-manylinux2014_i686.whl", hash = "sha256:dcd348b174fd72c4df271790ac582969c9423cb099fe92db9ec131a8a9243d5a"}, - {file = "pyinstaller-5.9.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:4b21b0298db44f5f07fc04d8ff81ec31efa47b72798efaecc4e811c50a102111"}, - {file = "pyinstaller-5.9.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:12ca6567be457826e14416637ea54485a185d0ce7a5a044df0d0daf588fff6d1"}, - {file = "pyinstaller-5.9.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c7dd156c2438f197c168b990bbce03c97d3fb758dd9bbc3ca93626c2f4473a47"}, - {file = "pyinstaller-5.9.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:2ba42038b3bd83e1fba7c8eb9e7cde43bd5938e37ca542c89e8779355d213f52"}, - {file = "pyinstaller-5.9.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:d1ff94347183ae3755cfb8f02e64744eb7fe384469bd61e453c6ff59a81665d6"}, - {file = "pyinstaller-5.9.0-py3-none-win32.whl", hash = "sha256:8476538aec8a0a3be4f74b93388bd6989b91cc437ff86d6f0d3a68961176dce6"}, - {file = "pyinstaller-5.9.0-py3-none-win_amd64.whl", hash = "sha256:e7a4c292810285c2466f3bdcb1e03ba2170177ebe3d7054ff1af3bb348bf61a4"}, - {file = "pyinstaller-5.9.0-py3-none-win_arm64.whl", hash = "sha256:6cf6c032c72ef78fd9aa5e47d8952e784db45b2c3f7862bd44a99df68c216f64"}, - {file = "pyinstaller-5.9.0.tar.gz", hash = "sha256:2bde16a8d664e8eba9aa7b84f729f7ab005c1793be4fe1986b3c9cad6c486622"}, + {file = "pyinstaller-5.13.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:7fdd319828de679f9c5e381eff998ee9b4164bf4457e7fca56946701cf002c3f"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0df43697c4914285ecd333be968d2cd042ab9b2670124879ee87931d2344eaf5"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_i686.whl", hash = "sha256:28d9742c37e9fb518444b12f8c8ab3cb4ba212d752693c34475c08009aa21ccf"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e5fb17de6c325d3b2b4ceaeb55130ad7100a79096490e4c5b890224406fa42f4"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:78975043edeb628e23a73fb3ef0a273cda50e765f1716f75212ea3e91b09dede"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:cd7d5c06f2847195a23d72ede17c60857d6f495d6f0727dc6c9bc1235f2eb79c"}, + {file = "pyinstaller-5.13.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:24009eba63cfdbcde6d2634e9c87f545eb67249ddf3b514e0cd3b2cdaa595828"}, + {file = "pyinstaller-5.13.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:1fde4381155f21d6354dc450dcaa338cd8a40aaacf6bd22b987b0f3e1f96f3ee"}, + {file = "pyinstaller-5.13.0-py3-none-win32.whl", hash = "sha256:2d03419904d1c25c8968b0ad21da0e0f33d8d65716e29481b5bd83f7f342b0c5"}, + {file = "pyinstaller-5.13.0-py3-none-win_amd64.whl", hash = "sha256:9fc27c5a853b14a90d39c252707673c7a0efec921cd817169aff3af0fca8c127"}, + {file = "pyinstaller-5.13.0-py3-none-win_arm64.whl", hash = "sha256:3a331951f9744bc2379ea5d65d36f3c828eaefe2785f15039592cdc08560b262"}, + {file = "pyinstaller-5.13.0.tar.gz", hash = "sha256:5e446df41255e815017d96318e39f65a3eb807e74a796c7e7ff7f13b6366a2e9"}, ] [package.dependencies] @@ -736,7 +779,7 @@ altgraph = "*" macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} pyinstaller-hooks-contrib = ">=2021.4" -pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} +pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""} setuptools = ">=42.0.0" [package.extras] @@ -745,36 +788,41 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.1" +version = "2023.5" description = "Community maintained hooks for PyInstaller" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.1.tar.gz", hash = "sha256:ab56c192e7cd4472ff6b840cda4fc42bceccc7fb4234f064fc834a3248c0afdd"}, - {file = "pyinstaller_hooks_contrib-2023.1-py2.py3-none-any.whl", hash = "sha256:d2ea40a7105651aa525bfe5fe309aa264d4d9bb49f839b862243dcf0a56c34cd"}, + {file = "pyinstaller-hooks-contrib-2023.5.tar.gz", hash = "sha256:cca6cdc31e739954b5bbbf05ef3f71fe448e9cdacad3a2197243bcf99bea2c00"}, + {file = "pyinstaller_hooks_contrib-2023.5-py2.py3-none-any.whl", hash = "sha256:e60185332a6b56691f471d364e9e9405b03091ca27c96e0dbebdedb7624457fd"}, ] [[package]] name = "pylint" -version = "2.17.1" +version = "2.17.4" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" files = [ - {file = "pylint-2.17.1-py3-none-any.whl", hash = "sha256:8660a54e3f696243d644fca98f79013a959c03f979992c1ab59c24d3f4ec2700"}, - {file = "pylint-2.17.1.tar.gz", hash = "sha256:d4d009b0116e16845533bc2163493d6681846ac725eab8ca8014afb520178ddd"}, + {file = "pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, + {file = "pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"}, ] [package.dependencies] -astroid = ">=2.15.0,<=2.17.0-dev0" +astroid = ">=2.15.4,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, +] isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} tomlkit = ">=0.10.1" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] spelling = ["pyenchant (>=3.2,<4.0)"] @@ -793,36 +841,37 @@ files = [ [[package]] name = "pytest" -version = "7.2.2" +version = "7.4.0" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"}, - {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"}, + {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, + {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, ] [package.dependencies] -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" -version = "4.0.0" +version = "4.1.0" description = "Pytest plugin for measuring coverage." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, - {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, ] [package.dependencies] @@ -834,33 +883,33 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "pywin32-ctypes" -version = "0.2.0" -description = "" +version = "0.2.2" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, - {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, + {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, + {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, ] [[package]] name = "requests" -version = "2.28.2" +version = "2.31.0" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" files = [ - {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, - {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -868,91 +917,104 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "67.6.0" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, - {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + [[package]] name = "tomlkit" -version = "0.11.6" +version = "0.11.8" description = "Style preserving TOML library" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, - {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, + {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, + {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, ] [[package]] name = "types-markdown" -version = "3.4.2.5" +version = "3.4.2.9" description = "Typing stubs for Markdown" category = "main" optional = false python-versions = "*" files = [ - {file = "types-Markdown-3.4.2.5.tar.gz", hash = "sha256:e76a2a07166f7c69aadf5fa51ef954d2baaed35eb8fa30c36f10877d8403fcef"}, - {file = "types_Markdown-3.4.2.5-py3-none-any.whl", hash = "sha256:6707853d2478f6ae9e298db497c93c38fe40d8f89e1d90872d992c3934aa76d7"}, + {file = "types-Markdown-3.4.2.9.tar.gz", hash = "sha256:0930057bea0a534e06bbc021d57520720ad2a65b363612614ab0599cc7f606a9"}, + {file = "types_Markdown-3.4.2.9-py3-none-any.whl", hash = "sha256:c23a8a4dd9313539a446ba3dc673a6a920d79580c406de10a5c85a16733890a7"}, ] [[package]] name = "typing-extensions" -version = "4.5.0" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" 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"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] name = "urllib3" -version = "1.26.15" +version = "2.0.3" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"}, - {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "werkzeug" -version = "2.2.3" -description = "The comprehensive WSGI web application library." -category = "main" -optional = false python-versions = ">=3.7" files = [ - {file = "Werkzeug-2.2.3-py3-none-any.whl", hash = "sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612"}, - {file = "Werkzeug-2.2.3.tar.gz", hash = "sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe"}, + {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, + {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "werkzeug" +version = "2.3.6" +description = "The comprehensive WSGI web application library." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Werkzeug-2.3.6-py3-none-any.whl", hash = "sha256:935539fa1413afbb9195b24880778422ed620c0fc09670945185cce4d91a8890"}, + {file = "Werkzeug-2.3.6.tar.gz", hash = "sha256:98c774df2f91b05550078891dee5f0eb0cb797a522c757a2452b9cee5b202330"}, ] [package.dependencies] MarkupSafe = ">=2.1.1" [package.extras] -watchdog = ["watchdog"] +watchdog = ["watchdog (>=2.3)"] [[package]] name = "wrapt" @@ -1039,7 +1101,23 @@ files = [ {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, ] +[[package]] +name = "zipp" +version = "3.16.2" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + [metadata] lock-version = "2.0" -python-versions = ">=3.11.0,<3.12" -content-hash = "4d50d8e3df593e5b2460ffa6b34a5bb9f24e175edf5566d44f1e875733554075" +python-versions = ">=3.9.0,<3.12" +content-hash = "8bda48658818d8aa2efbc31e1475d1b35635edfbc4ef37ffeac9d77523d69d60" From b4c98a60b9315780700c2aa30335de8328adf09e Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:10:01 +0200 Subject: [PATCH 108/182] Update deps --- poetry.lock | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/poetry.lock b/poetry.lock index a6585ae..fb34da8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -94,14 +94,14 @@ files = [ [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] @@ -191,14 +191,14 @@ files = [ [[package]] name = "click" -version = "8.1.5" +version = "8.1.6" description = "Composable command line interface toolkit" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.5-py3-none-any.whl", hash = "sha256:e576aa487d679441d7d30abb87e1b43d24fc53bffb8758443b1a9e1cee504548"}, - {file = "click-8.1.5.tar.gz", hash = "sha256:4be4b1af8d665c6d942909916d31a213a106800c47d0eeba73d34da3cbc11367"}, + {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, + {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, ] [package.dependencies] @@ -304,14 +304,14 @@ yaml = ["PyYAML (>=3.10)"] [[package]] name = "dill" -version = "0.3.6" -description = "serialize all of python" +version = "0.3.7" +description = "serialize all of Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, - {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, + {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, + {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, ] [package.extras] @@ -788,14 +788,14 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.5" +version = "2023.6" description = "Community maintained hooks for PyInstaller" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.5.tar.gz", hash = "sha256:cca6cdc31e739954b5bbbf05ef3f71fe448e9cdacad3a2197243bcf99bea2c00"}, - {file = "pyinstaller_hooks_contrib-2023.5-py2.py3-none-any.whl", hash = "sha256:e60185332a6b56691f471d364e9e9405b03091ca27c96e0dbebdedb7624457fd"}, + {file = "pyinstaller-hooks-contrib-2023.6.tar.gz", hash = "sha256:596a72009d8692b043e0acbf5e1b476d93149900142ba01845dded91a0770cb5"}, + {file = "pyinstaller_hooks_contrib-2023.6-py2.py3-none-any.whl", hash = "sha256:aa6d7d038814df6aa7bec7bdbebc7cb4c693d3398df858f6062957f0797d397b"}, ] [[package]] @@ -958,14 +958,14 @@ files = [ [[package]] name = "types-markdown" -version = "3.4.2.9" +version = "3.4.2.10" description = "Typing stubs for Markdown" category = "main" optional = false python-versions = "*" files = [ - {file = "types-Markdown-3.4.2.9.tar.gz", hash = "sha256:0930057bea0a534e06bbc021d57520720ad2a65b363612614ab0599cc7f606a9"}, - {file = "types_Markdown-3.4.2.9-py3-none-any.whl", hash = "sha256:c23a8a4dd9313539a446ba3dc673a6a920d79580c406de10a5c85a16733890a7"}, + {file = "types-Markdown-3.4.2.10.tar.gz", hash = "sha256:11e3558d50e3bc1e3f52f3fe073788f4ab917a829374fb354476221c700629e8"}, + {file = "types_Markdown-3.4.2.10-py3-none-any.whl", hash = "sha256:543ff3027fda21c3149780bf835a721cd094c5729e9a87725f180569c960bff8"}, ] [[package]] @@ -982,14 +982,14 @@ files = [ [[package]] name = "urllib3" -version = "2.0.3" +version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, - {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, + {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, + {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, ] [package.extras] From d911d66e3f10c4a6ee4fe193ab7c12098d03cd38 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:14:51 +0200 Subject: [PATCH 109/182] Build py executable --- build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 2e81e1e..5da4ff8 100755 --- a/build.sh +++ b/build.sh @@ -1,2 +1,3 @@ #!/bin/sh -pyinstaller stacosys/run.py --name stacosys --onefile \ No newline at end of file +#pyinstaller stacosys/run.py --name stacosys --onefile +poetry run pyinstaller stacosys.spec From e3961e95c287df7724edf715a11cdaa6e38e3ab2 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 19 Sep 2023 20:20:27 +0200 Subject: [PATCH 110/182] Update deps --- poetry.lock | 141 ++++++++++++++++++++++++++-------------------------- 1 file changed, 71 insertions(+), 70 deletions(-) diff --git a/poetry.lock b/poetry.lock index fb34da8..1f80e7d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -191,14 +191,14 @@ files = [ [[package]] name = "click" -version = "8.1.6" +version = "8.1.7" description = "Composable command line interface toolkit" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, - {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -330,14 +330,14 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -345,14 +345,14 @@ test = ["pytest (>=6)"] [[package]] name = "flask" -version = "2.3.2" +version = "2.3.3" 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"}, + {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, + {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, ] [package.dependencies] @@ -361,7 +361,7 @@ click = ">=8.1.3" importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} itsdangerous = ">=2.1.2" Jinja2 = ">=3.1.2" -Werkzeug = ">=2.3.3" +Werkzeug = ">=2.3.7" [package.extras] async = ["asgiref (>=3.2)"] @@ -522,20 +522,21 @@ altgraph = ">=0.17" [[package]] name = "markdown" -version = "3.4.3" +version = "3.4.4" description = "Python implementation of John Gruber's Markdown." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Markdown-3.4.3-py3-none-any.whl", hash = "sha256:065fd4df22da73a625f14890dd77eb8040edcbd68794bcd35943be14490608b2"}, - {file = "Markdown-3.4.3.tar.gz", hash = "sha256:8bf101198e004dc93e84a12a7395e31aac6a9c9942848ae1d99b9d72cf9b3520"}, + {file = "Markdown-3.4.4-py3-none-any.whl", hash = "sha256:a4c1b65c0957b4bd9e7d86ddc7b3c9868fb9670660f6f99f6d1bca8954d5a941"}, + {file = "Markdown-3.4.4.tar.gz", hash = "sha256:225c6123522495d4119a90b3a3ba31a1e87a70369e03f14799ea9c0d7183a3d6"}, ] [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} [package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.0)", "mkdocs-nature (>=0.4)"] testing = ["coverage", "pyyaml"] [[package]] @@ -687,14 +688,14 @@ files = [ [[package]] name = "pathspec" -version = "0.11.1" +version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] [[package]] @@ -711,30 +712,30 @@ files = [ [[package]] name = "platformdirs" -version = "3.9.1" +version = "3.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.9.1-py3-none-any.whl", hash = "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f"}, - {file = "platformdirs-3.9.1.tar.gz", hash = "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421"}, + {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, + {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] [[package]] name = "pluggy" -version = "1.2.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -754,24 +755,24 @@ files = [ [[package]] name = "pyinstaller" -version = "5.13.0" +version = "5.13.2" description = "PyInstaller bundles a Python application and all its dependencies into a single package." category = "dev" optional = false python-versions = "<3.13,>=3.7" files = [ - {file = "pyinstaller-5.13.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:7fdd319828de679f9c5e381eff998ee9b4164bf4457e7fca56946701cf002c3f"}, - {file = "pyinstaller-5.13.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0df43697c4914285ecd333be968d2cd042ab9b2670124879ee87931d2344eaf5"}, - {file = "pyinstaller-5.13.0-py3-none-manylinux2014_i686.whl", hash = "sha256:28d9742c37e9fb518444b12f8c8ab3cb4ba212d752693c34475c08009aa21ccf"}, - {file = "pyinstaller-5.13.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e5fb17de6c325d3b2b4ceaeb55130ad7100a79096490e4c5b890224406fa42f4"}, - {file = "pyinstaller-5.13.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:78975043edeb628e23a73fb3ef0a273cda50e765f1716f75212ea3e91b09dede"}, - {file = "pyinstaller-5.13.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:cd7d5c06f2847195a23d72ede17c60857d6f495d6f0727dc6c9bc1235f2eb79c"}, - {file = "pyinstaller-5.13.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:24009eba63cfdbcde6d2634e9c87f545eb67249ddf3b514e0cd3b2cdaa595828"}, - {file = "pyinstaller-5.13.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:1fde4381155f21d6354dc450dcaa338cd8a40aaacf6bd22b987b0f3e1f96f3ee"}, - {file = "pyinstaller-5.13.0-py3-none-win32.whl", hash = "sha256:2d03419904d1c25c8968b0ad21da0e0f33d8d65716e29481b5bd83f7f342b0c5"}, - {file = "pyinstaller-5.13.0-py3-none-win_amd64.whl", hash = "sha256:9fc27c5a853b14a90d39c252707673c7a0efec921cd817169aff3af0fca8c127"}, - {file = "pyinstaller-5.13.0-py3-none-win_arm64.whl", hash = "sha256:3a331951f9744bc2379ea5d65d36f3c828eaefe2785f15039592cdc08560b262"}, - {file = "pyinstaller-5.13.0.tar.gz", hash = "sha256:5e446df41255e815017d96318e39f65a3eb807e74a796c7e7ff7f13b6366a2e9"}, + {file = "pyinstaller-5.13.2-py3-none-macosx_10_13_universal2.whl", hash = "sha256:16cbd66b59a37f4ee59373a003608d15df180a0d9eb1a29ff3bfbfae64b23d0f"}, + {file = "pyinstaller-5.13.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8f6dd0e797ae7efdd79226f78f35eb6a4981db16c13325e962a83395c0ec7420"}, + {file = "pyinstaller-5.13.2-py3-none-manylinux2014_i686.whl", hash = "sha256:65133ed89467edb2862036b35d7c5ebd381670412e1e4361215e289c786dd4e6"}, + {file = "pyinstaller-5.13.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:7d51734423685ab2a4324ab2981d9781b203dcae42839161a9ee98bfeaabdade"}, + {file = "pyinstaller-5.13.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:2c2fe9c52cb4577a3ac39626b84cf16cf30c2792f785502661286184f162ae0d"}, + {file = "pyinstaller-5.13.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c63ef6133eefe36c4b2f4daf4cfea3d6412ece2ca218f77aaf967e52a95ac9b8"}, + {file = "pyinstaller-5.13.2-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:aadafb6f213549a5906829bb252e586e2cf72a7fbdb5731810695e6516f0ab30"}, + {file = "pyinstaller-5.13.2-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:b2e1c7f5cceb5e9800927ddd51acf9cc78fbaa9e79e822c48b0ee52d9ce3c892"}, + {file = "pyinstaller-5.13.2-py3-none-win32.whl", hash = "sha256:421cd24f26144f19b66d3868b49ed673176765f92fa9f7914cd2158d25b6d17e"}, + {file = "pyinstaller-5.13.2-py3-none-win_amd64.whl", hash = "sha256:ddcc2b36052a70052479a9e5da1af067b4496f43686ca3cdda99f8367d0627e4"}, + {file = "pyinstaller-5.13.2-py3-none-win_arm64.whl", hash = "sha256:27cd64e7cc6b74c5b1066cbf47d75f940b71356166031deb9778a2579bb874c6"}, + {file = "pyinstaller-5.13.2.tar.gz", hash = "sha256:c8e5d3489c3a7cc5f8401c2d1f48a70e588f9967e391c3b06ddac1f685f8d5d2"}, ] [package.dependencies] @@ -788,30 +789,30 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.6" +version = "2023.8" description = "Community maintained hooks for PyInstaller" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.6.tar.gz", hash = "sha256:596a72009d8692b043e0acbf5e1b476d93149900142ba01845dded91a0770cb5"}, - {file = "pyinstaller_hooks_contrib-2023.6-py2.py3-none-any.whl", hash = "sha256:aa6d7d038814df6aa7bec7bdbebc7cb4c693d3398df858f6062957f0797d397b"}, + {file = "pyinstaller-hooks-contrib-2023.8.tar.gz", hash = "sha256:318ccc316fb2b8c0bbdff2456b444bf1ce0e94cb3948a0f4dd48f6fc33d41c01"}, + {file = "pyinstaller_hooks_contrib-2023.8-py2.py3-none-any.whl", hash = "sha256:d091a52fbeed71cde0359aa9ad66288521a8441cfba163d9446606c5136c72a8"}, ] [[package]] name = "pylint" -version = "2.17.4" +version = "2.17.5" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" files = [ - {file = "pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, - {file = "pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"}, + {file = "pylint-2.17.5-py3-none-any.whl", hash = "sha256:73995fb8216d3bed149c8d51bba25b2c52a8251a2c8ac846ec668ce38fab5413"}, + {file = "pylint-2.17.5.tar.gz", hash = "sha256:f7b601cbc06fef7e62a754e2b41294c2aa31f1cb659624b9a85bcba29eaf8252"}, ] [package.dependencies] -astroid = ">=2.15.4,<=2.17.0-dev0" +astroid = ">=2.15.6,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, @@ -841,14 +842,14 @@ files = [ [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.2" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, + {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, ] [package.dependencies] @@ -917,20 +918,20 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "68.0.0" +version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, - {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +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-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "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.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "tomli" @@ -946,14 +947,14 @@ files = [ [[package]] name = "tomlkit" -version = "0.11.8" +version = "0.12.1" description = "Style preserving TOML library" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, - {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, + {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, + {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, ] [[package]] @@ -970,14 +971,14 @@ files = [ [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] [[package]] @@ -1000,14 +1001,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "werkzeug" -version = "2.3.6" +version = "2.3.7" description = "The comprehensive WSGI web application library." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Werkzeug-2.3.6-py3-none-any.whl", hash = "sha256:935539fa1413afbb9195b24880778422ed620c0fc09670945185cce4d91a8890"}, - {file = "Werkzeug-2.3.6.tar.gz", hash = "sha256:98c774df2f91b05550078891dee5f0eb0cb797a522c757a2452b9cee5b202330"}, + {file = "werkzeug-2.3.7-py3-none-any.whl", hash = "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"}, + {file = "werkzeug-2.3.7.tar.gz", hash = "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8"}, ] [package.dependencies] @@ -1103,18 +1104,18 @@ files = [ [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [metadata] From ddc05e0718f5561f790bb0d8e9f62c1e2e3ec3c6 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 4 Oct 2023 18:16:55 +0200 Subject: [PATCH 111/182] Poetry update --- poetry.lock | 288 ++++++++++++++++++++++++---------------------------- 1 file changed, 131 insertions(+), 157 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1f80e7d..2807a53 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,27 +1,25 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "altgraph" -version = "0.17.3" +version = "0.17.4" description = "Python graph (network) package" -category = "dev" optional = false python-versions = "*" files = [ - {file = "altgraph-0.17.3-py2.py3-none-any.whl", hash = "sha256:c8ac1ca6772207179ed8003ce7687757c04b0b71536f81e2ac5755c6226458fe"}, - {file = "altgraph-0.17.3.tar.gz", hash = "sha256:ad33358114df7c9416cdb8fa1eaa5852166c505118717021c6a8c7c7abbd03dd"}, + {file = "altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff"}, + {file = "altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406"}, ] [[package]] name = "astroid" -version = "2.15.6" +version = "2.15.8" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false python-versions = ">=3.7.2" files = [ - {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"}, - {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"}, + {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, + {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, ] [package.dependencies] @@ -36,7 +34,6 @@ wrapt = [ name = "background" version = "0.2.1" description = "It does what it says it does." -category = "main" optional = false python-versions = "*" files = [ @@ -48,7 +45,6 @@ files = [ name = "black" version = "22.12.0" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -84,7 +80,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "blinker" version = "1.6.2" description = "Fast, simple object-to-object and broadcast signaling" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -96,7 +91,6 @@ files = [ name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -106,94 +100,107 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, + {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, ] [[package]] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -208,7 +215,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} 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 = [ @@ -220,7 +226,6 @@ files = [ name = "coverage" version = "6.5.0" description = "Code coverage measurement for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -286,7 +291,6 @@ toml = ["tomli"] name = "coveralls" version = "3.3.1" description = "Show coverage stats online via coveralls.io" -category = "dev" optional = false python-versions = ">= 3.5" files = [ @@ -295,7 +299,7 @@ files = [ ] [package.dependencies] -coverage = ">=4.1,<6.0.0 || >6.1,<6.1.1 || >6.1.1,<7.0" +coverage = ">=4.1,<6.0.dev0 || >6.1,<6.1.1 || >6.1.1,<7.0" docopt = ">=0.6.1" requests = ">=1.0.0" @@ -306,7 +310,6 @@ yaml = ["PyYAML (>=3.10)"] name = "dill" version = "0.3.7" description = "serialize all of Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -321,7 +324,6 @@ graph = ["objgraph (>=1.7.2)"] name = "docopt" version = "0.6.2" description = "Pythonic argument parser, that will make you smile" -category = "dev" optional = false python-versions = "*" files = [ @@ -332,7 +334,6 @@ files = [ name = "exceptiongroup" version = "1.1.3" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -347,7 +348,6 @@ test = ["pytest (>=6)"] name = "flask" version = "2.3.3" description = "A simple framework for building complex web applications." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -371,7 +371,6 @@ dotenv = ["python-dotenv"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -383,7 +382,6 @@ files = [ name = "importlib-metadata" version = "6.8.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -403,7 +401,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -415,7 +412,6 @@ files = [ name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -433,7 +429,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "itsdangerous" version = "2.1.2" description = "Safely pass data to untrusted environments and back." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -445,7 +440,6 @@ files = [ name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -463,7 +457,6 @@ i18n = ["Babel (>=2.7)"] name = "lazy-object-proxy" version = "1.9.0" description = "A fast and thorough lazy object proxy." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -507,14 +500,13 @@ files = [ [[package]] name = "macholib" -version = "1.16.2" +version = "1.16.3" description = "Mach-O header analysis and editing" -category = "dev" optional = false python-versions = "*" files = [ - {file = "macholib-1.16.2-py2.py3-none-any.whl", hash = "sha256:44c40f2cd7d6726af8fa6fe22549178d3a4dfecc35a9cd15ea916d9c83a688e0"}, - {file = "macholib-1.16.2.tar.gz", hash = "sha256:557bbfa1bb255c20e9abafe7ed6cd8046b48d9525db2f9b77d3122a63a2a8bf8"}, + {file = "macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c"}, + {file = "macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30"}, ] [package.dependencies] @@ -524,7 +516,6 @@ altgraph = ">=0.17" name = "markdown" version = "3.4.4" description = "Python implementation of John Gruber's Markdown." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -543,7 +534,6 @@ testing = ["coverage", "pyyaml"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -567,6 +557,16 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -603,7 +603,6 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -615,7 +614,6 @@ files = [ name = "mypy" version = "0.991" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -666,7 +664,6 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -676,21 +673,19 @@ files = [ [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -702,7 +697,6 @@ files = [ name = "pefile" version = "2023.2.7" description = "Python PE parsing module" -category = "dev" optional = false python-versions = ">=3.6.0" files = [ @@ -712,14 +706,13 @@ files = [ [[package]] name = "platformdirs" -version = "3.10.0" +version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, + {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, ] [package.extras] @@ -730,7 +723,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -746,7 +738,6 @@ testing = ["pytest", "pytest-benchmark"] name = "pydal" version = "20221110.1" description = "a pure Python Database Abstraction Layer (for python version 2.7 and 3.x)" -category = "main" optional = false python-versions = "*" files = [ @@ -757,7 +748,6 @@ files = [ name = "pyinstaller" version = "5.13.2" description = "PyInstaller bundles a Python application and all its dependencies into a single package." -category = "dev" optional = false python-versions = "<3.13,>=3.7" files = [ @@ -789,30 +779,28 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.8" +version = "2023.9" description = "Community maintained hooks for PyInstaller" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.8.tar.gz", hash = "sha256:318ccc316fb2b8c0bbdff2456b444bf1ce0e94cb3948a0f4dd48f6fc33d41c01"}, - {file = "pyinstaller_hooks_contrib-2023.8-py2.py3-none-any.whl", hash = "sha256:d091a52fbeed71cde0359aa9ad66288521a8441cfba163d9446606c5136c72a8"}, + {file = "pyinstaller-hooks-contrib-2023.9.tar.gz", hash = "sha256:76084b5988e3957a9df169d2a935d65500136967e710ddebf57263f1a909cd80"}, + {file = "pyinstaller_hooks_contrib-2023.9-py2.py3-none-any.whl", hash = "sha256:f34f4c6807210025c8073ebe665f422a3aa2ac5f4c7ebf4c2a26cc77bebf63b5"}, ] [[package]] name = "pylint" -version = "2.17.5" +version = "2.17.7" description = "python code static checker" -category = "dev" optional = false python-versions = ">=3.7.2" files = [ - {file = "pylint-2.17.5-py3-none-any.whl", hash = "sha256:73995fb8216d3bed149c8d51bba25b2c52a8251a2c8ac846ec668ce38fab5413"}, - {file = "pylint-2.17.5.tar.gz", hash = "sha256:f7b601cbc06fef7e62a754e2b41294c2aa31f1cb659624b9a85bcba29eaf8252"}, + {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, + {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, ] [package.dependencies] -astroid = ">=2.15.6,<=2.17.0-dev0" +astroid = ">=2.15.8,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, @@ -833,7 +821,6 @@ testutils = ["gitpython (>3)"] name = "pyrss2gen" version = "1.1" description = "Generate RSS2 using a Python data structure" -category = "main" optional = false python-versions = "*" files = [ @@ -844,7 +831,6 @@ files = [ name = "pytest" version = "7.4.2" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -867,7 +853,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -886,7 +871,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "pywin32-ctypes" version = "0.2.2" description = "A (partial) reimplementation of pywin32 using ctypes/cffi" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -898,7 +882,6 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -920,7 +903,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -937,7 +919,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -949,7 +930,6 @@ files = [ name = "tomlkit" version = "0.12.1" description = "Style preserving TOML library" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -961,7 +941,6 @@ files = [ name = "types-markdown" version = "3.4.2.10" description = "Typing stubs for Markdown" -category = "main" optional = false python-versions = "*" files = [ @@ -973,7 +952,6 @@ files = [ name = "typing-extensions" version = "4.8.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -983,14 +961,13 @@ files = [ [[package]] name = "urllib3" -version = "2.0.4" +version = "2.0.6" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.0.6-py3-none-any.whl", hash = "sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2"}, + {file = "urllib3-2.0.6.tar.gz", hash = "sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564"}, ] [package.extras] @@ -1001,14 +978,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "werkzeug" -version = "2.3.7" +version = "3.0.0" description = "The comprehensive WSGI web application library." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "werkzeug-2.3.7-py3-none-any.whl", hash = "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"}, - {file = "werkzeug-2.3.7.tar.gz", hash = "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8"}, + {file = "werkzeug-3.0.0-py3-none-any.whl", hash = "sha256:cbb2600f7eabe51dbc0502f58be0b3e1b96b893b05695ea2b35b43d4de2d9962"}, + {file = "werkzeug-3.0.0.tar.gz", hash = "sha256:3ffff4dcc32db52ef3cc94dff3000a3c2846890f3a5a51800a27b909c5e770f0"}, ] [package.dependencies] @@ -1021,7 +997,6 @@ watchdog = ["watchdog (>=2.3)"] name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1106,7 +1081,6 @@ files = [ name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ From 31ceded4b45d35a0ffed3bfc3a87beff79cd8871 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 18 Oct 2023 17:52:42 +0200 Subject: [PATCH 112/182] Poetry update --- poetry.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2807a53..1516292 100644 --- a/poetry.lock +++ b/poetry.lock @@ -78,13 +78,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "blinker" -version = "1.6.2" +version = "1.6.3" description = "Fast, simple object-to-object and broadcast signaling" 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"}, + {file = "blinker-1.6.3-py3-none-any.whl", hash = "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa"}, + {file = "blinker-1.6.3.tar.gz", hash = "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d"}, ] [[package]] @@ -514,20 +514,20 @@ altgraph = ">=0.17" [[package]] name = "markdown" -version = "3.4.4" +version = "3.5" description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Markdown-3.4.4-py3-none-any.whl", hash = "sha256:a4c1b65c0957b4bd9e7d86ddc7b3c9868fb9670660f6f99f6d1bca8954d5a941"}, - {file = "Markdown-3.4.4.tar.gz", hash = "sha256:225c6123522495d4119a90b3a3ba31a1e87a70369e03f14799ea9c0d7183a3d6"}, + {file = "Markdown-3.5-py3-none-any.whl", hash = "sha256:4afb124395ce5fc34e6d9886dab977fd9ae987fc6e85689f08278cf0c69d4bf3"}, + {file = "Markdown-3.5.tar.gz", hash = "sha256:a807eb2e4778d9156c8f07876c6e4d50b5494c5665c4834f67b06459dfd877b3"}, ] [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} [package.extras] -docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.0)", "mkdocs-nature (>=0.4)"] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] [[package]] @@ -779,13 +779,13 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.9" +version = "2023.10" description = "Community maintained hooks for PyInstaller" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.9.tar.gz", hash = "sha256:76084b5988e3957a9df169d2a935d65500136967e710ddebf57263f1a909cd80"}, - {file = "pyinstaller_hooks_contrib-2023.9-py2.py3-none-any.whl", hash = "sha256:f34f4c6807210025c8073ebe665f422a3aa2ac5f4c7ebf4c2a26cc77bebf63b5"}, + {file = "pyinstaller-hooks-contrib-2023.10.tar.gz", hash = "sha256:4b4a998036abb713774cb26534ca06b7e6e09e4c628196017a10deb11a48747f"}, + {file = "pyinstaller_hooks_contrib-2023.10-py2.py3-none-any.whl", hash = "sha256:6dc1786a8f452941245d5bb85893e2a33632ebdcbc4c23eea41f2ee08281b0c0"}, ] [[package]] @@ -939,13 +939,13 @@ files = [ [[package]] name = "types-markdown" -version = "3.4.2.10" +version = "3.5.0.0" description = "Typing stubs for Markdown" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "types-Markdown-3.4.2.10.tar.gz", hash = "sha256:11e3558d50e3bc1e3f52f3fe073788f4ab917a829374fb354476221c700629e8"}, - {file = "types_Markdown-3.4.2.10-py3-none-any.whl", hash = "sha256:543ff3027fda21c3149780bf835a721cd094c5729e9a87725f180569c960bff8"}, + {file = "types-Markdown-3.5.0.0.tar.gz", hash = "sha256:8c2f5526bba29feee24040d4694ced554d09ae46d1f1523b2b739558beabae42"}, + {file = "types_Markdown-3.5.0.0-py3-none-any.whl", hash = "sha256:f1ff987576f347ec83aca0c2ced45e64e1deb771e0a6189744480013ccb59c96"}, ] [[package]] @@ -961,13 +961,13 @@ files = [ [[package]] name = "urllib3" -version = "2.0.6" +version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.6-py3-none-any.whl", hash = "sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2"}, - {file = "urllib3-2.0.6.tar.gz", hash = "sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564"}, + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, ] [package.extras] From 6e46eea8140dae4cdc8a8f890090c124bbf49a0b Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:53:07 +0100 Subject: [PATCH 113/182] Code Quality --- stacosys/db/dao.py | 12 ++++++------ stacosys/service/configuration.py | 9 +++++---- stacosys/service/mail.py | 10 +++++----- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index 7d9abdb..5a91210 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -28,29 +28,29 @@ def delete_comment(comment: Comment): def find_not_notified_comments(): - return db()(db().comment.notified == None).select() + return db()(db().comment.notified is None).select() def find_not_published_comments(): - return db()(db().comment.published == None).select() + return db()(db().comment.published is None).select() def find_published_comments_by_url(url): - return db()((db().comment.url == url) & (db().comment.published != None)).select( + return db()((db().comment.url == url) & (db().comment.published is not None)).select( orderby=db().comment.published ) def count_published_comments(url): return ( - db()((db().comment.url == url) & (db().comment.published != None)).count() + db()((db().comment.url == url) & (db().comment.published is not None)).count() if url - else db()(db().comment.published != None).count() + else db()(db().comment.published is not None).count() ) def find_recent_published_comments(): - return db()(db().comment.published != None).select( + return db()(db().comment.published is not None).select( orderby=~db().comment.published, limitby=(0, 10) ) diff --git a/stacosys/service/configuration.py b/stacosys/service/configuration.py index 986409e..67129a4 100644 --- a/stacosys/service/configuration.py +++ b/stacosys/service/configuration.py @@ -36,12 +36,13 @@ class Config: def load(self, config_pathname): self._cfg.read(config_pathname) - def _split_key(self, key: ConfigParameter): + @staticmethod + def _split_key(key: ConfigParameter): section, param = str(key.value).split(".") if not param: param = section section = "" - return (section, param) + return section, param def exists(self, key: ConfigParameter): section, param = self._split_key(key) @@ -78,8 +79,8 @@ class Config: def check(self): for key in ConfigParameter: if not self.get(key): - return (False, key.value) - return (True, None) + return False, key.value + return True, None def __repr__(self): dict_repr = {} diff --git a/stacosys/service/mail.py b/stacosys/service/mail.py index d7fe5ca..8589e60 100644 --- a/stacosys/service/mail.py +++ b/stacosys/service/mail.py @@ -18,11 +18,11 @@ class Mailer: self._site_admin_email: str = "" def configure_smtp( - self, - smtp_host, - smtp_port, - smtp_login, - smtp_password, + self, + smtp_host, + smtp_port, + smtp_login, + smtp_password, ) -> None: self._smtp_host = smtp_host self._smtp_port = smtp_port From cfe2da56c02a00b00df3df26a8d87b2603d3a0ca Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:59:45 +0100 Subject: [PATCH 114/182] Revert "Code Quality" This reverts commit 6e46eea8140dae4cdc8a8f890090c124bbf49a0b. --- stacosys/db/dao.py | 12 ++++++------ stacosys/service/configuration.py | 9 ++++----- stacosys/service/mail.py | 10 +++++----- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/stacosys/db/dao.py b/stacosys/db/dao.py index 5a91210..7d9abdb 100644 --- a/stacosys/db/dao.py +++ b/stacosys/db/dao.py @@ -28,29 +28,29 @@ def delete_comment(comment: Comment): def find_not_notified_comments(): - return db()(db().comment.notified is None).select() + return db()(db().comment.notified == None).select() def find_not_published_comments(): - return db()(db().comment.published is None).select() + return db()(db().comment.published == None).select() def find_published_comments_by_url(url): - return db()((db().comment.url == url) & (db().comment.published is not None)).select( + return db()((db().comment.url == url) & (db().comment.published != None)).select( orderby=db().comment.published ) def count_published_comments(url): return ( - db()((db().comment.url == url) & (db().comment.published is not None)).count() + db()((db().comment.url == url) & (db().comment.published != None)).count() if url - else db()(db().comment.published is not None).count() + else db()(db().comment.published != None).count() ) def find_recent_published_comments(): - return db()(db().comment.published is not None).select( + return db()(db().comment.published != None).select( orderby=~db().comment.published, limitby=(0, 10) ) diff --git a/stacosys/service/configuration.py b/stacosys/service/configuration.py index 67129a4..986409e 100644 --- a/stacosys/service/configuration.py +++ b/stacosys/service/configuration.py @@ -36,13 +36,12 @@ class Config: def load(self, config_pathname): self._cfg.read(config_pathname) - @staticmethod - def _split_key(key: ConfigParameter): + def _split_key(self, key: ConfigParameter): section, param = str(key.value).split(".") if not param: param = section section = "" - return section, param + return (section, param) def exists(self, key: ConfigParameter): section, param = self._split_key(key) @@ -79,8 +78,8 @@ class Config: def check(self): for key in ConfigParameter: if not self.get(key): - return False, key.value - return True, None + return (False, key.value) + return (True, None) def __repr__(self): dict_repr = {} diff --git a/stacosys/service/mail.py b/stacosys/service/mail.py index 8589e60..d7fe5ca 100644 --- a/stacosys/service/mail.py +++ b/stacosys/service/mail.py @@ -18,11 +18,11 @@ class Mailer: self._site_admin_email: str = "" def configure_smtp( - self, - smtp_host, - smtp_port, - smtp_login, - smtp_password, + self, + smtp_host, + smtp_port, + smtp_login, + smtp_password, ) -> None: self._smtp_host = smtp_host self._smtp_port = smtp_port From dbe6fd6b0cb6c657784a5409df091e7f3355a33a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:00:15 +0100 Subject: [PATCH 115/182] Upgrade deps --- poetry.lock | 200 ++++++++++++++++++++++++++-------------------------- 1 file changed, 100 insertions(+), 100 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1516292..9ad3cca 100644 --- a/poetry.lock +++ b/poetry.lock @@ -100,101 +100,101 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, - {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] @@ -514,13 +514,13 @@ altgraph = ">=0.17" [[package]] name = "markdown" -version = "3.5" +version = "3.5.1" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.5-py3-none-any.whl", hash = "sha256:4afb124395ce5fc34e6d9886dab977fd9ae987fc6e85689f08278cf0c69d4bf3"}, - {file = "Markdown-3.5.tar.gz", hash = "sha256:a807eb2e4778d9156c8f07876c6e4d50b5494c5665c4834f67b06459dfd877b3"}, + {file = "Markdown-3.5.1-py3-none-any.whl", hash = "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc"}, + {file = "Markdown-3.5.1.tar.gz", hash = "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd"}, ] [package.dependencies] @@ -829,13 +829,13 @@ files = [ [[package]] name = "pytest" -version = "7.4.2" +version = "7.4.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, - {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, ] [package.dependencies] @@ -978,13 +978,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "werkzeug" -version = "3.0.0" +version = "3.0.1" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.8" files = [ - {file = "werkzeug-3.0.0-py3-none-any.whl", hash = "sha256:cbb2600f7eabe51dbc0502f58be0b3e1b96b893b05695ea2b35b43d4de2d9962"}, - {file = "werkzeug-3.0.0.tar.gz", hash = "sha256:3ffff4dcc32db52ef3cc94dff3000a3c2846890f3a5a51800a27b909c5e770f0"}, + {file = "werkzeug-3.0.1-py3-none-any.whl", hash = "sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10"}, + {file = "werkzeug-3.0.1.tar.gz", hash = "sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc"}, ] [package.dependencies] From d12625335474e73524c0718c743710c546497100 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:00:30 +0100 Subject: [PATCH 116/182] Improve unit test --- tests/test_db.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/tests/test_db.py b/tests/test_db.py index a47e8c6..9b235b0 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -84,19 +84,12 @@ def create_comment(url, author_name, content): def test_find_recent_published_comments(setup_db): - comments = [] - comments.append(create_comment("/post", "Adam", "Comment 1")) - comments.append(create_comment("/post", "Arf", "Comment 2")) - comments.append(create_comment("/post", "Arwin", "Comment 3")) - comments.append(create_comment("/post", "Bill", "Comment 4")) - comments.append(create_comment("/post", "Bo", "Comment 5")) - comments.append(create_comment("/post", "Charles", "Comment 6")) - comments.append(create_comment("/post", "Dan", "Comment 7")) - comments.append(create_comment("/post", "Dwayne", "Comment 8")) - comments.append(create_comment("/post", "Erl", "Comment 9")) - comments.append(create_comment("/post", "Jay", "Comment 10")) - comments.append(create_comment("/post", "Kenny", "Comment 11")) - comments.append(create_comment("/post", "Lord", "Comment 12")) + comments = [create_comment("/post", "Adam", "Comment 1"), create_comment("/post", "Arf", "Comment 2"), + create_comment("/post", "Arwin", "Comment 3"), create_comment("/post", "Bill", "Comment 4"), + create_comment("/post", "Bo", "Comment 5"), create_comment("/post", "Charles", "Comment 6"), + create_comment("/post", "Dan", "Comment 7"), create_comment("/post", "Dwayne", "Comment 8"), + create_comment("/post", "Erl", "Comment 9"), create_comment("/post", "Jay", "Comment 10"), + create_comment("/post", "Kenny", "Comment 11"), create_comment("/post", "Lord", "Comment 12")] rows = dao.find_recent_published_comments() assert len(rows) == 0 From cd707f80083cccf806958c5bab405dc742d4c24a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:43:19 +0100 Subject: [PATCH 117/182] pyinstaller action --- .github/workflows/pyinstaller | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/workflows/pyinstaller diff --git a/.github/workflows/pyinstaller b/.github/workflows/pyinstaller new file mode 100644 index 0000000..3cf108e --- /dev/null +++ b/.github/workflows/pyinstaller @@ -0,0 +1,24 @@ +name: Package exe with PyInstaller - Windows + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: PyInstaller + uses: JackMcKew/pyinstaller-action-windows@python3-10-pyinstaller-5-3 + with: + path: . + + - uses: actions/upload-artifact@v2 + with: + name: my-exe + path: src/dist From c67c41a67d08ffce7b16bf3d4e00ea1839f1f43c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:44:17 +0100 Subject: [PATCH 118/182] Rename pyinstaller to pyinstaller.yml --- .github/workflows/{pyinstaller => pyinstaller.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{pyinstaller => pyinstaller.yml} (100%) diff --git a/.github/workflows/pyinstaller b/.github/workflows/pyinstaller.yml similarity index 100% rename from .github/workflows/pyinstaller rename to .github/workflows/pyinstaller.yml From 59171d27789aea014ea81afab275da2eebba5948 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:05:31 +0100 Subject: [PATCH 119/182] Update pyinstaller.yml --- .github/workflows/pyinstaller.yml | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index 3cf108e..ffc0942 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -1,24 +1,19 @@ -name: Package exe with PyInstaller - Windows - +name: Package exe with PyInstaller on: push: branches: [ main ] pull_request: branches: [ main ] - jobs: build: - runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - - name: PyInstaller - uses: JackMcKew/pyinstaller-action-windows@python3-10-pyinstaller-5-3 + - name: Package application + uses: JackMcKew/pyinstaller-action-linux@main with: path: . - - uses: actions/upload-artifact@v2 with: - name: my-exe - path: src/dist + name: stacosys + path: dist/linux From 1cd0698ab03c5e90de4fe717d328348e83eeaf1a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:08:37 +0100 Subject: [PATCH 120/182] Update pyinstaller.yml --- .github/workflows/pyinstaller.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index ffc0942..497d054 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -1,4 +1,4 @@ -name: Package exe with PyInstaller +name: Package with PyInstaller on: push: branches: [ main ] @@ -10,7 +10,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Package application - uses: JackMcKew/pyinstaller-action-linux@main + uses: JackMcKew/pyinstaller-action-linux@python3.10 with: path: . - uses: actions/upload-artifact@v2 From 56b14b3dba30ed9a1dca2b69d45a3e1255040c72 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:16:25 +0100 Subject: [PATCH 121/182] Update pyinstaller.yml --- .github/workflows/pyinstaller.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index 497d054..1243e59 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -1,4 +1,4 @@ -name: Package with PyInstaller +name: pyinstaller on: push: branches: [ main ] From b57c4f1ae676613e09a87b9ea85ede90af397070 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 6 Nov 2023 19:51:06 +0100 Subject: [PATCH 122/182] Init Vagrantfile to run pyinstaller on Debian 11 --- vagrant/Vagrantfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 vagrant/Vagrantfile diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile new file mode 100644 index 0000000..8f91a53 --- /dev/null +++ b/vagrant/Vagrantfile @@ -0,0 +1,11 @@ +Vagrant.configure("2") do |config| + config.vm.box = "debian/bullseye64" + config.vm.provider :virtualbox do |vb| + end + + config.vm.define "master" do |master| + master.vm.provision "shell", inline: <<-SHELL + mkdir /home/vagrant/stacosys + SHELL + end +end \ No newline at end of file From 6d53fdecacc67f3c5062295a6f59e64649f6dfb7 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:45:35 +0100 Subject: [PATCH 123/182] Feature rye (#17) Migrate from Poetry to Rye Adaptat github actions Group build targets in makefile --- .github/workflows/docker.yml | 29 +- .github/workflows/pyinstaller.yml | 19 +- .github/workflows/pytest.yml | 36 +- Makefile | 37 +- vagrant/Vagrantfile => Vagrantfile | 3 + build.sh | 3 - flake8.ini | 4 - poetry.lock | 1098 ----------------- poetry.toml | 3 - pyproject.toml | 58 +- requirements-dev.lock | 53 + requirements.lock | 26 + run.sh | 3 - {stacosys => src/stacosys}/db/__init__.py | 1 - {stacosys => src/stacosys}/db/dao.py | 0 .../stacosys}/interface/__init__.py | 0 {stacosys => src/stacosys}/interface/api.py | 0 {stacosys => src/stacosys}/interface/form.py | 0 .../interface/templates/admin_fr.html | 0 .../interface/templates/login_fr.html | 0 .../stacosys}/interface/web/admin.py | 0 {stacosys => src/stacosys}/model/comment.py | 0 {stacosys => src/stacosys}/model/email.py | 0 {stacosys => src/stacosys}/run.py | 0 .../stacosys}/service/__init__.py | 0 .../stacosys}/service/configuration.py | 1 - {stacosys => src/stacosys}/service/mail.py | 0 {stacosys => src/stacosys}/service/rssfeed.py | 0 stacosys.spec | 15 +- stacosys/__init__.py | 0 tests/test_db.py | 21 +- whitelist.txt | 1 - 32 files changed, 208 insertions(+), 1203 deletions(-) rename vagrant/Vagrantfile => Vagrantfile (78%) delete mode 100755 build.sh delete mode 100644 flake8.ini delete mode 100644 poetry.lock delete mode 100644 poetry.toml create mode 100644 requirements-dev.lock create mode 100644 requirements.lock delete mode 100755 run.sh rename {stacosys => src/stacosys}/db/__init__.py (99%) rename {stacosys => src/stacosys}/db/dao.py (100%) rename {stacosys => src/stacosys}/interface/__init__.py (100%) rename {stacosys => src/stacosys}/interface/api.py (100%) rename {stacosys => src/stacosys}/interface/form.py (100%) rename {stacosys => src/stacosys}/interface/templates/admin_fr.html (100%) rename {stacosys => src/stacosys}/interface/templates/login_fr.html (100%) rename {stacosys => src/stacosys}/interface/web/admin.py (100%) rename {stacosys => src/stacosys}/model/comment.py (100%) rename {stacosys => src/stacosys}/model/email.py (100%) rename {stacosys => src/stacosys}/run.py (100%) rename {stacosys => src/stacosys}/service/__init__.py (100%) rename {stacosys => src/stacosys}/service/configuration.py (99%) rename {stacosys => src/stacosys}/service/mail.py (100%) rename {stacosys => src/stacosys}/service/rssfeed.py (100%) delete mode 100644 stacosys/__init__.py delete mode 100644 whitelist.txt diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index bf4f989..4315b58 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -3,21 +3,22 @@ on: push: branches: [ main ] jobs: - build: - runs-on: ubuntu-latest + build_docker: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + python-version: [3.10.13] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: "3.11.0" - - name: Install poetry - uses: abatilo/actions-poetry@v2 - with: - poetry-version: 1.2.2 - - name: Install dependencies - run: poetry install - - name: Build project - run: poetry build + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up rye + uses: atu4403/setup-rye-multiOS@v1 + - name: Sync dependencies using rye + run: | + rye pin ${{ matrix.python-version }} + rye sync + rye build --wheel --out dist - name: Build the Docker image run: | echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index 1243e59..f7799b5 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -2,13 +2,22 @@ name: pyinstaller on: push: branches: [ main ] - pull_request: - branches: [ main ] jobs: - build: - runs-on: ubuntu-latest + build_binary: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + python-version: [3.10.13] steps: - - uses: actions/checkout@v2 + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up rye + uses: atu4403/setup-rye-multiOS@v1 + - name: Sync dependencies using rye + run: | + rye pin ${{ matrix.python-version }} + rye sync - name: Package application uses: JackMcKew/pyinstaller-action-linux@python3.10 with: diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 81d2900..50c7cd3 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -2,30 +2,26 @@ name: pytest on: push jobs: - ci: - strategy: - fail-fast: false - matrix: - python-version: [3.11.0] - poetry-version: [1.2.2] - os: [ubuntu-latest, macos-latest, windows-latest] + test: runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + python-version: [3.10.13] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install poetry - uses: abatilo/actions-poetry@v2 - with: - poetry-version: ${{ matrix.poetry-version }} - - name: Install dependencies - run: poetry install + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up rye + uses: atu4403/setup-rye-multiOS@v1 + - name: Sync dependencies using rye + run: | + rye pin ${{ matrix.python-version }} + rye sync - name: Pytest and Coverage run: | - poetry run coverage run -m --source=stacosys pytest tests - poetry run coverage report + rye run coverage run -m --source=stacosys pytest tests + rye run coverage report - name: Send report to Coveralls - run: poetry run coveralls + run: rye run coveralls env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} diff --git a/Makefile b/Makefile index e7377fc..8ab4938 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,35 @@ -all: black test typehint lint +ifeq (run,$(firstword $(MAKECMDGOALS))) + # use the rest as arguments for "run" + RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) + # ...and turn them into do-nothing targets + $(eval $(RUN_ARGS):;@:) +endif + +.PHONY: all build run test + +# code quality +all: black typehint lint black: - poetry run isort --multi-line 3 --profile black stacosys/ tests/ - poetry run black --target-version py311 stacosys/ tests/ - -test: - poetry run coverage run -m --source=stacosys pytest - poetry run coverage report + rye run isort --multi-line 3 --profile black src/ tests/ + rye run black --target-version py311 src/ tests/ typehint: - poetry run mypy --ignore-missing-imports stacosys/ tests/ + rye run mypy --ignore-missing-imports src/ tests/ lint: - poetry run pylint stacosys/ + rye run pylint src/ +# test +test: + rye run coverage run -m --source=stacosys pytest tests + rye run coverage report + +# build +#rye run pyinstaller src/stacosys/run.py --name stacosys --onefile +build: + rye run pyinstaller --clean stacosys.spec + +# run +run: + rye run python src/stacosys/run.py $(RUN_ARGS) \ No newline at end of file diff --git a/vagrant/Vagrantfile b/Vagrantfile similarity index 78% rename from vagrant/Vagrantfile rename to Vagrantfile index 8f91a53..9f6d773 100644 --- a/vagrant/Vagrantfile +++ b/Vagrantfile @@ -1,9 +1,12 @@ Vagrant.configure("2") do |config| config.vm.box = "debian/bullseye64" config.vm.provider :virtualbox do |vb| + vb.memory = 1024 + vb.cpus = 1 end config.vm.define "master" do |master| + master.vm.hostname = "master" master.vm.provision "shell", inline: <<-SHELL mkdir /home/vagrant/stacosys SHELL diff --git a/build.sh b/build.sh deleted file mode 100755 index 5da4ff8..0000000 --- a/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -#pyinstaller stacosys/run.py --name stacosys --onefile -poetry run pyinstaller stacosys.spec diff --git a/flake8.ini b/flake8.ini deleted file mode 100644 index 9b8e5e8..0000000 --- a/flake8.ini +++ /dev/null @@ -1,4 +0,0 @@ -[flake8] -max-line-length = 88 -extend-ignore = E203 -spellcheck-targets=comments diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 9ad3cca..0000000 --- a/poetry.lock +++ /dev/null @@ -1,1098 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "altgraph" -version = "0.17.4" -description = "Python graph (network) package" -optional = false -python-versions = "*" -files = [ - {file = "altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff"}, - {file = "altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406"}, -] - -[[package]] -name = "astroid" -version = "2.15.8" -description = "An abstract syntax tree for Python with inference support." -optional = false -python-versions = ">=3.7.2" -files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, -] - -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, -] - -[[package]] -name = "background" -version = "0.2.1" -description = "It does what it says it does." -optional = false -python-versions = "*" -files = [ - {file = "background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802"}, - {file = "background-0.2.1.tar.gz", hash = "sha256:4a5ed40b4a2a9f3340b1402862725d35016dc2490f95d89a2de47c3ddf215b91"}, -] - -[[package]] -name = "black" -version = "22.12.0" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.7" -files = [ - {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, - {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, - {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, - {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, - {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, - {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, - {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, - {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, - {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, - {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, - {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, - {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -pathspec = ">=0.9.0" -platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - -[[package]] -name = "blinker" -version = "1.6.3" -description = "Fast, simple object-to-object and broadcast signaling" -optional = false -python-versions = ">=3.7" -files = [ - {file = "blinker-1.6.3-py3-none-any.whl", hash = "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa"}, - {file = "blinker-1.6.3.tar.gz", hash = "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d"}, -] - -[[package]] -name = "certifi" -version = "2023.7.22" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -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 = "coverage" -version = "6.5.0" -description = "Code coverage measurement for Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, - {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, - {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, - {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, - {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, - {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, - {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, - {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, - {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, - {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, - {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, - {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, - {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, - {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, - {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, - {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, -] - -[package.dependencies] -tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "coveralls" -version = "3.3.1" -description = "Show coverage stats online via coveralls.io" -optional = false -python-versions = ">= 3.5" -files = [ - {file = "coveralls-3.3.1-py2.py3-none-any.whl", hash = "sha256:f42015f31d386b351d4226389b387ae173207058832fbf5c8ec4b40e27b16026"}, - {file = "coveralls-3.3.1.tar.gz", hash = "sha256:b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea"}, -] - -[package.dependencies] -coverage = ">=4.1,<6.0.dev0 || >6.1,<6.1.1 || >6.1.1,<7.0" -docopt = ">=0.6.1" -requests = ">=1.0.0" - -[package.extras] -yaml = ["PyYAML (>=3.10)"] - -[[package]] -name = "dill" -version = "0.3.7" -description = "serialize all of Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, -] - -[package.extras] -graph = ["objgraph (>=1.7.2)"] - -[[package]] -name = "docopt" -version = "0.6.2" -description = "Pythonic argument parser, that will make you smile" -optional = false -python-versions = "*" -files = [ - {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.1.3" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "flask" -version = "2.3.3" -description = "A simple framework for building complex web applications." -optional = false -python-versions = ">=3.8" -files = [ - {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, - {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, -] - -[package.dependencies] -blinker = ">=1.6.2" -click = ">=8.1.3" -importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} -itsdangerous = ">=2.1.2" -Jinja2 = ">=3.1.2" -Werkzeug = ">=2.3.7" - -[package.extras] -async = ["asgiref (>=3.2)"] -dotenv = ["python-dotenv"] - -[[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] - -[[package]] -name = "importlib-metadata" -version = "6.8.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isort" -version = "5.12.0" -description = "A Python utility / library to sort Python imports." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, -] - -[package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] - -[[package]] -name = "itsdangerous" -version = "2.1.2" -description = "Safely pass data to untrusted environments and back." -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." -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 = "lazy-object-proxy" -version = "1.9.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.7" -files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, -] - -[[package]] -name = "macholib" -version = "1.16.3" -description = "Mach-O header analysis and editing" -optional = false -python-versions = "*" -files = [ - {file = "macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c"}, - {file = "macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30"}, -] - -[package.dependencies] -altgraph = ">=0.17" - -[[package]] -name = "markdown" -version = "3.5.1" -description = "Python implementation of John Gruber's Markdown." -optional = false -python-versions = ">=3.8" -files = [ - {file = "Markdown-3.5.1-py3-none-any.whl", hash = "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc"}, - {file = "Markdown-3.5.1.tar.gz", hash = "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] -testing = ["coverage", "pyyaml"] - -[[package]] -name = "markupsafe" -version = "2.1.3" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, -] - -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] - -[[package]] -name = "mypy" -version = "0.991" -description = "Optional static typing for Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, - {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, - {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, - {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, - {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, - {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, - {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, - {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, - {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, - {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, - {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, - {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, - {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, - {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, - {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, - {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, - {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, - {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, - {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, - {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, - {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, - {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, - {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, - {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, -] - -[package.dependencies] -mypy-extensions = ">=0.4.3" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=3.10" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -install-types = ["pip"] -python2 = ["typed-ast (>=1.4.0,<2)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.5" -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pathspec" -version = "0.11.2" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, -] - -[[package]] -name = "pefile" -version = "2023.2.7" -description = "Python PE parsing module" -optional = false -python-versions = ">=3.6.0" -files = [ - {file = "pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6"}, - {file = "pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"}, -] - -[[package]] -name = "platformdirs" -version = "3.11.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -optional = false -python-versions = ">=3.7" -files = [ - {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, - {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, -] - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] - -[[package]] -name = "pluggy" -version = "1.3.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pydal" -version = "20221110.1" -description = "a pure Python Database Abstraction Layer (for python version 2.7 and 3.x)" -optional = false -python-versions = "*" -files = [ - {file = "pydal-20221110.1.tar.gz", hash = "sha256:7c3e891c70f8d8918e36276f210a1959bb7badf3b276f47191986ffcf5b6a390"}, -] - -[[package]] -name = "pyinstaller" -version = "5.13.2" -description = "PyInstaller bundles a Python application and all its dependencies into a single package." -optional = false -python-versions = "<3.13,>=3.7" -files = [ - {file = "pyinstaller-5.13.2-py3-none-macosx_10_13_universal2.whl", hash = "sha256:16cbd66b59a37f4ee59373a003608d15df180a0d9eb1a29ff3bfbfae64b23d0f"}, - {file = "pyinstaller-5.13.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8f6dd0e797ae7efdd79226f78f35eb6a4981db16c13325e962a83395c0ec7420"}, - {file = "pyinstaller-5.13.2-py3-none-manylinux2014_i686.whl", hash = "sha256:65133ed89467edb2862036b35d7c5ebd381670412e1e4361215e289c786dd4e6"}, - {file = "pyinstaller-5.13.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:7d51734423685ab2a4324ab2981d9781b203dcae42839161a9ee98bfeaabdade"}, - {file = "pyinstaller-5.13.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:2c2fe9c52cb4577a3ac39626b84cf16cf30c2792f785502661286184f162ae0d"}, - {file = "pyinstaller-5.13.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c63ef6133eefe36c4b2f4daf4cfea3d6412ece2ca218f77aaf967e52a95ac9b8"}, - {file = "pyinstaller-5.13.2-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:aadafb6f213549a5906829bb252e586e2cf72a7fbdb5731810695e6516f0ab30"}, - {file = "pyinstaller-5.13.2-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:b2e1c7f5cceb5e9800927ddd51acf9cc78fbaa9e79e822c48b0ee52d9ce3c892"}, - {file = "pyinstaller-5.13.2-py3-none-win32.whl", hash = "sha256:421cd24f26144f19b66d3868b49ed673176765f92fa9f7914cd2158d25b6d17e"}, - {file = "pyinstaller-5.13.2-py3-none-win_amd64.whl", hash = "sha256:ddcc2b36052a70052479a9e5da1af067b4496f43686ca3cdda99f8367d0627e4"}, - {file = "pyinstaller-5.13.2-py3-none-win_arm64.whl", hash = "sha256:27cd64e7cc6b74c5b1066cbf47d75f940b71356166031deb9778a2579bb874c6"}, - {file = "pyinstaller-5.13.2.tar.gz", hash = "sha256:c8e5d3489c3a7cc5f8401c2d1f48a70e588f9967e391c3b06ddac1f685f8d5d2"}, -] - -[package.dependencies] -altgraph = "*" -macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} -pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} -pyinstaller-hooks-contrib = ">=2021.4" -pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""} -setuptools = ">=42.0.0" - -[package.extras] -encryption = ["tinyaes (>=1.0.0)"] -hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] - -[[package]] -name = "pyinstaller-hooks-contrib" -version = "2023.10" -description = "Community maintained hooks for PyInstaller" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyinstaller-hooks-contrib-2023.10.tar.gz", hash = "sha256:4b4a998036abb713774cb26534ca06b7e6e09e4c628196017a10deb11a48747f"}, - {file = "pyinstaller_hooks_contrib-2023.10-py2.py3-none-any.whl", hash = "sha256:6dc1786a8f452941245d5bb85893e2a33632ebdcbc4c23eea41f2ee08281b0c0"}, -] - -[[package]] -name = "pylint" -version = "2.17.7" -description = "python code static checker" -optional = false -python-versions = ">=3.7.2" -files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, -] - -[package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = [ - {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, -] -isort = ">=4.2.5,<6" -mccabe = ">=0.6,<0.8" -platformdirs = ">=2.2.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -tomlkit = ">=0.10.1" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} - -[package.extras] -spelling = ["pyenchant (>=3.2,<4.0)"] -testutils = ["gitpython (>3)"] - -[[package]] -name = "pyrss2gen" -version = "1.1" -description = "Generate RSS2 using a Python data structure" -optional = false -python-versions = "*" -files = [ - {file = "PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7"}, -] - -[[package]] -name = "pytest" -version = "7.4.3" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, - {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} - -[package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "4.1.0" -description = "Pytest plugin for measuring coverage." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, -] - -[package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] - -[[package]] -name = "pywin32-ctypes" -version = "0.2.2" -description = "A (partial) reimplementation of pywin32 using ctypes/cffi" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, - {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, -] - -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.7" -files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "setuptools" -version = "68.2.2" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, -] - -[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-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "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.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - -[[package]] -name = "tomlkit" -version = "0.12.1" -description = "Style preserving TOML library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, - {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, -] - -[[package]] -name = "types-markdown" -version = "3.5.0.0" -description = "Typing stubs for Markdown" -optional = false -python-versions = ">=3.7" -files = [ - {file = "types-Markdown-3.5.0.0.tar.gz", hash = "sha256:8c2f5526bba29feee24040d4694ced554d09ae46d1f1523b2b739558beabae42"}, - {file = "types_Markdown-3.5.0.0-py3-none-any.whl", hash = "sha256:f1ff987576f347ec83aca0c2ced45e64e1deb771e0a6189744480013ccb59c96"}, -] - -[[package]] -name = "typing-extensions" -version = "4.8.0" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, -] - -[[package]] -name = "urllib3" -version = "2.0.7" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.7" -files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "werkzeug" -version = "3.0.1" -description = "The comprehensive WSGI web application library." -optional = false -python-versions = ">=3.8" -files = [ - {file = "werkzeug-3.0.1-py3-none-any.whl", hash = "sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10"}, - {file = "werkzeug-3.0.1.tar.gz", hash = "sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc"}, -] - -[package.dependencies] -MarkupSafe = ">=2.1.1" - -[package.extras] -watchdog = ["watchdog (>=2.3)"] - -[[package]] -name = "wrapt" -version = "1.15.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, - {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, - {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, - {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, - {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, - {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, - {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, - {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, - {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, - {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, - {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, - {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, - {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, - {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, - {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, - {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, - {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, - {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, - {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, -] - -[[package]] -name = "zipp" -version = "3.17.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] - -[metadata] -lock-version = "2.0" -python-versions = ">=3.9.0,<3.12" -content-hash = "8bda48658818d8aa2efbc31e1475d1b35635edfbc4ef37ffeac9d77523d69d60" diff --git a/poetry.toml b/poetry.toml deleted file mode 100644 index be97f1e..0000000 --- a/poetry.toml +++ /dev/null @@ -1,3 +0,0 @@ -[virtualenvs] -in-project = true -prefer-active-python = true \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 796fb44..a2cd284 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,30 +1,42 @@ -[tool.poetry] +[project] name = "stacosys" version = "3.3" description = "STAtic COmmenting SYStem" -authors = ["Yax"] +authors = [ + { name = "Yax" } +] readme = "README.md" +requires-python = ">= 3.8" +dependencies = [ + "pyrss2gen>=1.1", + "markdown>=3.5.1", + "requests>=2.31.0", + "background>=0.2.1", + "Flask>=3.0.0", + "types-markdown>=3.5.0.1", + "pydal>=20230521.1" +] -[tool.poetry.dependencies] -python = ">=3.9.0,<3.12" -pyrss2gen = "^1.1" -markdown = "^3.1.1" -requests = "^2.25.1" -coverage = "^6.5" -background = "^0.2.1" -Flask = "^2.1.1" -types-markdown = "^3.4.2.1" -pydal = "^20221110.1" - -[tool.poetry.group.dev.dependencies] -pylint = "^2.15" -mypy = "^0.991" -pytest = "^7.2.0" -coveralls = "^3.3.1" -pytest-cov = "^4.0.0" -black = "^22.10.0" -pyinstaller = "^5.9.0" +[tool.pytest.ini_options] +pythonpath = [ + "src" +] [build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.rye] +managed = true +dev-dependencies = [ + "pylint>=3.0.2", + "mypy>=1.6.1", + "pytest>=7.4.3", + "coveralls>=3.3.1", + "pytest-cov>=4.1.0", + "black>=23.10.1", + "pyinstaller>=6.1.0", +] + +[tool.hatch.metadata] +allow-direct-references = true diff --git a/requirements-dev.lock b/requirements-dev.lock new file mode 100644 index 0000000..0520afd --- /dev/null +++ b/requirements-dev.lock @@ -0,0 +1,53 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false + +-e file:. +altgraph==0.17.4 +astroid==3.0.1 +background==0.2.1 +black==23.11.0 +blinker==1.7.0 +certifi==2023.7.22 +charset-normalizer==3.3.2 +click==8.1.7 +coverage==6.5.0 +coveralls==3.3.1 +dill==0.3.7 +docopt==0.6.2 +exceptiongroup==1.1.3 +flask==3.0.0 +idna==3.4 +iniconfig==2.0.0 +isort==5.12.0 +itsdangerous==2.1.2 +jinja2==3.1.2 +markdown==3.5.1 +markupsafe==2.1.3 +mccabe==0.7.0 +mypy==1.6.1 +mypy-extensions==1.0.0 +packaging==23.2 +pathspec==0.11.2 +platformdirs==3.11.0 +pluggy==1.3.0 +pydal==20230521.1 +pyinstaller==6.1.0 +pyinstaller-hooks-contrib==2023.10 +pylint==3.0.2 +pyrss2gen==1.1 +pytest==7.4.3 +pytest-cov==4.1.0 +requests==2.31.0 +tomli==2.0.1 +tomlkit==0.12.2 +types-markdown==3.5.0.1 +typing-extensions==4.8.0 +urllib3==2.0.7 +werkzeug==3.0.1 +# The following packages are considered to be unsafe in a requirements file: +setuptools==68.2.2 diff --git a/requirements.lock b/requirements.lock new file mode 100644 index 0000000..01232a5 --- /dev/null +++ b/requirements.lock @@ -0,0 +1,26 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false + +-e file:. +background==0.2.1 +blinker==1.7.0 +certifi==2023.7.22 +charset-normalizer==3.3.2 +click==8.1.7 +flask==3.0.0 +idna==3.4 +itsdangerous==2.1.2 +jinja2==3.1.2 +markdown==3.5.1 +markupsafe==2.1.3 +pydal==20230521.1 +pyrss2gen==1.1 +requests==2.31.0 +types-markdown==3.5.0.1 +urllib3==2.0.7 +werkzeug==3.0.1 diff --git a/run.sh b/run.sh deleted file mode 100755 index fb544ec..0000000 --- a/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -python3 stacosys/run.py "$@" - diff --git a/stacosys/db/__init__.py b/src/stacosys/db/__init__.py similarity index 99% rename from stacosys/db/__init__.py rename to src/stacosys/db/__init__.py index 01b2a36..fd23efe 100644 --- a/stacosys/db/__init__.py +++ b/src/stacosys/db/__init__.py @@ -5,7 +5,6 @@ from pydal import DAL, Field class Database: - db_dal = DAL() def configure(self, db_uri): diff --git a/stacosys/db/dao.py b/src/stacosys/db/dao.py similarity index 100% rename from stacosys/db/dao.py rename to src/stacosys/db/dao.py diff --git a/stacosys/interface/__init__.py b/src/stacosys/interface/__init__.py similarity index 100% rename from stacosys/interface/__init__.py rename to src/stacosys/interface/__init__.py diff --git a/stacosys/interface/api.py b/src/stacosys/interface/api.py similarity index 100% rename from stacosys/interface/api.py rename to src/stacosys/interface/api.py diff --git a/stacosys/interface/form.py b/src/stacosys/interface/form.py similarity index 100% rename from stacosys/interface/form.py rename to src/stacosys/interface/form.py diff --git a/stacosys/interface/templates/admin_fr.html b/src/stacosys/interface/templates/admin_fr.html similarity index 100% rename from stacosys/interface/templates/admin_fr.html rename to src/stacosys/interface/templates/admin_fr.html diff --git a/stacosys/interface/templates/login_fr.html b/src/stacosys/interface/templates/login_fr.html similarity index 100% rename from stacosys/interface/templates/login_fr.html rename to src/stacosys/interface/templates/login_fr.html diff --git a/stacosys/interface/web/admin.py b/src/stacosys/interface/web/admin.py similarity index 100% rename from stacosys/interface/web/admin.py rename to src/stacosys/interface/web/admin.py diff --git a/stacosys/model/comment.py b/src/stacosys/model/comment.py similarity index 100% rename from stacosys/model/comment.py rename to src/stacosys/model/comment.py diff --git a/stacosys/model/email.py b/src/stacosys/model/email.py similarity index 100% rename from stacosys/model/email.py rename to src/stacosys/model/email.py diff --git a/stacosys/run.py b/src/stacosys/run.py similarity index 100% rename from stacosys/run.py rename to src/stacosys/run.py diff --git a/stacosys/service/__init__.py b/src/stacosys/service/__init__.py similarity index 100% rename from stacosys/service/__init__.py rename to src/stacosys/service/__init__.py diff --git a/stacosys/service/configuration.py b/src/stacosys/service/configuration.py similarity index 99% rename from stacosys/service/configuration.py rename to src/stacosys/service/configuration.py index 986409e..ef348e9 100644 --- a/stacosys/service/configuration.py +++ b/src/stacosys/service/configuration.py @@ -30,7 +30,6 @@ class ConfigParameter(Enum): class Config: - _cfg = configparser.ConfigParser() def load(self, config_pathname): diff --git a/stacosys/service/mail.py b/src/stacosys/service/mail.py similarity index 100% rename from stacosys/service/mail.py rename to src/stacosys/service/mail.py diff --git a/stacosys/service/rssfeed.py b/src/stacosys/service/rssfeed.py similarity index 100% rename from stacosys/service/rssfeed.py rename to src/stacosys/service/rssfeed.py diff --git a/stacosys.spec b/stacosys.spec index 85a4e01..30a8b39 100644 --- a/stacosys.spec +++ b/stacosys.spec @@ -1,31 +1,24 @@ # -*- mode: python ; coding: utf-8 -*- -block_cipher = None - - a = Analysis( - ['stacosys/run.py'], - pathex=[], + ['src/stacosys/run.py'], + pathex=['src'], binaries=[], - datas=[('stacosys/interface/templates/*.html', 'stacosys/interface/templates/')], + datas=[('src/stacosys/interface/templates/*.html', 'src/stacosys/interface/templates/')], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher, noarchive=False, ) -pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) +pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, a.binaries, - a.zipfiles, a.datas, [], name='stacosys', diff --git a/stacosys/__init__.py b/stacosys/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/test_db.py b/tests/test_db.py index 9b235b0..f82b389 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -83,13 +83,20 @@ def create_comment(url, author_name, content): def test_find_recent_published_comments(setup_db): - - comments = [create_comment("/post", "Adam", "Comment 1"), create_comment("/post", "Arf", "Comment 2"), - create_comment("/post", "Arwin", "Comment 3"), create_comment("/post", "Bill", "Comment 4"), - create_comment("/post", "Bo", "Comment 5"), create_comment("/post", "Charles", "Comment 6"), - create_comment("/post", "Dan", "Comment 7"), create_comment("/post", "Dwayne", "Comment 8"), - create_comment("/post", "Erl", "Comment 9"), create_comment("/post", "Jay", "Comment 10"), - create_comment("/post", "Kenny", "Comment 11"), create_comment("/post", "Lord", "Comment 12")] + comments = [ + create_comment("/post", "Adam", "Comment 1"), + create_comment("/post", "Arf", "Comment 2"), + create_comment("/post", "Arwin", "Comment 3"), + create_comment("/post", "Bill", "Comment 4"), + create_comment("/post", "Bo", "Comment 5"), + create_comment("/post", "Charles", "Comment 6"), + create_comment("/post", "Dan", "Comment 7"), + create_comment("/post", "Dwayne", "Comment 8"), + create_comment("/post", "Erl", "Comment 9"), + create_comment("/post", "Jay", "Comment 10"), + create_comment("/post", "Kenny", "Comment 11"), + create_comment("/post", "Lord", "Comment 12"), + ] rows = dao.find_recent_published_comments() assert len(rows) == 0 diff --git a/whitelist.txt b/whitelist.txt deleted file mode 100644 index a44b465..0000000 --- a/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -RSS \ No newline at end of file From 8ad46a798ccd078594e6cd3e82a7cf6d7374eec4 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:35:56 +0100 Subject: [PATCH 124/182] Add check target --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 8ab4938..a4492ea 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,9 @@ typehint: lint: rye run pylint src/ +# check +check: all + # test test: rye run coverage run -m --source=stacosys pytest tests From 22b7f83d82ddbd74a69dfbf314cfd73ef3dad883 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:36:08 +0100 Subject: [PATCH 125/182] Remove Vagrantfile --- Vagrantfile | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 Vagrantfile diff --git a/Vagrantfile b/Vagrantfile deleted file mode 100644 index 9f6d773..0000000 --- a/Vagrantfile +++ /dev/null @@ -1,14 +0,0 @@ -Vagrant.configure("2") do |config| - config.vm.box = "debian/bullseye64" - config.vm.provider :virtualbox do |vb| - vb.memory = 1024 - vb.cpus = 1 - end - - config.vm.define "master" do |master| - master.vm.hostname = "master" - master.vm.provision "shell", inline: <<-SHELL - mkdir /home/vagrant/stacosys - SHELL - end -end \ No newline at end of file From 1959bb4f7f68911c76b3f54d0affbae720cd479a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:36:37 +0100 Subject: [PATCH 126/182] Development mode --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a4492ea..9fe962f 100644 --- a/Makefile +++ b/Makefile @@ -35,4 +35,4 @@ build: # run run: - rye run python src/stacosys/run.py $(RUN_ARGS) \ No newline at end of file + PYTHONPATH=src/ rye run python src/stacosys/run.py $(RUN_ARGS) \ No newline at end of file From bed5eb0d114e01a9860d298df97baf841f98a1c1 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 19 Nov 2023 17:36:31 +0100 Subject: [PATCH 127/182] Clean gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 81aa1d1..8e21425 100644 --- a/.gitignore +++ b/.gitignore @@ -62,9 +62,6 @@ db.sqlite db.json node_modules comments.xml -stacosys/bin/ -stacosys/pyvenv.cfg -stacosys/lib64 .vscode/ .pytest_cache/ workspace.code-workspace From e2664310f32863fc2b6a598fa2c96e974b58a7fd Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 26 Nov 2023 17:06:01 +0100 Subject: [PATCH 128/182] fix pylintrc warnings --- .pylintrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pylintrc b/.pylintrc index 51832a5..75dae48 100644 --- a/.pylintrc +++ b/.pylintrc @@ -307,8 +307,8 @@ min-public-methods=2 [EXCEPTIONS] # Exceptions that will emit a warning when caught. -overgeneral-exceptions=BaseException, - Exception +overgeneral-exceptions=builtins.BaseException, + builtins.Exception [FORMAT] From 9f1a408a7ada15571d20281e9fa79d962f1fef82 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 26 Nov 2023 17:51:51 +0100 Subject: [PATCH 129/182] CQ --- dbmigration/create_empty_db.py | 2 +- dbmigration/migrate_from_1.1_to_2.0.py | 2 +- src/stacosys/db/dao.py | 2 +- src/stacosys/model/comment.py | 2 +- src/stacosys/model/email.py | 2 +- src/stacosys/run.py | 2 +- src/stacosys/service/configuration.py | 9 +++++---- src/stacosys/service/rssfeed.py | 2 +- tests/test_api.py | 2 +- tests/test_config.py | 2 +- tests/test_db.py | 2 +- tests/test_form.py | 2 +- tests/test_mail.py | 2 +- tests/test_rssfeed.py | 2 +- 14 files changed, 18 insertions(+), 17 deletions(-) diff --git a/dbmigration/create_empty_db.py b/dbmigration/create_empty_db.py index 50bd0f2..43a317c 100644 --- a/dbmigration/create_empty_db.py +++ b/dbmigration/create_empty_db.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import sqlite3 diff --git a/dbmigration/migrate_from_1.1_to_2.0.py b/dbmigration/migrate_from_1.1_to_2.0.py index f63112e..e4618c8 100644 --- a/dbmigration/migrate_from_1.1_to_2.0.py +++ b/dbmigration/migrate_from_1.1_to_2.0.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import sqlite3 diff --git a/src/stacosys/db/dao.py b/src/stacosys/db/dao.py index 7d9abdb..307e439 100644 --- a/src/stacosys/db/dao.py +++ b/src/stacosys/db/dao.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- # pylint: disable=singleton-comparison diff --git a/src/stacosys/model/comment.py b/src/stacosys/model/comment.py index 41688a5..999b5a4 100644 --- a/src/stacosys/model/comment.py +++ b/src/stacosys/model/comment.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- from dataclasses import dataclass diff --git a/src/stacosys/model/email.py b/src/stacosys/model/email.py index e67fecf..fad2336 100644 --- a/src/stacosys/model/email.py +++ b/src/stacosys/model/email.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- from dataclasses import dataclass diff --git a/src/stacosys/run.py b/src/stacosys/run.py index 9cf26cd..eb90a09 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import argparse diff --git a/src/stacosys/service/configuration.py b/src/stacosys/service/configuration.py index ef348e9..8cba173 100644 --- a/src/stacosys/service/configuration.py +++ b/src/stacosys/service/configuration.py @@ -35,12 +35,13 @@ class Config: def load(self, config_pathname): self._cfg.read(config_pathname) - def _split_key(self, key: ConfigParameter): + @staticmethod + def _split_key(key: ConfigParameter): section, param = str(key.value).split(".") if not param: param = section section = "" - return (section, param) + return section, param def exists(self, key: ConfigParameter): section, param = self._split_key(key) @@ -77,8 +78,8 @@ class Config: def check(self): for key in ConfigParameter: if not self.get(key): - return (False, key.value) - return (True, None) + return False, key.value + return True, None def __repr__(self): dict_repr = {} diff --git a/src/stacosys/service/rssfeed.py b/src/stacosys/service/rssfeed.py index dd3c3d5..069448f 100644 --- a/src/stacosys/service/rssfeed.py +++ b/src/stacosys/service/rssfeed.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- from datetime import datetime diff --git a/tests/test_api.py b/tests/test_api.py index 6badcbd..6e27120 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import json diff --git a/tests/test_config.py b/tests/test_config.py index ae173c2..057f052 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import pytest diff --git a/tests/test_db.py b/tests/test_db.py index f82b389..68d6f83 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import time diff --git a/tests/test_form.py b/tests/test_form.py index 9244483..d27b89e 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import logging diff --git a/tests/test_mail.py b/tests/test_mail.py index 9f9597f..992845f 100644 --- a/tests/test_mail.py +++ b/tests/test_mail.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- import pytest diff --git a/tests/test_rssfeed.py b/tests/test_rssfeed.py index 021fc1e..e2a15b9 100644 --- a/tests/test_rssfeed.py +++ b/tests/test_rssfeed.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: UTF-8 -*- from stacosys.service import rss From 687d05eea4a0c86ce73c63cd0e5e80a787830871 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:38:52 +0100 Subject: [PATCH 130/182] Update deps --- requirements-dev.lock | 22 +++++++++++----------- requirements.lock | 10 +++++----- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/requirements-dev.lock b/requirements-dev.lock index 0520afd..d1c2a8a 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -12,16 +12,16 @@ astroid==3.0.1 background==0.2.1 black==23.11.0 blinker==1.7.0 -certifi==2023.7.22 +certifi==2023.11.17 charset-normalizer==3.3.2 click==8.1.7 coverage==6.5.0 coveralls==3.3.1 dill==0.3.7 docopt==0.6.2 -exceptiongroup==1.1.3 +exceptiongroup==1.2.0 flask==3.0.0 -idna==3.4 +idna==3.6 iniconfig==2.0.0 isort==5.12.0 itsdangerous==2.1.2 @@ -29,14 +29,14 @@ jinja2==3.1.2 markdown==3.5.1 markupsafe==2.1.3 mccabe==0.7.0 -mypy==1.6.1 +mypy==1.7.1 mypy-extensions==1.0.0 packaging==23.2 pathspec==0.11.2 -platformdirs==3.11.0 +platformdirs==4.1.0 pluggy==1.3.0 -pydal==20230521.1 -pyinstaller==6.1.0 +pydal==20231114.3 +pyinstaller==6.2.0 pyinstaller-hooks-contrib==2023.10 pylint==3.0.2 pyrss2gen==1.1 @@ -44,10 +44,10 @@ pytest==7.4.3 pytest-cov==4.1.0 requests==2.31.0 tomli==2.0.1 -tomlkit==0.12.2 -types-markdown==3.5.0.1 +tomlkit==0.12.3 +types-markdown==3.5.0.3 typing-extensions==4.8.0 -urllib3==2.0.7 +urllib3==2.1.0 werkzeug==3.0.1 # The following packages are considered to be unsafe in a requirements file: -setuptools==68.2.2 +setuptools==69.0.2 diff --git a/requirements.lock b/requirements.lock index 01232a5..72723ee 100644 --- a/requirements.lock +++ b/requirements.lock @@ -9,18 +9,18 @@ -e file:. background==0.2.1 blinker==1.7.0 -certifi==2023.7.22 +certifi==2023.11.17 charset-normalizer==3.3.2 click==8.1.7 flask==3.0.0 -idna==3.4 +idna==3.6 itsdangerous==2.1.2 jinja2==3.1.2 markdown==3.5.1 markupsafe==2.1.3 -pydal==20230521.1 +pydal==20231114.3 pyrss2gen==1.1 requests==2.31.0 -types-markdown==3.5.0.1 -urllib3==2.0.7 +types-markdown==3.5.0.3 +urllib3==2.1.0 werkzeug==3.0.1 From 337a4f0fafc8e6a56a74eed932954e46b1a7ccad Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 17 Dec 2023 17:31:46 +0100 Subject: [PATCH 131/182] new rye requirement --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index a2cd284..c32426b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,3 +40,6 @@ dev-dependencies = [ [tool.hatch.metadata] allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["src"] From 2fb6f85c4ffce46081f6df998ddeaa15d121bc46 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 17 Dec 2023 17:32:15 +0100 Subject: [PATCH 132/182] Upgrade deps --- requirements-dev.lock | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/requirements-dev.lock b/requirements-dev.lock index d1c2a8a..8e15f8a 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -7,10 +7,14 @@ # all-features: false -e file:. +aiohttp==3.9.1 +aiosignal==1.3.1 altgraph==0.17.4 -astroid==3.0.1 +astroid==3.0.2 +async-timeout==4.0.3 +attrs==23.1.0 background==0.2.1 -black==23.11.0 +black==23.12.0 blinker==1.7.0 certifi==2023.11.17 charset-normalizer==3.3.2 @@ -21,24 +25,26 @@ dill==0.3.7 docopt==0.6.2 exceptiongroup==1.2.0 flask==3.0.0 +frozenlist==1.4.1 idna==3.6 iniconfig==2.0.0 -isort==5.12.0 +isort==5.13.2 itsdangerous==2.1.2 jinja2==3.1.2 markdown==3.5.1 markupsafe==2.1.3 mccabe==0.7.0 +multidict==6.0.4 mypy==1.7.1 mypy-extensions==1.0.0 packaging==23.2 -pathspec==0.11.2 +pathspec==0.12.1 platformdirs==4.1.0 pluggy==1.3.0 pydal==20231114.3 -pyinstaller==6.2.0 +pyinstaller==6.3.0 pyinstaller-hooks-contrib==2023.10 -pylint==3.0.2 +pylint==3.0.3 pyrss2gen==1.1 pytest==7.4.3 pytest-cov==4.1.0 @@ -46,8 +52,9 @@ requests==2.31.0 tomli==2.0.1 tomlkit==0.12.3 types-markdown==3.5.0.3 -typing-extensions==4.8.0 +typing-extensions==4.9.0 urllib3==2.1.0 werkzeug==3.0.1 +yarl==1.9.4 # The following packages are considered to be unsafe in a requirements file: setuptools==69.0.2 From 4b51391a28be0dee602269c46eb4dfda1e4c509b Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 17 Dec 2023 17:35:32 +0100 Subject: [PATCH 133/182] Update README: poetry replaced by rye --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 67237e4..521db14 100644 --- a/README.md +++ b/README.md @@ -45,11 +45,16 @@ Stacosys offers a REST API to retrieve and post comments. Static blog is HTML-ba ### Installation -Build and Dependency management relies on [Poetry](https://python-poetry.org/), but you can also use [published releases](https://github.com/kianby/stacosys/releases) or [Docker image](https://hub.docker.com/r/kianby/stacosys). +Build and Dependency management relies on [Rye](https://rye-up.com/) but you can also use [Docker image](https://hub.docker.com/r/kianby/stacosys). Build executable with pyinstaller - poetry run pyinstaller stacosys.spec + make build + +Update dependencies and sync virtual env + + rye lock --update-all + rye sync ### Improvements From 872cf0691051f30f331d7b277631f39801132967 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 20 Feb 2024 21:59:30 +0100 Subject: [PATCH 134/182] Update deps --- requirements-dev.lock | 41 +++++++++++++++++------------------------ requirements.lock | 14 +++++++------- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/requirements-dev.lock b/requirements-dev.lock index 8e15f8a..dc2cb8f 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -7,54 +7,47 @@ # all-features: false -e file:. -aiohttp==3.9.1 -aiosignal==1.3.1 altgraph==0.17.4 -astroid==3.0.2 -async-timeout==4.0.3 -attrs==23.1.0 +astroid==3.0.3 background==0.2.1 -black==23.12.0 +black==24.2.0 blinker==1.7.0 -certifi==2023.11.17 +certifi==2024.2.2 charset-normalizer==3.3.2 click==8.1.7 coverage==6.5.0 coveralls==3.3.1 -dill==0.3.7 +dill==0.3.8 docopt==0.6.2 exceptiongroup==1.2.0 -flask==3.0.0 -frozenlist==1.4.1 +flask==3.0.2 idna==3.6 iniconfig==2.0.0 isort==5.13.2 itsdangerous==2.1.2 -jinja2==3.1.2 -markdown==3.5.1 -markupsafe==2.1.3 +jinja2==3.1.3 +markdown==3.5.2 +markupsafe==2.1.5 mccabe==0.7.0 -multidict==6.0.4 -mypy==1.7.1 +mypy==1.8.0 mypy-extensions==1.0.0 packaging==23.2 pathspec==0.12.1 -platformdirs==4.1.0 -pluggy==1.3.0 +platformdirs==4.2.0 +pluggy==1.4.0 pydal==20231114.3 -pyinstaller==6.3.0 -pyinstaller-hooks-contrib==2023.10 +pyinstaller==6.4.0 +pyinstaller-hooks-contrib==2024.1 pylint==3.0.3 pyrss2gen==1.1 -pytest==7.4.3 +pytest==8.0.1 pytest-cov==4.1.0 requests==2.31.0 tomli==2.0.1 tomlkit==0.12.3 -types-markdown==3.5.0.3 +types-markdown==3.5.0.20240129 typing-extensions==4.9.0 -urllib3==2.1.0 +urllib3==2.2.1 werkzeug==3.0.1 -yarl==1.9.4 # The following packages are considered to be unsafe in a requirements file: -setuptools==69.0.2 +setuptools==69.1.0 diff --git a/requirements.lock b/requirements.lock index 72723ee..edc27ec 100644 --- a/requirements.lock +++ b/requirements.lock @@ -9,18 +9,18 @@ -e file:. background==0.2.1 blinker==1.7.0 -certifi==2023.11.17 +certifi==2024.2.2 charset-normalizer==3.3.2 click==8.1.7 -flask==3.0.0 +flask==3.0.2 idna==3.6 itsdangerous==2.1.2 -jinja2==3.1.2 -markdown==3.5.1 -markupsafe==2.1.3 +jinja2==3.1.3 +markdown==3.5.2 +markupsafe==2.1.5 pydal==20231114.3 pyrss2gen==1.1 requests==2.31.0 -types-markdown==3.5.0.3 -urllib3==2.1.0 +types-markdown==3.5.0.20240129 +urllib3==2.2.1 werkzeug==3.0.1 From f47eb73a5cb759348b4810e2fe0561da3059b725 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 28 Feb 2024 18:02:53 +0100 Subject: [PATCH 135/182] Sync upgrade --- requirements-dev.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/requirements-dev.lock b/requirements-dev.lock index dc2cb8f..3f30eeb 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -8,7 +8,7 @@ -e file:. altgraph==0.17.4 -astroid==3.0.3 +astroid==3.1.0 background==0.2.1 black==24.2.0 blinker==1.7.0 @@ -38,16 +38,16 @@ pluggy==1.4.0 pydal==20231114.3 pyinstaller==6.4.0 pyinstaller-hooks-contrib==2024.1 -pylint==3.0.3 +pylint==3.1.0 pyrss2gen==1.1 -pytest==8.0.1 +pytest==8.0.2 pytest-cov==4.1.0 requests==2.31.0 tomli==2.0.1 -tomlkit==0.12.3 +tomlkit==0.12.4 types-markdown==3.5.0.20240129 -typing-extensions==4.9.0 +typing-extensions==4.10.0 urllib3==2.2.1 werkzeug==3.0.1 # The following packages are considered to be unsafe in a requirements file: -setuptools==69.1.0 +setuptools==69.1.1 From 83aa8b1ba2d33f85cdf26c3b8d6dd3e22b55ece4 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 28 Feb 2024 18:12:50 +0100 Subject: [PATCH 136/182] Upgrade flask --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c32426b..dec0886 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ dependencies = [ "markdown>=3.5.1", "requests>=2.31.0", "background>=0.2.1", - "Flask>=3.0.0", + "Flask>=3.0.2", "types-markdown>=3.5.0.1", "pydal>=20230521.1" ] From 885593db5b4a32431e49e16ba7d9f9443279e606 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 23 Mar 2024 21:51:28 +0100 Subject: [PATCH 137/182] Improve code --- src/stacosys/run.py | 8 +++-- src/stacosys/service/mail.py | 60 ++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/src/stacosys/run.py b/src/stacosys/run.py index eb90a09..8e6f168 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -37,9 +37,9 @@ def stacosys_server(config_pathname): # load and check config config.load(config_pathname) - is_config_ok, erreur_config = config.check() + is_config_ok, config_error = config.check() if not is_config_ok: - logger.error("Configuration incorrecte '%s'", erreur_config) + logger.error("Invalid configuration '%s'", config_error) sys.exit(1) logger.info(config) @@ -65,7 +65,9 @@ def stacosys_server(config_pathname): config.get(ConfigParameter.SMTP_PASSWORD), ) mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) - mailer.check() + if not mailer.check(): + logger.error("Email configuration not working") + sys.exit(1) logger.info("start interfaces %s %s %s", api, form, admin) diff --git a/src/stacosys/service/mail.py b/src/stacosys/service/mail.py index d7fe5ca..ad3530c 100644 --- a/src/stacosys/service/mail.py +++ b/src/stacosys/service/mail.py @@ -2,44 +2,39 @@ # -*- coding: utf-8 -*- import logging -import smtplib -import ssl from email.mime.text import MIMEText +from smtplib import SMTP_SSL, SMTPAuthenticationError logger = logging.getLogger(__name__) class Mailer: def __init__(self) -> None: - self._smtp_host: str = "" - self._smtp_port: int = 0 - self._smtp_login: str = "" - self._smtp_password: str = "" - self._site_admin_email: str = "" + self._smtp_host = "" + self._smtp_port = 0 + self._smtp_login = "" + self._smtp_password = "" + self._site_admin_email = "" - def configure_smtp( - self, - smtp_host, - smtp_port, - smtp_login, - smtp_password, - ) -> None: + def configure_smtp(self, smtp_host: str, smtp_port: int, smtp_login: str, smtp_password: str) -> None: self._smtp_host = smtp_host self._smtp_port = smtp_port self._smtp_login = smtp_login self._smtp_password = smtp_password - def configure_destination(self, site_admin_email) -> None: + def configure_destination(self, site_admin_email: str) -> None: self._site_admin_email = site_admin_email - def check(self): - server = smtplib.SMTP_SSL( - self._smtp_host, self._smtp_port, context=ssl.create_default_context() - ) - server.login(self._smtp_login, self._smtp_password) - server.close() + def check(self) -> bool: + try: + with SMTP_SSL(self._smtp_host, self._smtp_port) as server: + server.login(self._smtp_login, self._smtp_password) + return True + except SMTPAuthenticationError: + logger.exception("Invalid credentials") + return False - def send(self, subject, message) -> bool: + def send(self, subject: str, message: str) -> bool: sender = self._smtp_login receivers = [self._site_admin_email] @@ -48,15 +43,14 @@ class Mailer: msg["To"] = self._site_admin_email msg["From"] = sender - # pylint: disable=bare-except try: - server = smtplib.SMTP_SSL( - self._smtp_host, self._smtp_port, context=ssl.create_default_context() - ) - server.login(self._smtp_login, self._smtp_password) - server.send_message(msg, sender, receivers) - server.close() - success = True - except: - success = False - return success + with SMTP_SSL(self._smtp_host, self._smtp_port) as server: + server.login(self._smtp_login, self._smtp_password) + server.send_message(msg, sender, receivers) + return True + except SMTPAuthenticationError: + logger.exception("Invalid credentials") + return False + except Exception as e: + logger.exception(f"Error sending email: {e}") + return False From 477477edae2851a67086b0447e425de5949b2f7f Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:25:27 +0200 Subject: [PATCH 138/182] Refactor application startup. Use Flask app config and remove package singletons --- src/stacosys/interface/__init__.py | 7 +-- src/stacosys/interface/form.py | 3 +- src/stacosys/interface/web/admin.py | 15 +++-- src/stacosys/run.py | 87 ++++++++++++++++------------- src/stacosys/service/__init__.py | 10 ---- 5 files changed, 58 insertions(+), 64 deletions(-) delete mode 100644 src/stacosys/service/__init__.py diff --git a/src/stacosys/interface/__init__.py b/src/stacosys/interface/__init__.py index d72483d..c6211a4 100644 --- a/src/stacosys/interface/__init__.py +++ b/src/stacosys/interface/__init__.py @@ -7,7 +7,6 @@ import background from flask import Flask from stacosys.db import dao -from stacosys.service import config, mailer from stacosys.service.configuration import ConfigParameter app = Flask(__name__) @@ -20,7 +19,7 @@ logger = logging.getLogger(__name__) @background.task def submit_new_comment(comment): - site_url = config.get(ConfigParameter.SITE_URL) + site_url = app.config['CONFIG'].get(ConfigParameter.SITE_URL) comment_list = ( f"Web admin interface: {site_url}/web/admin", "", @@ -35,9 +34,9 @@ def submit_new_comment(comment): email_body = "\n".join(comment_list) # send email to notify admin - site_name = config.get(ConfigParameter.SITE_NAME) + site_name = app.config['CONFIG'].get(ConfigParameter.SITE_NAME) subject = f"STACOSYS {site_name}" - if mailer.send(subject, email_body): + if app.config['MAILER'].send(subject, email_body): logger.debug("new comment processed") # save notification datetime dao.notify_comment(comment) diff --git a/src/stacosys/interface/form.py b/src/stacosys/interface/form.py index 8513438..72e5e52 100644 --- a/src/stacosys/interface/form.py +++ b/src/stacosys/interface/form.py @@ -6,7 +6,6 @@ from flask import abort, redirect, request from stacosys.db import dao from stacosys.interface import app, submit_new_comment -from stacosys.service import config from stacosys.service.configuration import ConfigParameter logger = logging.getLogger(__name__) @@ -47,7 +46,7 @@ def new_form_comment(): # send notification e-mail asynchronously submit_new_comment(comment) - return redirect(config.get(ConfigParameter.SITE_REDIRECT), code=302) + return redirect(app.config['CONFIG'].get(ConfigParameter.SITE_REDIRECT), code=302) def check_form_data(posted_comment): diff --git a/src/stacosys/interface/web/admin.py b/src/stacosys/interface/web/admin.py index 8d81e3c..4c8b9dd 100644 --- a/src/stacosys/interface/web/admin.py +++ b/src/stacosys/interface/web/admin.py @@ -8,7 +8,6 @@ from flask import flash, redirect, render_template, request, session from stacosys.db import dao from stacosys.interface import app -from stacosys.service import config, rss from stacosys.service.configuration import ConfigParameter logger = logging.getLogger(__name__) @@ -25,8 +24,8 @@ def index(): def is_login_ok(username, password): hashed = hashlib.sha256(password.encode()).hexdigest().upper() return ( - config.get(ConfigParameter.WEB_USERNAME) == username - and config.get(ConfigParameter.WEB_PASSWORD) == hashed + app.config['CONFIG'].get(ConfigParameter.WEB_USERNAME) == username + and app.config['CONFIG'].get(ConfigParameter.WEB_PASSWORD) == hashed ) @@ -42,7 +41,7 @@ def login(): flash("Identifiant ou mot de passe incorrect") return redirect("/web/login") # GET - return render_template("login_" + config.get(ConfigParameter.LANG) + ".html") + return render_template("login_" + app.config['CONFIG'].get(ConfigParameter.LANG) + ".html") @app.route("/web/logout", methods=["GET"]) @@ -55,7 +54,7 @@ def logout(): def admin_homepage(): if not ( "user" in session - and session["user"] == config.get(ConfigParameter.WEB_USERNAME) + and session["user"] == app.config['CONFIG'].get(ConfigParameter.WEB_USERNAME) ): # TODO localization flash("Vous avez été déconnecté.") @@ -63,9 +62,9 @@ def admin_homepage(): comments = dao.find_not_published_comments() return render_template( - "admin_" + config.get(ConfigParameter.LANG) + ".html", + "admin_" + app.config['CONFIG'].get(ConfigParameter.LANG) + ".html", comments=comments, - baseurl=config.get(ConfigParameter.SITE_URL), + baseurl=app.config['CONFIG'].get(ConfigParameter.SITE_URL), ) @@ -77,7 +76,7 @@ def admin_action(): flash("Commentaire introuvable") elif request.form.get("action") == "APPROVE": dao.publish_comment(comment) - rss.generate() + app.config['RSS'].generate() # TODO localization flash("Commentaire publié") else: diff --git a/src/stacosys/run.py b/src/stacosys/run.py index 8e6f168..ae7b81b 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -9,55 +9,34 @@ import sys from stacosys.db import database from stacosys.interface import api, app, form from stacosys.interface.web import admin -from stacosys.service import config, mailer, rss -from stacosys.service.configuration import ConfigParameter +from stacosys.service.mail import Mailer +from stacosys.service.rssfeed import Rss +from stacosys.service.configuration import Config, ConfigParameter # configure logging -def configure_logging(level): - root_logger = logging.getLogger() - root_logger.setLevel(level) - handler = logging.StreamHandler() - handler.setLevel(level) - formatter = logging.Formatter("[%(asctime)s] %(name)s %(levelname)s %(message)s") - handler.setFormatter(formatter) - root_logger.addHandler(handler) - - -def stacosys_server(config_pathname): - # configure logging +def configure_logging() -> logging.Logger: + logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(name)s %(levelname)s %(message)s") logger = logging.getLogger(__name__) - configure_logging(logging.INFO) logging.getLogger("werkzeug").level = logging.WARNING + return logger - # check config file exists + +def load_and_validate_config(config_pathname: str, logger: logging.Logger) -> Config: if not os.path.isfile(config_pathname): logger.error("Configuration file '%s' not found.", config_pathname) - sys.exit(1) + raise FileNotFoundError(f"Configuration file '{config_pathname}' not found.") - # load and check config + config = Config() config.load(config_pathname) - is_config_ok, config_error = config.check() - if not is_config_ok: - logger.error("Invalid configuration '%s'", config_error) - sys.exit(1) - logger.info(config) + if not config.check(): + raise ValueError(f"Invalid configuration '{config_pathname}'") + logger.info("Configuration loaded successfully.") + return config - # initialize database - database.configure(config.get(ConfigParameter.DB)) - logger.info("Start Stacosys application") - - # generate RSS - rss.configure( - config.get(ConfigParameter.RSS_FILE), - config.get(ConfigParameter.SITE_NAME), - config.get(ConfigParameter.SITE_PROTO), - config.get(ConfigParameter.SITE_URL), - ) - rss.generate() - - # configure mailer +def configure_and_validate_mailer(config, logger): + mailer = Mailer() mailer.configure_smtp( config.get(ConfigParameter.SMTP_HOST), config.get_int(ConfigParameter.SMTP_PORT), @@ -68,10 +47,34 @@ def stacosys_server(config_pathname): if not mailer.check(): logger.error("Email configuration not working") sys.exit(1) + return mailer + + +def configure_rss(config): + rss = Rss() + rss.configure( + config.get(ConfigParameter.RSS_FILE), + config.get(ConfigParameter.SITE_NAME), + config.get(ConfigParameter.SITE_PROTO), + config.get(ConfigParameter.SITE_URL), + ) + rss.generate() + return rss + + +def main(config_pathname): + logger = configure_logging() + config = load_and_validate_config(config_pathname, logger) + database.configure(config.get(ConfigParameter.DB)) + + logger.info("Start Stacosys application") + rss = configure_rss(config) + mailer = configure_and_validate_mailer(config, logger) logger.info("start interfaces %s %s %s", api, form, admin) - - # start Flask + app.config['CONFIG'] = config + app.config['MAILER'] = mailer + app.config['RSS'] = rss app.run( host=config.get(ConfigParameter.HTTP_HOST), port=config.get_int(ConfigParameter.HTTP_PORT), @@ -84,4 +87,8 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("config", help="config path name") args = parser.parse_args() - stacosys_server(args.config) + try: + main(args.config) + except Exception as e: + logging.error(f"Failed to start application: {e}") + sys.exit(1) diff --git a/src/stacosys/service/__init__.py b/src/stacosys/service/__init__.py deleted file mode 100644 index 6fcc80a..0000000 --- a/src/stacosys/service/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from .configuration import Config -from .mail import Mailer -from .rssfeed import Rss - -config = Config() -mailer = Mailer() -rss = Rss() From a18eaf2237452b9f4489a4ae9b73cb9f880a7fb5 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:26:16 +0200 Subject: [PATCH 139/182] Upgrade dependencies --- requirements-dev.lock | 28 ++++++++++++++-------------- requirements.lock | 10 +++++----- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/requirements-dev.lock b/requirements-dev.lock index 3f30eeb..a01488a 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -10,7 +10,7 @@ altgraph==0.17.4 astroid==3.1.0 background==0.2.1 -black==24.2.0 +black==24.3.0 blinker==1.7.0 certifi==2024.2.2 charset-normalizer==3.3.2 @@ -20,34 +20,34 @@ coveralls==3.3.1 dill==0.3.8 docopt==0.6.2 exceptiongroup==1.2.0 -flask==3.0.2 -idna==3.6 +flask==3.0.3 +idna==3.7 iniconfig==2.0.0 isort==5.13.2 itsdangerous==2.1.2 jinja2==3.1.3 -markdown==3.5.2 +markdown==3.6 markupsafe==2.1.5 mccabe==0.7.0 -mypy==1.8.0 +mypy==1.9.0 mypy-extensions==1.0.0 -packaging==23.2 +packaging==24.0 pathspec==0.12.1 platformdirs==4.2.0 pluggy==1.4.0 pydal==20231114.3 -pyinstaller==6.4.0 -pyinstaller-hooks-contrib==2024.1 +pyinstaller==6.5.0 +pyinstaller-hooks-contrib==2024.3 pylint==3.1.0 pyrss2gen==1.1 -pytest==8.0.2 -pytest-cov==4.1.0 +pytest==8.1.1 +pytest-cov==5.0.0 requests==2.31.0 tomli==2.0.1 tomlkit==0.12.4 -types-markdown==3.5.0.20240129 -typing-extensions==4.10.0 +types-markdown==3.6.0.20240316 +typing-extensions==4.11.0 urllib3==2.2.1 -werkzeug==3.0.1 +werkzeug==3.0.2 # The following packages are considered to be unsafe in a requirements file: -setuptools==69.1.1 +setuptools==69.3.0 diff --git a/requirements.lock b/requirements.lock index edc27ec..fca2376 100644 --- a/requirements.lock +++ b/requirements.lock @@ -12,15 +12,15 @@ blinker==1.7.0 certifi==2024.2.2 charset-normalizer==3.3.2 click==8.1.7 -flask==3.0.2 -idna==3.6 +flask==3.0.3 +idna==3.7 itsdangerous==2.1.2 jinja2==3.1.3 -markdown==3.5.2 +markdown==3.6 markupsafe==2.1.5 pydal==20231114.3 pyrss2gen==1.1 requests==2.31.0 -types-markdown==3.5.0.20240129 +types-markdown==3.6.0.20240316 urllib3==2.2.1 -werkzeug==3.0.1 +werkzeug==3.0.2 From 537e50902738a2a8f6be5c0f9a3147e5ec1f2aee Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:35:15 +0200 Subject: [PATCH 140/182] Fix unit tests --- tests/test_config.py | 3 ++- tests/test_form.py | 6 ++++++ tests/test_mail.py | 3 ++- tests/test_rssfeed.py | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/test_config.py b/tests/test_config.py index 057f052..ecee23f 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -3,13 +3,14 @@ import pytest -from stacosys.service import config +from stacosys.service.configuration import Config from stacosys.service.configuration import ConfigParameter EXPECTED_DB = "sqlite://db.sqlite" EXPECTED_HTTP_PORT = 8080 EXPECTED_LANG = "fr" +config = Config() @pytest.fixture def init_config(): diff --git a/tests/test_form.py b/tests/test_form.py index d27b89e..875dbf6 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -7,6 +7,9 @@ import pytest from stacosys.db import database from stacosys.interface import app, form +from stacosys.service.configuration import Config +from stacosys.service.mail import Mailer +from stacosys.service.rssfeed import Rss @pytest.fixture @@ -14,6 +17,9 @@ def client(): logger = logging.getLogger(__name__) database.configure("sqlite:memory://db.sqlite") logger.info(f"start interface {form}") + app.config['CONFIG'] = Config() + app.config['MAILER'] = Mailer() + app.config['RSS'] = Rss() return app.test_client() diff --git a/tests/test_mail.py b/tests/test_mail.py index 992845f..69aa307 100644 --- a/tests/test_mail.py +++ b/tests/test_mail.py @@ -3,10 +3,11 @@ import pytest -from stacosys.service import mailer +from stacosys.service.mail import Mailer def test_configure_and_check(): + mailer = Mailer() mailer.configure_smtp("localhost", 2525, "admin", "admin") mailer.configure_destination("admin@mydomain.com") with pytest.raises(ConnectionRefusedError): diff --git a/tests/test_rssfeed.py b/tests/test_rssfeed.py index e2a15b9..5b102fe 100644 --- a/tests/test_rssfeed.py +++ b/tests/test_rssfeed.py @@ -1,8 +1,9 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -from stacosys.service import rss +from stacosys.service.rssfeed import Rss def test_configure(): + rss = Rss() rss.configure("comments.xml", "blog", "http", "blog.mydomain.com") From 53316c2ce92343b8329fb8b03978bdcee3577b75 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:36:11 +0200 Subject: [PATCH 141/182] Black formatting --- src/stacosys/interface/__init__.py | 6 +++--- src/stacosys/interface/form.py | 2 +- src/stacosys/interface/web/admin.py | 16 +++++++++------- src/stacosys/run.py | 12 +++++++----- src/stacosys/service/mail.py | 4 +++- tests/test_config.py | 4 ++-- tests/test_form.py | 6 +++--- 7 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/stacosys/interface/__init__.py b/src/stacosys/interface/__init__.py index c6211a4..fb1fbd1 100644 --- a/src/stacosys/interface/__init__.py +++ b/src/stacosys/interface/__init__.py @@ -19,7 +19,7 @@ logger = logging.getLogger(__name__) @background.task def submit_new_comment(comment): - site_url = app.config['CONFIG'].get(ConfigParameter.SITE_URL) + site_url = app.config["CONFIG"].get(ConfigParameter.SITE_URL) comment_list = ( f"Web admin interface: {site_url}/web/admin", "", @@ -34,9 +34,9 @@ def submit_new_comment(comment): email_body = "\n".join(comment_list) # send email to notify admin - site_name = app.config['CONFIG'].get(ConfigParameter.SITE_NAME) + site_name = app.config["CONFIG"].get(ConfigParameter.SITE_NAME) subject = f"STACOSYS {site_name}" - if app.config['MAILER'].send(subject, email_body): + if app.config["MAILER"].send(subject, email_body): logger.debug("new comment processed") # save notification datetime dao.notify_comment(comment) diff --git a/src/stacosys/interface/form.py b/src/stacosys/interface/form.py index 72e5e52..11d2ca3 100644 --- a/src/stacosys/interface/form.py +++ b/src/stacosys/interface/form.py @@ -46,7 +46,7 @@ def new_form_comment(): # send notification e-mail asynchronously submit_new_comment(comment) - return redirect(app.config['CONFIG'].get(ConfigParameter.SITE_REDIRECT), code=302) + return redirect(app.config["CONFIG"].get(ConfigParameter.SITE_REDIRECT), code=302) def check_form_data(posted_comment): diff --git a/src/stacosys/interface/web/admin.py b/src/stacosys/interface/web/admin.py index 4c8b9dd..64aa3da 100644 --- a/src/stacosys/interface/web/admin.py +++ b/src/stacosys/interface/web/admin.py @@ -24,8 +24,8 @@ def index(): def is_login_ok(username, password): hashed = hashlib.sha256(password.encode()).hexdigest().upper() return ( - app.config['CONFIG'].get(ConfigParameter.WEB_USERNAME) == username - and app.config['CONFIG'].get(ConfigParameter.WEB_PASSWORD) == hashed + app.config["CONFIG"].get(ConfigParameter.WEB_USERNAME) == username + and app.config["CONFIG"].get(ConfigParameter.WEB_PASSWORD) == hashed ) @@ -41,7 +41,9 @@ def login(): flash("Identifiant ou mot de passe incorrect") return redirect("/web/login") # GET - return render_template("login_" + app.config['CONFIG'].get(ConfigParameter.LANG) + ".html") + return render_template( + "login_" + app.config["CONFIG"].get(ConfigParameter.LANG) + ".html" + ) @app.route("/web/logout", methods=["GET"]) @@ -54,7 +56,7 @@ def logout(): def admin_homepage(): if not ( "user" in session - and session["user"] == app.config['CONFIG'].get(ConfigParameter.WEB_USERNAME) + and session["user"] == app.config["CONFIG"].get(ConfigParameter.WEB_USERNAME) ): # TODO localization flash("Vous avez été déconnecté.") @@ -62,9 +64,9 @@ def admin_homepage(): comments = dao.find_not_published_comments() return render_template( - "admin_" + app.config['CONFIG'].get(ConfigParameter.LANG) + ".html", + "admin_" + app.config["CONFIG"].get(ConfigParameter.LANG) + ".html", comments=comments, - baseurl=app.config['CONFIG'].get(ConfigParameter.SITE_URL), + baseurl=app.config["CONFIG"].get(ConfigParameter.SITE_URL), ) @@ -76,7 +78,7 @@ def admin_action(): flash("Commentaire introuvable") elif request.form.get("action") == "APPROVE": dao.publish_comment(comment) - app.config['RSS'].generate() + app.config["RSS"].generate() # TODO localization flash("Commentaire publié") else: diff --git a/src/stacosys/run.py b/src/stacosys/run.py index ae7b81b..5634764 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -9,14 +9,16 @@ import sys from stacosys.db import database from stacosys.interface import api, app, form from stacosys.interface.web import admin +from stacosys.service.configuration import Config, ConfigParameter from stacosys.service.mail import Mailer from stacosys.service.rssfeed import Rss -from stacosys.service.configuration import Config, ConfigParameter # configure logging def configure_logging() -> logging.Logger: - logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(name)s %(levelname)s %(message)s") + logging.basicConfig( + level=logging.INFO, format="[%(asctime)s] %(name)s %(levelname)s %(message)s" + ) logger = logging.getLogger(__name__) logging.getLogger("werkzeug").level = logging.WARNING return logger @@ -72,9 +74,9 @@ def main(config_pathname): mailer = configure_and_validate_mailer(config, logger) logger.info("start interfaces %s %s %s", api, form, admin) - app.config['CONFIG'] = config - app.config['MAILER'] = mailer - app.config['RSS'] = rss + app.config["CONFIG"] = config + app.config["MAILER"] = mailer + app.config["RSS"] = rss app.run( host=config.get(ConfigParameter.HTTP_HOST), port=config.get_int(ConfigParameter.HTTP_PORT), diff --git a/src/stacosys/service/mail.py b/src/stacosys/service/mail.py index ad3530c..4e52228 100644 --- a/src/stacosys/service/mail.py +++ b/src/stacosys/service/mail.py @@ -16,7 +16,9 @@ class Mailer: self._smtp_password = "" self._site_admin_email = "" - def configure_smtp(self, smtp_host: str, smtp_port: int, smtp_login: str, smtp_password: str) -> None: + def configure_smtp( + self, smtp_host: str, smtp_port: int, smtp_login: str, smtp_password: str + ) -> None: self._smtp_host = smtp_host self._smtp_port = smtp_port self._smtp_login = smtp_login diff --git a/tests/test_config.py b/tests/test_config.py index ecee23f..78a2da4 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -3,8 +3,7 @@ import pytest -from stacosys.service.configuration import Config -from stacosys.service.configuration import ConfigParameter +from stacosys.service.configuration import Config, ConfigParameter EXPECTED_DB = "sqlite://db.sqlite" EXPECTED_HTTP_PORT = 8080 @@ -12,6 +11,7 @@ EXPECTED_LANG = "fr" config = Config() + @pytest.fixture def init_config(): config.put(ConfigParameter.DB, EXPECTED_DB) diff --git a/tests/test_form.py b/tests/test_form.py index 875dbf6..f87a172 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -17,9 +17,9 @@ def client(): logger = logging.getLogger(__name__) database.configure("sqlite:memory://db.sqlite") logger.info(f"start interface {form}") - app.config['CONFIG'] = Config() - app.config['MAILER'] = Mailer() - app.config['RSS'] = Rss() + app.config["CONFIG"] = Config() + app.config["MAILER"] = Mailer() + app.config["RSS"] = Rss() return app.test_client() From d8a49f2be8c36986cc323782d62cb0aab655ea4b Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 31 May 2024 16:52:42 +0200 Subject: [PATCH 142/182] Lint --- src/stacosys/service/rssfeed.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stacosys/service/rssfeed.py b/src/stacosys/service/rssfeed.py index 069448f..9c9ebe0 100644 --- a/src/stacosys/service/rssfeed.py +++ b/src/stacosys/service/rssfeed.py @@ -52,5 +52,5 @@ class Rss: lastBuildDate=datetime.now(), items=items, ) - # pylint: disable=consider-using-with - rss.write_xml(open(self._rss_file, "w", encoding="utf-8"), encoding="utf-8") + with open(self._rss_file, "w", encoding="utf-8") as outfile: + rss.write_xml(outfile, encoding="utf-8") From 708b84987c5c260f4ed700ce5bf55f8aa39377fd Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 31 May 2024 16:54:11 +0200 Subject: [PATCH 143/182] Lint --- src/stacosys/service/mail.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/stacosys/service/mail.py b/src/stacosys/service/mail.py index 4e52228..6aa9470 100644 --- a/src/stacosys/service/mail.py +++ b/src/stacosys/service/mail.py @@ -38,21 +38,22 @@ class Mailer: def send(self, subject: str, message: str) -> bool: sender = self._smtp_login - receivers = [self._site_admin_email] - - msg = MIMEText(message) - msg["Subject"] = subject - msg["To"] = self._site_admin_email - msg["From"] = sender try: + msg = MIMEText(message) + msg["Subject"] = subject + msg["From"] = sender + msg["To"] = self._site_admin_email + with SMTP_SSL(self._smtp_host, self._smtp_port) as server: - server.login(self._smtp_login, self._smtp_password) - server.send_message(msg, sender, receivers) + try: + server.login(self._smtp_login, self._smtp_password) + except SMTPAuthenticationError: + logger.exception("Invalid credentials") + return False + + server.send_message(msg) return True - except SMTPAuthenticationError: - logger.exception("Invalid credentials") - return False - except Exception as e: - logger.exception(f"Error sending email: {e}") - return False + except Exception: + logger.error("Error sending email", exc_info=True) + return False From 4d52229e4d769fd6e92e2a54f567d0fa0b7b4d67 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 31 May 2024 16:54:25 +0200 Subject: [PATCH 144/182] Add EN translations --- .../interface/templates/admin_en.html | 64 +++++++++++++++++++ .../interface/templates/login_en.html | 42 ++++++++++++ src/stacosys/interface/web/admin.py | 30 ++++++--- 3 files changed, 126 insertions(+), 10 deletions(-) create mode 100644 src/stacosys/interface/templates/admin_en.html create mode 100644 src/stacosys/interface/templates/login_en.html diff --git a/src/stacosys/interface/templates/admin_en.html b/src/stacosys/interface/templates/admin_en.html new file mode 100644 index 0000000..59c8f19 --- /dev/null +++ b/src/stacosys/interface/templates/admin_en.html @@ -0,0 +1,64 @@ + + + + + +Stacosys Comment Moderation + + + +
+

Comment Moderation

+ +
+
+ {% with messages = get_flashed_messages() %} + {% if messages %} +
+ {% for message in messages %} +

{{ message }}

+ {% endfor %} +
+ {% endif %} + {% endwith %} + + + + + + + + + + + + {% for comment in comments %} + + + + + + + + {% endfor %} + +
DateAuthorCommentArticleActions
{{ comment.created }}{{ comment.author_name }}{{ comment.content }}{{ comment.url }} +
+ + + +
+
+ + + +
+
+
+
+

This page was designed by Yax with Simple.css.

+
+ + diff --git a/src/stacosys/interface/templates/login_en.html b/src/stacosys/interface/templates/login_en.html new file mode 100644 index 0000000..6d81754 --- /dev/null +++ b/src/stacosys/interface/templates/login_en.html @@ -0,0 +1,42 @@ + + + + + +Stacosys + + + + +
+

Comment Moderation Login

+
+
+ {% with messages = get_flashed_messages() %} + {% if messages %} +
+ {% for message in messages %} +

{{ message }}

+ {% endfor %} +
+ {% endif %} + {% endwith %} +
+

+

+

+

+ +
+
+ + + diff --git a/src/stacosys/interface/web/admin.py b/src/stacosys/interface/web/admin.py index 64aa3da..9e35d50 100644 --- a/src/stacosys/interface/web/admin.py +++ b/src/stacosys/interface/web/admin.py @@ -37,8 +37,10 @@ def login(): if is_login_ok(username, password): session["user"] = username return redirect("/web/admin") - # TODO localization - flash("Identifiant ou mot de passe incorrect") + if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": + flash("Identifiant ou mot de passe incorrect") + else: + flash("Username or password incorrect") return redirect("/web/login") # GET return render_template( @@ -49,6 +51,10 @@ def login(): @app.route("/web/logout", methods=["GET"]) def logout(): session.pop("user") + if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": + flash("Vous avez été déconnecté.") + else: + flash("You have been logged out.") return redirect("/web/admin") @@ -58,8 +64,6 @@ def admin_homepage(): "user" in session and session["user"] == app.config["CONFIG"].get(ConfigParameter.WEB_USERNAME) ): - # TODO localization - flash("Vous avez été déconnecté.") return redirect("/web/login") comments = dao.find_not_published_comments() @@ -74,15 +78,21 @@ def admin_homepage(): def admin_action(): comment = dao.find_comment_by_id(request.form.get("comment")) if comment is None: - # TODO localization - flash("Commentaire introuvable") + if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": + flash("Commentaire introuvable") + else: + flash("Comment not found.") elif request.form.get("action") == "APPROVE": dao.publish_comment(comment) app.config["RSS"].generate() - # TODO localization - flash("Commentaire publié") + if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": + flash("Commentaire publié") + else: + flash("Comment published.") else: dao.delete_comment(comment) - # TODO localization - flash("Commentaire supprimé") + if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": + flash("Commentaire supprimé") + else: + flash("Comment deleted.") return redirect("/web/admin") From 69f1c35ef5b7707d6ff6de00ff7bedd33b697b9c Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 31 May 2024 17:37:10 +0200 Subject: [PATCH 145/182] externalize localized application messages --- src/stacosys/i18n/messages.py | 17 ++++++++++++++++ src/stacosys/i18n/messages_en.properties | 6 ++++++ src/stacosys/i18n/messages_fr.properties | 6 ++++++ src/stacosys/interface/web/admin.py | 25 +++++------------------- src/stacosys/run.py | 9 +++++++++ 5 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 src/stacosys/i18n/messages.py create mode 100644 src/stacosys/i18n/messages_en.properties create mode 100644 src/stacosys/i18n/messages_fr.properties diff --git a/src/stacosys/i18n/messages.py b/src/stacosys/i18n/messages.py new file mode 100644 index 0000000..d64cbac --- /dev/null +++ b/src/stacosys/i18n/messages.py @@ -0,0 +1,17 @@ +import configparser +import os + + +class Messages: + def __init__(self): + self.property_dict = {} + + def load_messages(self, lang): + config = configparser.ConfigParser() + config.read(os.path.join(os.path.dirname(__file__), 'messages_' + lang + '.properties')) + + for key, value in config.items('messages'): + self.property_dict[key] = value + + def get(self, key): + return self.property_dict.get(key) diff --git a/src/stacosys/i18n/messages_en.properties b/src/stacosys/i18n/messages_en.properties new file mode 100644 index 0000000..85d02a7 --- /dev/null +++ b/src/stacosys/i18n/messages_en.properties @@ -0,0 +1,6 @@ +[messages] +login.failure.username=Username or password incorrect +logout.flash=You have been logged out. +admin.comment.notfound=Comment not found. +admin.comment.approved=Comment published. +admin.comment.deleted=Comment deleted. \ No newline at end of file diff --git a/src/stacosys/i18n/messages_fr.properties b/src/stacosys/i18n/messages_fr.properties new file mode 100644 index 0000000..9137863 --- /dev/null +++ b/src/stacosys/i18n/messages_fr.properties @@ -0,0 +1,6 @@ +[messages] +login.failure.username=Identifiant ou mot de passe incorrect +logout.flash=Vous avez t dconnect. +admin.comment.notfound=Commentaire introuvable +admin.comment.approved=Commentaire publi +admin.comment.deleted=Commentaire supprim \ No newline at end of file diff --git a/src/stacosys/interface/web/admin.py b/src/stacosys/interface/web/admin.py index 9e35d50..9b8c0ef 100644 --- a/src/stacosys/interface/web/admin.py +++ b/src/stacosys/interface/web/admin.py @@ -37,10 +37,7 @@ def login(): if is_login_ok(username, password): session["user"] = username return redirect("/web/admin") - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Identifiant ou mot de passe incorrect") - else: - flash("Username or password incorrect") + flash(app.config["MESSAGES"].get("login.failure.username")) return redirect("/web/login") # GET return render_template( @@ -51,10 +48,7 @@ def login(): @app.route("/web/logout", methods=["GET"]) def logout(): session.pop("user") - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Vous avez été déconnecté.") - else: - flash("You have been logged out.") + flash(app.config["MESSAGES"].get("logout.flash")) return redirect("/web/admin") @@ -78,21 +72,12 @@ def admin_homepage(): def admin_action(): comment = dao.find_comment_by_id(request.form.get("comment")) if comment is None: - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Commentaire introuvable") - else: - flash("Comment not found.") + flash(app.config["MESSAGES"].get("admin.comment.notfound")) elif request.form.get("action") == "APPROVE": dao.publish_comment(comment) app.config["RSS"].generate() - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Commentaire publié") - else: - flash("Comment published.") + flash(app.config["MESSAGES"].get("admin.comment.approved")) else: dao.delete_comment(comment) - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Commentaire supprimé") - else: - flash("Comment deleted.") + flash(app.config["MESSAGES"].get("admin.comment.deleted")) return redirect("/web/admin") diff --git a/src/stacosys/run.py b/src/stacosys/run.py index 5634764..255c424 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -7,6 +7,7 @@ import os import sys from stacosys.db import database +from stacosys.i18n.messages import Messages from stacosys.interface import api, app, form from stacosys.interface.web import admin from stacosys.service.configuration import Config, ConfigParameter @@ -64,6 +65,12 @@ def configure_rss(config): return rss +def configure_localization(config): + messages = Messages() + messages.load_messages(config.get(ConfigParameter.LANG)) + return messages + + def main(config_pathname): logger = configure_logging() config = load_and_validate_config(config_pathname, logger) @@ -72,11 +79,13 @@ def main(config_pathname): logger.info("Start Stacosys application") rss = configure_rss(config) mailer = configure_and_validate_mailer(config, logger) + messages = configure_localization(config) logger.info("start interfaces %s %s %s", api, form, admin) app.config["CONFIG"] = config app.config["MAILER"] = mailer app.config["RSS"] = rss + app.config["MESSAGES"] = messages app.run( host=config.get(ConfigParameter.HTTP_HOST), port=config.get_int(ConfigParameter.HTTP_PORT), From a2863474de6a82db8ea24367b146ca5bab5a88b6 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 31 May 2024 17:47:33 +0200 Subject: [PATCH 146/182] Change rye action --- .github/workflows/docker.yml | 2 +- .github/workflows/pyinstaller.yml | 2 +- .github/workflows/pytest.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 4315b58..891f435 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - name: Set up rye - uses: atu4403/setup-rye-multiOS@v1 + uses: sksat/setup-rye@v0.8.0 - name: Sync dependencies using rye run: | rye pin ${{ matrix.python-version }} diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index f7799b5..442388d 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - name: Set up rye - uses: atu4403/setup-rye-multiOS@v1 + uses: sksat/setup-rye@v0.8.0 - name: Sync dependencies using rye run: | rye pin ${{ matrix.python-version }} diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 50c7cd3..b0ae2e9 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -12,7 +12,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - name: Set up rye - uses: atu4403/setup-rye-multiOS@v1 + uses: sksat/setup-rye@v0.8.0 - name: Sync dependencies using rye run: | rye pin ${{ matrix.python-version }} From 467060e49170677da9c255f51d4047a1fe5118cb Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Fri, 31 May 2024 17:50:49 +0200 Subject: [PATCH 147/182] Use latest rye action version --- .github/workflows/docker.yml | 2 +- .github/workflows/pyinstaller.yml | 2 +- .github/workflows/pytest.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 891f435..6c429c1 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - name: Set up rye - uses: sksat/setup-rye@v0.8.0 + uses: sksat/setup-rye@v0.23.1 - name: Sync dependencies using rye run: | rye pin ${{ matrix.python-version }} diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index 442388d..7d1f54c 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - name: Set up rye - uses: sksat/setup-rye@v0.8.0 + uses: sksat/setup-rye@v0.23.1 - name: Sync dependencies using rye run: | rye pin ${{ matrix.python-version }} diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index b0ae2e9..0d1c233 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -12,7 +12,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - name: Set up rye - uses: sksat/setup-rye@v0.8.0 + uses: sksat/setup-rye@v0.23.1 - name: Sync dependencies using rye run: | rye pin ${{ matrix.python-version }} From 8b132a71b387199050640dde378b046bbcea3871 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 15 Sep 2024 14:50:13 +0200 Subject: [PATCH 148/182] Improve code quality --- .gitignore | 1 + src/stacosys/i18n/messages.py | 6 ++++-- src/stacosys/model/email.py | 32 -------------------------------- src/stacosys/run.py | 2 +- 4 files changed, 6 insertions(+), 35 deletions(-) delete mode 100644 src/stacosys/model/email.py diff --git a/.gitignore b/.gitignore index 8e21425..381b24b 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ config-dev.ini .python-version stacosys.sublime-project stacosys.sublime-workspace +out/ \ No newline at end of file diff --git a/src/stacosys/i18n/messages.py b/src/stacosys/i18n/messages.py index d64cbac..a92113a 100644 --- a/src/stacosys/i18n/messages.py +++ b/src/stacosys/i18n/messages.py @@ -8,9 +8,11 @@ class Messages: def load_messages(self, lang): config = configparser.ConfigParser() - config.read(os.path.join(os.path.dirname(__file__), 'messages_' + lang + '.properties')) + config.read( + os.path.join(os.path.dirname(__file__), "messages_" + lang + ".properties") + ) - for key, value in config.items('messages'): + for key, value in config.items("messages"): self.property_dict[key] = value def get(self, key): diff --git a/src/stacosys/model/email.py b/src/stacosys/model/email.py deleted file mode 100644 index fad2336..0000000 --- a/src/stacosys/model/email.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -from dataclasses import dataclass -from datetime import datetime -from typing import List - - -@dataclass -class Part: - content: str - content_type: str - - -@dataclass -class Attachment: - filename: str - content: str - content_type: str - - -@dataclass -class Email: - id: int - encoding: str - date: datetime - from_addr: str - to_addr: str - subject: str - parts: List[Part] - attachments: List[Attachment] - plain_text_content: str diff --git a/src/stacosys/run.py b/src/stacosys/run.py index 255c424..42d903c 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -101,5 +101,5 @@ if __name__ == "__main__": try: main(args.config) except Exception as e: - logging.error(f"Failed to start application: {e}") + logging.error("Failed to start application: %s", e) sys.exit(1) From 811984542488d43641d10cb45339a0e6fce601c0 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 15 Sep 2024 14:50:13 +0200 Subject: [PATCH 149/182] Upgrade dependencies --- requirements-dev.lock | 119 ++++++++++++++++++++++++++++++++---------- requirements.lock | 48 +++++++++++++---- 2 files changed, 128 insertions(+), 39 deletions(-) diff --git a/requirements-dev.lock b/requirements-dev.lock index a01488a..940750b 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -5,49 +5,112 @@ # pre: false # features: [] # all-features: false +# with-sources: false +# generate-hashes: false +# universal: false -e file:. altgraph==0.17.4 -astroid==3.1.0 + # via pyinstaller +astroid==3.2.4 + # via pylint background==0.2.1 -black==24.3.0 -blinker==1.7.0 -certifi==2024.2.2 + # via stacosys +black==24.8.0 +blinker==1.8.2 + # via flask +certifi==2024.8.30 + # via requests charset-normalizer==3.3.2 + # via requests click==8.1.7 -coverage==6.5.0 -coveralls==3.3.1 + # via black + # via flask +coverage==7.6.1 + # via coveralls + # via pytest-cov +coveralls==4.0.1 dill==0.3.8 + # via pylint docopt==0.6.2 -exceptiongroup==1.2.0 + # via coveralls +exceptiongroup==1.2.2 + # via pytest flask==3.0.3 -idna==3.7 + # via stacosys +idna==3.9 + # via requests +importlib-metadata==8.5.0 + # via flask + # via markdown + # via pyinstaller + # via pyinstaller-hooks-contrib iniconfig==2.0.0 + # via pytest isort==5.13.2 -itsdangerous==2.1.2 -jinja2==3.1.3 -markdown==3.6 + # via pylint +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via flask +markdown==3.7 + # via stacosys markupsafe==2.1.5 + # via jinja2 + # via werkzeug mccabe==0.7.0 -mypy==1.9.0 + # via pylint +mypy==1.11.2 mypy-extensions==1.0.0 -packaging==24.0 + # via black + # via mypy +packaging==24.1 + # via black + # via pyinstaller + # via pyinstaller-hooks-contrib + # via pytest pathspec==0.12.1 -platformdirs==4.2.0 -pluggy==1.4.0 -pydal==20231114.3 -pyinstaller==6.5.0 -pyinstaller-hooks-contrib==2024.3 -pylint==3.1.0 + # via black +platformdirs==4.3.3 + # via black + # via pylint +pluggy==1.5.0 + # via pytest +pydal==20240906.1 + # via stacosys +pyinstaller==6.10.0 +pyinstaller-hooks-contrib==2024.8 + # via pyinstaller +pylint==3.2.7 pyrss2gen==1.1 -pytest==8.1.1 + # via stacosys +pytest==8.3.3 + # via pytest-cov pytest-cov==5.0.0 -requests==2.31.0 +requests==2.32.3 + # via coveralls + # via stacosys +setuptools==74.1.2 + # via pyinstaller + # via pyinstaller-hooks-contrib tomli==2.0.1 -tomlkit==0.12.4 -types-markdown==3.6.0.20240316 -typing-extensions==4.11.0 -urllib3==2.2.1 -werkzeug==3.0.2 -# The following packages are considered to be unsafe in a requirements file: -setuptools==69.3.0 + # via black + # via coverage + # via mypy + # via pylint + # via pytest +tomlkit==0.13.2 + # via pylint +types-markdown==3.7.0.20240822 + # via stacosys +typing-extensions==4.12.2 + # via astroid + # via black + # via mypy + # via pylint +urllib3==2.2.3 + # via requests +werkzeug==3.0.4 + # via flask +zipp==3.20.2 + # via importlib-metadata diff --git a/requirements.lock b/requirements.lock index fca2376..03d2992 100644 --- a/requirements.lock +++ b/requirements.lock @@ -5,22 +5,48 @@ # pre: false # features: [] # all-features: false +# with-sources: false +# generate-hashes: false +# universal: false -e file:. background==0.2.1 -blinker==1.7.0 -certifi==2024.2.2 + # via stacosys +blinker==1.8.2 + # via flask +certifi==2024.8.30 + # via requests charset-normalizer==3.3.2 + # via requests click==8.1.7 + # via flask flask==3.0.3 -idna==3.7 -itsdangerous==2.1.2 -jinja2==3.1.3 -markdown==3.6 + # via stacosys +idna==3.9 + # via requests +importlib-metadata==8.5.0 + # via flask + # via markdown +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via flask +markdown==3.7 + # via stacosys markupsafe==2.1.5 -pydal==20231114.3 + # via jinja2 + # via werkzeug +pydal==20240906.1 + # via stacosys pyrss2gen==1.1 -requests==2.31.0 -types-markdown==3.6.0.20240316 -urllib3==2.2.1 -werkzeug==3.0.2 + # via stacosys +requests==2.32.3 + # via stacosys +types-markdown==3.7.0.20240822 + # via stacosys +urllib3==2.2.3 + # via requests +werkzeug==3.0.4 + # via flask +zipp==3.20.2 + # via importlib-metadata From 0f61666553df6c34715ece406e86ee8359429248 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 22 Sep 2024 19:15:32 +0200 Subject: [PATCH 150/182] Upgrade upload-artifact action --- .github/workflows/pyinstaller.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index 7d1f54c..7596c01 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -22,7 +22,7 @@ jobs: uses: JackMcKew/pyinstaller-action-linux@python3.10 with: path: . - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: - name: stacosys + name: stacosys-${{ matrix.runs-on }} path: dist/linux From fe21b9ac0e5cf23e2529b6fe5be4cfe7bd48e5cb Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 22 Sep 2024 19:42:29 +0200 Subject: [PATCH 151/182] Fix unicode messages --- src/stacosys/i18n/messages_fr.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/stacosys/i18n/messages_fr.properties b/src/stacosys/i18n/messages_fr.properties index 9137863..7e18584 100644 --- a/src/stacosys/i18n/messages_fr.properties +++ b/src/stacosys/i18n/messages_fr.properties @@ -1,6 +1,6 @@ [messages] login.failure.username=Identifiant ou mot de passe incorrect -logout.flash=Vous avez t dconnect. +logout.flash=Vous avez \xe9t\xe9 d\xe9connect\xe9. admin.comment.notfound=Commentaire introuvable -admin.comment.approved=Commentaire publi -admin.comment.deleted=Commentaire supprim \ No newline at end of file +admin.comment.approved=Commentaire publi\xe9 +admin.comment.deleted=Commentaire supprim\xe9 \ No newline at end of file From dc776881e405693968e84651322d114242669100 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 22 Sep 2024 19:42:53 +0200 Subject: [PATCH 152/182] include property files in pyinstaller executable --- stacosys.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stacosys.spec b/stacosys.spec index 30a8b39..7a25893 100644 --- a/stacosys.spec +++ b/stacosys.spec @@ -5,7 +5,7 @@ a = Analysis( ['src/stacosys/run.py'], pathex=['src'], binaries=[], - datas=[('src/stacosys/interface/templates/*.html', 'src/stacosys/interface/templates/')], + datas=[('src/stacosys/interface/templates/*.html', 'stacosys/interface/templates/'), ('src/stacosys/i18n/*.properties', 'stacosys/i18n/')], hiddenimports=[], hookspath=[], hooksconfig={}, From 25ed2f06e083337839034dddaae1b812303d2051 Mon Sep 17 00:00:00 2001 From: evidencebp Date: Sun, 24 Nov 2024 19:05:23 +0200 Subject: [PATCH 153/182] src\stacosys\service\mail.py broad-exception-caught Catching Exception might hide unexpected exceptions, like those that might be raised due to future modification. Therefore, it is recommended to narrow the exceptions. The method send of the class Mailer catches Exception in line 57. MIMEText does not raise exceptions (if not using attachments). See https://docs.python.org/3/library/email.mime.html Most code is handled in an inner exception handling. In order to catch exception from SMTP_SSL I used SMTPException See https://docs.python.org/3/library/smtplib.html --- src/stacosys/service/mail.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stacosys/service/mail.py b/src/stacosys/service/mail.py index 6aa9470..be2ded7 100644 --- a/src/stacosys/service/mail.py +++ b/src/stacosys/service/mail.py @@ -3,7 +3,7 @@ import logging from email.mime.text import MIMEText -from smtplib import SMTP_SSL, SMTPAuthenticationError +from smtplib import SMTP_SSL, SMTPAuthenticationError, SMTPException logger = logging.getLogger(__name__) @@ -54,6 +54,6 @@ class Mailer: server.send_message(msg) return True - except Exception: + except SMTPException: logger.error("Error sending email", exc_info=True) return False From 5c51a18d0c337dcd9ebdff90ac7fa5bbdec9f2c5 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 9 Dec 2024 13:58:42 +0100 Subject: [PATCH 154/182] Replace rye by uv and upgrade to python 3.13.1 --- .github/workflows/docker.yml | 16 +- Dockerfile | 4 +- Makefile | 18 +- pyproject.toml | 51 ++-- requirements-dev.lock | 116 -------- requirements.lock | 52 ---- uv.lock | 502 +++++++++++++++++++++++++++++++++++ 7 files changed, 539 insertions(+), 220 deletions(-) delete mode 100644 requirements-dev.lock delete mode 100644 requirements.lock create mode 100644 uv.lock diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6c429c1..6b67fc8 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -8,17 +8,19 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python-version: [3.10.13] + python-version: [3.13.1] steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up rye - uses: sksat/setup-rye@v0.23.1 - - name: Sync dependencies using rye + - name: Install the latest version of uv + uses: astral-sh/setup-uv@v4 + with: + version: "latest" + - name: Sync dependencies using uv run: | - rye pin ${{ matrix.python-version }} - rye sync - rye build --wheel --out dist + uv python pin ${{ matrix.python-version }} + uv sync + uv build --wheel --out-dir dist - name: Build the Docker image run: | echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io diff --git a/Dockerfile b/Dockerfile index 7ea52cc..f3a448e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -FROM python:3.11.0-alpine +FROM python:3.13.1-alpine3.20 -ARG STACOSYS_VERSION=3.3 +ARG STACOSYS_VERSION=3.4 ARG STACOSYS_FILENAME=stacosys-${STACOSYS_VERSION}-py3-none-any.whl RUN apk update && apk add bash && apk add wget diff --git a/Makefile b/Makefile index 9fe962f..386eb06 100644 --- a/Makefile +++ b/Makefile @@ -11,28 +11,28 @@ endif all: black typehint lint black: - rye run isort --multi-line 3 --profile black src/ tests/ - rye run black --target-version py311 src/ tests/ + uv run isort --multi-line 3 --profile black src/ tests/ + uv run black --target-version py311 src/ tests/ typehint: - rye run mypy --ignore-missing-imports src/ tests/ + uv run mypy --ignore-missing-imports src/ tests/ lint: - rye run pylint src/ + uv run pylint src/ # check check: all # test test: - rye run coverage run -m --source=stacosys pytest tests - rye run coverage report + PYTHONPATH=src/ uv run coverage run -m --source=stacosys pytest tests + uv run coverage report # build -#rye run pyinstaller src/stacosys/run.py --name stacosys --onefile build: - rye run pyinstaller --clean stacosys.spec + uv build --wheel --out-dir dist + docker build -t kianby/stacosys . # run run: - PYTHONPATH=src/ rye run python src/stacosys/run.py $(RUN_ARGS) \ No newline at end of file + PYTHONPATH=src/ uv run python src/stacosys/run.py $(RUN_ARGS) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index dec0886..590c7f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,45 +1,28 @@ [project] name = "stacosys" -version = "3.3" +version = "3.4" description = "STAtic COmmenting SYStem" +readme = "README.md" authors = [ { name = "Yax" } ] -readme = "README.md" -requires-python = ">= 3.8" +requires-python = ">=3.13.1" dependencies = [ - "pyrss2gen>=1.1", - "markdown>=3.5.1", - "requests>=2.31.0", "background>=0.2.1", - "Flask>=3.0.2", - "types-markdown>=3.5.0.1", - "pydal>=20230521.1" + "flask>=3.1.0", + "markdown>=3.7", + "pydal>=20241204.1", + "pyrss2gen>=1.1", + "requests>=2.32.3", + "types-markdown>=3.7.0.20241204", ] -[tool.pytest.ini_options] -pythonpath = [ - "src" +[dependency-groups] +dev = [ + "coveralls>=4.0.1", + "mypy>=1.13.0", + "pylint>=3.3.2", + "pytest-cov>=6.0.0", + "pytest>=8.3.4", + "black>=24.10.0", ] - -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" - -[tool.rye] -managed = true -dev-dependencies = [ - "pylint>=3.0.2", - "mypy>=1.6.1", - "pytest>=7.4.3", - "coveralls>=3.3.1", - "pytest-cov>=4.1.0", - "black>=23.10.1", - "pyinstaller>=6.1.0", -] - -[tool.hatch.metadata] -allow-direct-references = true - -[tool.hatch.build.targets.wheel] -packages = ["src"] diff --git a/requirements-dev.lock b/requirements-dev.lock deleted file mode 100644 index 940750b..0000000 --- a/requirements-dev.lock +++ /dev/null @@ -1,116 +0,0 @@ -# generated by rye -# use `rye lock` or `rye sync` to update this lockfile -# -# last locked with the following flags: -# pre: false -# features: [] -# all-features: false -# with-sources: false -# generate-hashes: false -# universal: false - --e file:. -altgraph==0.17.4 - # via pyinstaller -astroid==3.2.4 - # via pylint -background==0.2.1 - # via stacosys -black==24.8.0 -blinker==1.8.2 - # via flask -certifi==2024.8.30 - # via requests -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via black - # via flask -coverage==7.6.1 - # via coveralls - # via pytest-cov -coveralls==4.0.1 -dill==0.3.8 - # via pylint -docopt==0.6.2 - # via coveralls -exceptiongroup==1.2.2 - # via pytest -flask==3.0.3 - # via stacosys -idna==3.9 - # via requests -importlib-metadata==8.5.0 - # via flask - # via markdown - # via pyinstaller - # via pyinstaller-hooks-contrib -iniconfig==2.0.0 - # via pytest -isort==5.13.2 - # via pylint -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via flask -markdown==3.7 - # via stacosys -markupsafe==2.1.5 - # via jinja2 - # via werkzeug -mccabe==0.7.0 - # via pylint -mypy==1.11.2 -mypy-extensions==1.0.0 - # via black - # via mypy -packaging==24.1 - # via black - # via pyinstaller - # via pyinstaller-hooks-contrib - # via pytest -pathspec==0.12.1 - # via black -platformdirs==4.3.3 - # via black - # via pylint -pluggy==1.5.0 - # via pytest -pydal==20240906.1 - # via stacosys -pyinstaller==6.10.0 -pyinstaller-hooks-contrib==2024.8 - # via pyinstaller -pylint==3.2.7 -pyrss2gen==1.1 - # via stacosys -pytest==8.3.3 - # via pytest-cov -pytest-cov==5.0.0 -requests==2.32.3 - # via coveralls - # via stacosys -setuptools==74.1.2 - # via pyinstaller - # via pyinstaller-hooks-contrib -tomli==2.0.1 - # via black - # via coverage - # via mypy - # via pylint - # via pytest -tomlkit==0.13.2 - # via pylint -types-markdown==3.7.0.20240822 - # via stacosys -typing-extensions==4.12.2 - # via astroid - # via black - # via mypy - # via pylint -urllib3==2.2.3 - # via requests -werkzeug==3.0.4 - # via flask -zipp==3.20.2 - # via importlib-metadata diff --git a/requirements.lock b/requirements.lock deleted file mode 100644 index 03d2992..0000000 --- a/requirements.lock +++ /dev/null @@ -1,52 +0,0 @@ -# generated by rye -# use `rye lock` or `rye sync` to update this lockfile -# -# last locked with the following flags: -# pre: false -# features: [] -# all-features: false -# with-sources: false -# generate-hashes: false -# universal: false - --e file:. -background==0.2.1 - # via stacosys -blinker==1.8.2 - # via flask -certifi==2024.8.30 - # via requests -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via flask -flask==3.0.3 - # via stacosys -idna==3.9 - # via requests -importlib-metadata==8.5.0 - # via flask - # via markdown -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via flask -markdown==3.7 - # via stacosys -markupsafe==2.1.5 - # via jinja2 - # via werkzeug -pydal==20240906.1 - # via stacosys -pyrss2gen==1.1 - # via stacosys -requests==2.32.3 - # via stacosys -types-markdown==3.7.0.20240822 - # via stacosys -urllib3==2.2.3 - # via requests -werkzeug==3.0.4 - # via flask -zipp==3.20.2 - # via importlib-metadata diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..59809a6 --- /dev/null +++ b/uv.lock @@ -0,0 +1,502 @@ +version = 1 +requires-python = ">=3.13.1" + +[[package]] +name = "astroid" +version = "3.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/40/e028137cb19ed577001c76b91c5c50fee5a9c85099f45820b69385574ac5/astroid-3.3.6.tar.gz", hash = "sha256:6aaea045f938c735ead292204afdb977a36e989522b7833ef6fea94de743f442", size = 397452 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/d2/82c8ccef22ea873a2b0da9636e47d45137eeeb2fb9320c5dbbdd3627bab0/astroid-3.3.6-py3-none-any.whl", hash = "sha256:db676dc4f3ae6bfe31cda227dc60e03438378d7a896aec57422c95634e8d722f", size = 274644 }, +] + +[[package]] +name = "background" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/41/d6122c8e4bb280b2182098d77554d00016b6ffe54201cd3fac7f52fe9df2/background-0.2.1.tar.gz", hash = "sha256:4a5ed40b4a2a9f3340b1402862725d35016dc2490f95d89a2de47c3ddf215b91", size = 3141 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/45/01a33c692ce9f22214cad440f34704ed74e56b6f21d90e71aa595b3c2b72/background-0.2.1-py3-none-any.whl", hash = "sha256:c230e2813c773f93ecae54281ce6b1b425c895c24599cc203b7f137e4d7c4802", size = 2209 }, +] + +[[package]] +name = "black" +version = "24.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/0d/cc2fb42b8c50d80143221515dd7e4766995bd07c56c9a3ed30baf080b6dc/black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875", size = 645813 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/a0/a993f58d4ecfba035e61fca4e9f64a2ecae838fc9f33ab798c62173ed75c/black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981", size = 1643986 }, + { url = "https://files.pythonhosted.org/packages/37/d5/602d0ef5dfcace3fb4f79c436762f130abd9ee8d950fa2abdbf8bbc555e0/black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b", size = 1448085 }, + { url = "https://files.pythonhosted.org/packages/47/6d/a3a239e938960df1a662b93d6230d4f3e9b4a22982d060fc38c42f45a56b/black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2", size = 1760928 }, + { url = "https://files.pythonhosted.org/packages/dd/cf/af018e13b0eddfb434df4d9cd1b2b7892bab119f7a20123e93f6910982e8/black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b", size = 1436875 }, + { url = "https://files.pythonhosted.org/packages/8d/a7/4b27c50537ebca8bec139b872861f9d2bf501c5ec51fcf897cb924d9e264/black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d", size = 206898 }, +] + +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458 }, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, + { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, + { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, + { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, + { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, + { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, + { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, + { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, + { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, + { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, + { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, + { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, + { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "coverage" +version = "7.6.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/d2/c25011f4d036cf7e8acbbee07a8e09e9018390aee25ba085596c4b83d510/coverage-7.6.9.tar.gz", hash = "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", size = 801710 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/26/9abab6539d2191dbda2ce8c97b67d74cbfc966cc5b25abb880ffc7c459bc/coverage-7.6.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664", size = 207356 }, + { url = "https://files.pythonhosted.org/packages/44/da/d49f19402240c93453f606e660a6676a2a1fbbaa6870cc23207790aa9697/coverage-7.6.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c", size = 207614 }, + { url = "https://files.pythonhosted.org/packages/da/e6/93bb9bf85497816082ec8da6124c25efa2052bd4c887dd3b317b91990c9e/coverage-7.6.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014", size = 240129 }, + { url = "https://files.pythonhosted.org/packages/df/65/6a824b9406fe066835c1274a9949e06f084d3e605eb1a602727a27ec2fe3/coverage-7.6.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00", size = 237276 }, + { url = "https://files.pythonhosted.org/packages/9f/79/6c7a800913a9dd23ac8c8da133ebb556771a5a3d4df36b46767b1baffd35/coverage-7.6.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d", size = 239267 }, + { url = "https://files.pythonhosted.org/packages/57/e7/834d530293fdc8a63ba8ff70033d5182022e569eceb9aec7fc716b678a39/coverage-7.6.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a", size = 238887 }, + { url = "https://files.pythonhosted.org/packages/15/05/ec9d6080852984f7163c96984444e7cd98b338fd045b191064f943ee1c08/coverage-7.6.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077", size = 236970 }, + { url = "https://files.pythonhosted.org/packages/0a/d8/775937670b93156aec29f694ce37f56214ed7597e1a75b4083ee4c32121c/coverage-7.6.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb", size = 238831 }, + { url = "https://files.pythonhosted.org/packages/f4/58/88551cb7fdd5ec98cb6044e8814e38583436b14040a5ece15349c44c8f7c/coverage-7.6.9-cp313-cp313-win32.whl", hash = "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba", size = 210000 }, + { url = "https://files.pythonhosted.org/packages/b7/12/cfbf49b95120872785ff8d56ab1c7fe3970a65e35010c311d7dd35c5fd00/coverage-7.6.9-cp313-cp313-win_amd64.whl", hash = "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1", size = 210753 }, + { url = "https://files.pythonhosted.org/packages/7c/68/c1cb31445599b04bde21cbbaa6d21b47c5823cdfef99eae470dfce49c35a/coverage-7.6.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419", size = 208091 }, + { url = "https://files.pythonhosted.org/packages/11/73/84b02c6b19c4a11eb2d5b5eabe926fb26c21c080e0852f5e5a4f01165f9e/coverage-7.6.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a", size = 208369 }, + { url = "https://files.pythonhosted.org/packages/de/e0/ae5d878b72ff26df2e994a5c5b1c1f6a7507d976b23beecb1ed4c85411ef/coverage-7.6.9-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4", size = 251089 }, + { url = "https://files.pythonhosted.org/packages/ab/9c/0aaac011aef95a93ef3cb2fba3fde30bc7e68a6635199ed469b1f5ea355a/coverage-7.6.9-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae", size = 246806 }, + { url = "https://files.pythonhosted.org/packages/f8/19/4d5d3ae66938a7dcb2f58cef3fa5386f838f469575b0bb568c8cc9e3a33d/coverage-7.6.9-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030", size = 249164 }, + { url = "https://files.pythonhosted.org/packages/b3/0b/4ee8a7821f682af9ad440ae3c1e379da89a998883271f088102d7ca2473d/coverage-7.6.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be", size = 248642 }, + { url = "https://files.pythonhosted.org/packages/8a/12/36ff1d52be18a16b4700f561852e7afd8df56363a5edcfb04cf26a0e19e0/coverage-7.6.9-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e", size = 246516 }, + { url = "https://files.pythonhosted.org/packages/43/d0/8e258f6c3a527c1655602f4f576215e055ac704de2d101710a71a2affac2/coverage-7.6.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", size = 247783 }, + { url = "https://files.pythonhosted.org/packages/a9/0d/1e4a48d289429d38aae3babdfcadbf35ca36bdcf3efc8f09b550a845bdb5/coverage-7.6.9-cp313-cp313t-win32.whl", hash = "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", size = 210646 }, + { url = "https://files.pythonhosted.org/packages/26/74/b0729f196f328ac55e42b1e22ec2f16d8bcafe4b8158a26ec9f1cdd1d93e/coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", size = 211815 }, +] + +[[package]] +name = "coveralls" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "docopt" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/75/a454fb443eb6a053833f61603a432ffbd7dd6ae53a11159bacfadb9d6219/coveralls-4.0.1.tar.gz", hash = "sha256:7b2a0a2bcef94f295e3cf28dcc55ca40b71c77d1c2446b538e85f0f7bc21aa69", size = 12419 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/e5/6708c75e2a4cfca929302d4d9b53b862c6dc65bd75e6933ea3d20016d41d/coveralls-4.0.1-py3-none-any.whl", hash = "sha256:7a6b1fa9848332c7b2221afb20f3df90272ac0167060f41b5fe90429b30b1809", size = 13599 }, +] + +[[package]] +name = "dill" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/43/86fe3f9e130c4137b0f1b50784dd70a5087b911fe07fa81e53e0c4c47fea/dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c", size = 187000 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/d1/e73b6ad76f0b1fb7f23c35c6d95dbc506a9c8804f43dda8cb5b0fa6331fd/dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a", size = 119418 }, +] + +[[package]] +name = "docopt" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901 } + +[[package]] +name = "flask" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/50/dff6380f1c7f84135484e176e0cac8690af72fa90e932ad2a0a60e28c69b/flask-3.1.0.tar.gz", hash = "sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac", size = 680824 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/47/93213ee66ef8fae3b93b3e29206f6b251e65c97bd91d8e1c5596ef15af0a/flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136", size = 102979 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, +] + +[[package]] +name = "isort" +version = "5.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/f9/c1eb8635a24e87ade2efce21e3ce8cd6b8630bb685ddc9cdaca1349b2eb5/isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", size = 175303 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/b3/8def84f539e7d2289a02f0524b944b15d7c75dab7628bedf1c4f0992029c/isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6", size = 92310 }, +] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234 }, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, +] + +[[package]] +name = "markdown" +version = "3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350 }, +] + +[[package]] +name = "mypy" +version = "1.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/21/7e9e523537991d145ab8a0a2fd98548d67646dc2aaaf6091c31ad883e7c1/mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e", size = 3152532 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/bb/ab4cfdc562cad80418f077d8be9b4491ee4fb257440da951b85cbb0a639e/mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7", size = 11069721 }, + { url = "https://files.pythonhosted.org/packages/59/3b/a393b1607cb749ea2c621def5ba8c58308ff05e30d9dbdc7c15028bca111/mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62", size = 10063996 }, + { url = "https://files.pythonhosted.org/packages/d1/1f/6b76be289a5a521bb1caedc1f08e76ff17ab59061007f201a8a18cc514d1/mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8", size = 12584043 }, + { url = "https://files.pythonhosted.org/packages/a6/83/5a85c9a5976c6f96e3a5a7591aa28b4a6ca3a07e9e5ba0cec090c8b596d6/mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7", size = 13036996 }, + { url = "https://files.pythonhosted.org/packages/b4/59/c39a6f752f1f893fccbcf1bdd2aca67c79c842402b5283563d006a67cf76/mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc", size = 9737709 }, + { url = "https://files.pythonhosted.org/packages/3b/86/72ce7f57431d87a7ff17d442f521146a6585019eb8f4f31b7c02801f78ad/mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a", size = 2647043 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "pydal" +version = "20241204.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/78/7ddf9aacea5cd2e63423d278d26465c63ecdae87cf1c503d8fc1f7dfcfa5/pydal-20241204.1.tar.gz", hash = "sha256:1ba1f9e528b985e234f5b3acfd9d549998b44f7ed7ae747b9e8d4ad3047bf511", size = 623731 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/de/30f6ee6c8f333a00969fb4d5cd3c8cb8ca69feeeb2518d69b69d9bbe732b/pydal-20241204.1-py2.py3-none-any.whl", hash = "sha256:416f06de17ab0a5340e11195a0583abfe484eceb067cd3ab92208d3dc5aa7683", size = 246873 }, +] + +[[package]] +name = "pylint" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "astroid" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "dill" }, + { name = "isort" }, + { name = "mccabe" }, + { name = "platformdirs" }, + { name = "tomlkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/d8/4471b2cb4ad18b4af717918c468209bd2bd5a02c52f60be5ee8a71b5af2c/pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01", size = 1516485 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/55/5eaf6c415f6ddb09b9b039278823a8e27fb81ea7a34ec80c6d9223b17f2e/pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a", size = 521873 }, +] + +[[package]] +name = "pyrss2gen" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/01/fd610d5fc86f7dbdbefc4baa8f7fe15a2e5484244c41dcf363ca7e89f60c/PyRSS2Gen-1.1.tar.gz", hash = "sha256:7960aed7e998d2482bf58716c316509786f596426f879b05f8d84e98b82c6ee7", size = 6854 } + +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, +] + +[[package]] +name = "pytest-cov" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/45/9b538de8cef30e17c7b45ef42f538a94889ed6a16f2387a6c89e73220651/pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0", size = 66945 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "stacosys" +version = "3.4" +source = { virtual = "." } +dependencies = [ + { name = "background" }, + { name = "flask" }, + { name = "markdown" }, + { name = "pydal" }, + { name = "pyrss2gen" }, + { name = "requests" }, + { name = "types-markdown" }, +] + +[package.dev-dependencies] +dev = [ + { name = "black" }, + { name = "coveralls" }, + { name = "mypy" }, + { name = "pylint" }, + { name = "pytest" }, + { name = "pytest-cov" }, +] + +[package.metadata] +requires-dist = [ + { name = "background", specifier = ">=0.2.1" }, + { name = "flask", specifier = ">=3.1.0" }, + { name = "markdown", specifier = ">=3.7" }, + { name = "pydal", specifier = ">=20241204.1" }, + { name = "pyrss2gen", specifier = ">=1.1" }, + { name = "requests", specifier = ">=2.32.3" }, + { name = "types-markdown", specifier = ">=3.7.0.20241204" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "black", specifier = ">=24.10.0" }, + { name = "coveralls", specifier = ">=4.0.1" }, + { name = "mypy", specifier = ">=1.13.0" }, + { name = "pylint", specifier = ">=3.3.2" }, + { name = "pytest", specifier = ">=8.3.4" }, + { name = "pytest-cov", specifier = ">=6.0.0" }, +] + +[[package]] +name = "tomlkit" +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/09/a439bec5888f00a54b8b9f05fa94d7f901d6735ef4e55dcec9bc37b5d8fa/tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79", size = 192885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", size = 37955 }, +] + +[[package]] +name = "types-markdown" +version = "3.7.0.20241204" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/3c/874ac6ce93f4e6bd0283a5df2c8065f4e623c6c3bc0b2fb98c098313cb73/types_markdown-3.7.0.20241204.tar.gz", hash = "sha256:ecca2b25cd23163fd28ed5ba34d183d731da03e8a5ed3a20b60daded304c5410", size = 17820 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/26/3c9730e845cfd0d587e0dfa9c1975f02f9f49407afbf30800094bdac0286/types_Markdown-3.7.0.20241204-py3-none-any.whl", hash = "sha256:f96146c367ea9c82bfe9903559d72706555cc2a1a3474c58ebba03b418ab18da", size = 23572 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + +[[package]] +name = "werkzeug" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, +] From a58b310998503da4079370297db1e02e00d50326 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 9 Dec 2024 14:03:04 +0100 Subject: [PATCH 155/182] Adapt git actions --- .github/workflows/pyinstaller.yml | 28 ---------------------------- .github/workflows/pytest.yml | 20 +++++++++++--------- 2 files changed, 11 insertions(+), 37 deletions(-) delete mode 100644 .github/workflows/pyinstaller.yml diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml deleted file mode 100644 index 7596c01..0000000 --- a/.github/workflows/pyinstaller.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: pyinstaller -on: - push: - branches: [ main ] -jobs: - build_binary: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest] - python-version: [3.10.13] - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Set up rye - uses: sksat/setup-rye@v0.23.1 - - name: Sync dependencies using rye - run: | - rye pin ${{ matrix.python-version }} - rye sync - - name: Package application - uses: JackMcKew/pyinstaller-action-linux@python3.10 - with: - path: . - - uses: actions/upload-artifact@v4 - with: - name: stacosys-${{ matrix.runs-on }} - path: dist/linux diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 0d1c233..defd939 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -7,21 +7,23 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python-version: [3.10.13] + python-version: [3.13.1] steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up rye - uses: sksat/setup-rye@v0.23.1 - - name: Sync dependencies using rye + - name: Install the latest version of uv + uses: astral-sh/setup-uv@v4 + with: + version: "latest" + - name: Sync dependencies using uv run: | - rye pin ${{ matrix.python-version }} - rye sync + uv python pin ${{ matrix.python-version }} + uv sync - name: Pytest and Coverage run: | - rye run coverage run -m --source=stacosys pytest tests - rye run coverage report + PYTHONPATH=src/ uv run coverage run -m --source=stacosys pytest tests + uv run coverage report - name: Send report to Coveralls - run: rye run coveralls + run: uv run coveralls env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} From f5fc48e909a45ee53674328f8da715ef76d0961a Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 9 Dec 2024 14:17:42 +0100 Subject: [PATCH 156/182] update readme --- README.md | 2 +- stacosys.spec | 37 ------------------------------------- 2 files changed, 1 insertion(+), 38 deletions(-) delete mode 100644 stacosys.spec diff --git a/README.md b/README.md index 521db14..44bfb70 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) - [![Python version](https://img.shields.io/badge/Python-3.11-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-2.1-green.svg)](https://flask.palletsprojects.com) + [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) [![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) diff --git a/stacosys.spec b/stacosys.spec deleted file mode 100644 index 7a25893..0000000 --- a/stacosys.spec +++ /dev/null @@ -1,37 +0,0 @@ -# -*- mode: python ; coding: utf-8 -*- - - -a = Analysis( - ['src/stacosys/run.py'], - pathex=['src'], - binaries=[], - datas=[('src/stacosys/interface/templates/*.html', 'stacosys/interface/templates/'), ('src/stacosys/i18n/*.properties', 'stacosys/i18n/')], - hiddenimports=[], - hookspath=[], - hooksconfig={}, - runtime_hooks=[], - excludes=[], - noarchive=False, -) -pyz = PYZ(a.pure) - -exe = EXE( - pyz, - a.scripts, - a.binaries, - a.datas, - [], - name='stacosys', - debug=False, - bootloader_ignore_signals=False, - strip=False, - upx=True, - upx_exclude=[], - runtime_tmpdir=None, - console=True, - disable_windowed_traceback=False, - argv_emulation=False, - target_arch=None, - codesign_identity=None, - entitlements_file=None, -) From 9bd8b8b594f6ca2dbc89c895b579b849b19ebe89 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Mon, 9 Dec 2024 17:18:23 +0100 Subject: [PATCH 157/182] Package resources --- Makefile | 2 ++ pyproject.toml | 13 +++++++++++++ src/stacosys/i18n/messages.py | 11 +++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 386eb06..9da87cf 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,8 @@ test: # build build: + # https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel + rm -rf build/* dist/* *.egg-info uv build --wheel --out-dir dist docker build -t kianby/stacosys . diff --git a/pyproject.toml b/pyproject.toml index 590c7f6..dd0af66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,3 +26,16 @@ dev = [ "pytest>=8.3.4", "black>=24.10.0", ] + +[tool.setuptools] +package-dir = { "" = "src" } # Specify the root directory for packages +packages = ["stacosys"] + +[tool.setuptools.package-data] +# Include `.properties` and `.html` files in the specified directories +"stacosys.i18n" = ["*.properties"] +"stacosys.interface.templates" = ["*.html"] + +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" diff --git a/src/stacosys/i18n/messages.py b/src/stacosys/i18n/messages.py index a92113a..375506f 100644 --- a/src/stacosys/i18n/messages.py +++ b/src/stacosys/i18n/messages.py @@ -1,6 +1,6 @@ import configparser import os - +import importlib.resources class Messages: def __init__(self): @@ -8,9 +8,12 @@ class Messages: def load_messages(self, lang): config = configparser.ConfigParser() - config.read( - os.path.join(os.path.dirname(__file__), "messages_" + lang + ".properties") - ) + + # Access the resource file within the package + with importlib.resources.open_text( + __package__, f"messages_{lang}.properties" + ) as file: + config.read_file(file) for key, value in config.items("messages"): self.property_dict[key] = value From 06349b5153c22dd29a29de0946055bf50ecf01bd Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Thu, 12 Dec 2024 19:13:58 +0100 Subject: [PATCH 158/182] Build issue --- .github/workflows/docker.yml | 1 + Makefile | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6b67fc8..3bc31b2 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -20,6 +20,7 @@ jobs: run: | uv python pin ${{ matrix.python-version }} uv sync + rm -rf build *.egg-info uv build --wheel --out-dir dist - name: Build the Docker image run: | diff --git a/Makefile b/Makefile index 386eb06..ed6bb65 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,7 @@ test: # build build: + rm -rf build *.egg-info uv build --wheel --out-dir dist docker build -t kianby/stacosys . From e527fad7f02e87a5d92f93852e345935c729a229 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Thu, 12 Dec 2024 19:23:28 +0100 Subject: [PATCH 159/182] Fix build --- .github/workflows/docker.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6b67fc8..11592ab 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -20,6 +20,7 @@ jobs: run: | uv python pin ${{ matrix.python-version }} uv sync + rm -rf build/* dist/* *.egg-info uv build --wheel --out-dir dist - name: Build the Docker image run: | From c25ed334db69010501d345468f9215d9477da220 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Thu, 12 Dec 2024 19:33:01 +0100 Subject: [PATCH 160/182] Fix docker build --- .github/workflows/docker.yml | 3 +-- Makefile | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 11592ab..c2fa8b8 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -19,8 +19,7 @@ jobs: - name: Sync dependencies using uv run: | uv python pin ${{ matrix.python-version }} - uv sync - rm -rf build/* dist/* *.egg-info + uv sync uv build --wheel --out-dir dist - name: Build the Docker image run: | diff --git a/Makefile b/Makefile index 05606a7..9da87cf 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,6 @@ test: build: # https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel rm -rf build/* dist/* *.egg-info ->>>>>>> upgrade-docker uv build --wheel --out-dir dist docker build -t kianby/stacosys . From 6becceeb61fa2d5f7d6eeff4e56cc3a446f3eeed Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 14 Dec 2024 14:04:38 +0100 Subject: [PATCH 161/182] Enable debug --- docker/docker-init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/docker-init.sh b/docker/docker-init.sh index 7c51f8e..19660c8 100644 --- a/docker/docker-init.sh +++ b/docker/docker-init.sh @@ -6,4 +6,4 @@ cp -f stacosys/run.py . python3 run.py /config/config.ini # catch for debug -#tail -f /dev/null \ No newline at end of file +tail -f /dev/null \ No newline at end of file From ce4e2b2b1b98853aa8a3d97908a87a1896446045 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 14 Dec 2024 14:10:47 +0100 Subject: [PATCH 162/182] Debug --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f3a448e..d534dd6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ RUN chmod +x usr/local/bin/docker-init.sh RUN cd / COPY dist/${STACOSYS_FILENAME} / RUN python3 -m pip install ${STACOSYS_FILENAME} --target /stacosys -RUN rm -f ${STACOSYS_FILENAME} +#RUN rm -f ${STACOSYS_FILENAME} WORKDIR /stacosys CMD ["docker-init.sh"] From a5032ed440759639d745afa8df24e864b2c670fe Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 14 Dec 2024 14:21:19 +0100 Subject: [PATCH 163/182] Fix docker build --- .github/workflows/docker.yml | 3 ++- Dockerfile | 2 +- docker/docker-init.sh | 2 +- uv.lock | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c2fa8b8..11592ab 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -19,7 +19,8 @@ jobs: - name: Sync dependencies using uv run: | uv python pin ${{ matrix.python-version }} - uv sync + uv sync + rm -rf build/* dist/* *.egg-info uv build --wheel --out-dir dist - name: Build the Docker image run: | diff --git a/Dockerfile b/Dockerfile index d534dd6..f3a448e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ RUN chmod +x usr/local/bin/docker-init.sh RUN cd / COPY dist/${STACOSYS_FILENAME} / RUN python3 -m pip install ${STACOSYS_FILENAME} --target /stacosys -#RUN rm -f ${STACOSYS_FILENAME} +RUN rm -f ${STACOSYS_FILENAME} WORKDIR /stacosys CMD ["docker-init.sh"] diff --git a/docker/docker-init.sh b/docker/docker-init.sh index 19660c8..7c51f8e 100644 --- a/docker/docker-init.sh +++ b/docker/docker-init.sh @@ -6,4 +6,4 @@ cp -f stacosys/run.py . python3 run.py /config/config.ini # catch for debug -tail -f /dev/null \ No newline at end of file +#tail -f /dev/null \ No newline at end of file diff --git a/uv.lock b/uv.lock index 59809a6..afb15b0 100644 --- a/uv.lock +++ b/uv.lock @@ -411,7 +411,7 @@ wheels = [ [[package]] name = "stacosys" version = "3.4" -source = { virtual = "." } +source = { editable = "." } dependencies = [ { name = "background" }, { name = "flask" }, From 678271d80d4333c0a48471d4d27562189d2392de Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sat, 14 Dec 2024 14:54:49 +0100 Subject: [PATCH 164/182] Disable github docker action for time being --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 9da87cf..e35d817 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,8 @@ build: rm -rf build/* dist/* *.egg-info uv build --wheel --out-dir dist docker build -t kianby/stacosys . + #docker login -u kianby + #docker push docker.io/kianby/stacosys:latest # run run: From c28251a158a103a9e50e02ed51bfb7adb7a44a1f Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Sun, 23 Mar 2025 17:51:19 +0100 Subject: [PATCH 165/182] Update README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 44bfb70..833cd43 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +To be updated. Moved to CodeBerg + [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) @@ -58,4 +60,4 @@ Update dependencies and sync virtual env ### Improvements -Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. \ No newline at end of file +Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. From e429ee80307eeddad4fdcf027e9f0eaa2a6f19b7 Mon Sep 17 00:00:00 2001 From: Yax Date: Fri, 28 Mar 2025 20:34:45 +0100 Subject: [PATCH 166/182] Fix docker build --- Makefile | 8 ++++---- pyproject.toml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index e35d817..0650450 100644 --- a/Makefile +++ b/Makefile @@ -32,11 +32,11 @@ test: build: # https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel rm -rf build/* dist/* *.egg-info + uv sync uv build --wheel --out-dir dist - docker build -t kianby/stacosys . - #docker login -u kianby - #docker push docker.io/kianby/stacosys:latest + docker build -t source.madyanne.fr/yax/stacosys . + docker push source.madyanne.fr/yax/stacosys # run run: - PYTHONPATH=src/ uv run python src/stacosys/run.py $(RUN_ARGS) \ No newline at end of file + PYTHONPATH=src/ uv run python src/stacosys/run.py $(RUN_ARGS) diff --git a/pyproject.toml b/pyproject.toml index dd0af66..e59cc7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ dev = [ [tool.setuptools] package-dir = { "" = "src" } # Specify the root directory for packages -packages = ["stacosys"] +packages = ["stacosys", "stacosys.db", "stacosys.i18n", "stacosys.interface", "stacosys.interface.web", "stacosys.interface.templates", "stacosys.model", "stacosys.service"] [tool.setuptools.package-data] # Include `.properties` and `.html` files in the specified directories @@ -38,4 +38,4 @@ packages = ["stacosys"] [build-system] requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" +build-backend = "setuptools.build_meta" \ No newline at end of file From d4140bc83e94f78ee3bfc739cebc8244c734cb84 Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 29 Mar 2025 19:48:29 +0100 Subject: [PATCH 167/182] Zaclys migration --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 833cd43..160ab37 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -To be updated. Moved to CodeBerg +To be updated. Moved to ~CodeBerg~ Zaclys [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) From 030fd258d0ad0d71950dd1d6345571893d6f32bd Mon Sep 17 00:00:00 2001 From: Yax Date: Fri, 4 Apr 2025 20:00:17 +0200 Subject: [PATCH 168/182] UTF-8 messages --- src/stacosys/i18n/messages_fr.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/stacosys/i18n/messages_fr.properties b/src/stacosys/i18n/messages_fr.properties index 7e18584..6486ffe 100644 --- a/src/stacosys/i18n/messages_fr.properties +++ b/src/stacosys/i18n/messages_fr.properties @@ -1,6 +1,6 @@ [messages] login.failure.username=Identifiant ou mot de passe incorrect -logout.flash=Vous avez \xe9t\xe9 d\xe9connect\xe9. +logout.flash=Vous avez été déconnecté. admin.comment.notfound=Commentaire introuvable -admin.comment.approved=Commentaire publi\xe9 -admin.comment.deleted=Commentaire supprim\xe9 \ No newline at end of file +admin.comment.approved=Commentaire publié +admin.comment.deleted=Commentaire supprimé \ No newline at end of file From fe995baed6e402b9283af2bdc251304b6b90d8d5 Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 5 Apr 2025 17:28:31 +0200 Subject: [PATCH 169/182] Remove coveralls.io and generate coverage badge locally --- .github/workflows/docker.yml | 29 ----------------------------- .github/workflows/pytest.yml | 29 ----------------------------- Makefile | 3 +++ README.md | 17 +++++++---------- coverage.svg | 21 +++++++++++++++++++++ pyproject.toml | 3 ++- src/stacosys/i18n/messages.py | 3 ++- uv.lock | 27 ++++++++++++++++++++++++++- 8 files changed, 61 insertions(+), 71 deletions(-) delete mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/pytest.yml create mode 100644 coverage.svg diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 11592ab..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: docker -on: - push: - branches: [ main ] -jobs: - build_docker: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest] - python-version: [3.13.1] - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Install the latest version of uv - uses: astral-sh/setup-uv@v4 - with: - version: "latest" - - name: Sync dependencies using uv - run: | - uv python pin ${{ matrix.python-version }} - uv sync - rm -rf build/* dist/* *.egg-info - uv build --wheel --out-dir dist - - name: Build the Docker image - run: | - echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io - docker build . --file Dockerfile --tag docker.io/${{ secrets.DOCKER_HUB_USERNAME }}/${{ secrets.DOCKER_HUB_REPOSITORY }}:latest - docker push docker.io/${{ secrets.DOCKER_HUB_USERNAME }}/${{ secrets.DOCKER_HUB_REPOSITORY }}:latest diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml deleted file mode 100644 index defd939..0000000 --- a/.github/workflows/pytest.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: pytest -on: push - -jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest] - python-version: [3.13.1] - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Install the latest version of uv - uses: astral-sh/setup-uv@v4 - with: - version: "latest" - - name: Sync dependencies using uv - run: | - uv python pin ${{ matrix.python-version }} - uv sync - - name: Pytest and Coverage - run: | - PYTHONPATH=src/ uv run coverage run -m --source=stacosys pytest tests - uv run coverage report - - name: Send report to Coveralls - run: uv run coveralls - env: - COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} diff --git a/Makefile b/Makefile index 0650450..74573e7 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,7 @@ check: all test: PYTHONPATH=src/ uv run coverage run -m --source=stacosys pytest tests uv run coverage report + uv run coverage-badge -f -o coverage.svg # build build: @@ -35,6 +36,8 @@ build: uv sync uv build --wheel --out-dir dist docker build -t source.madyanne.fr/yax/stacosys . + +publish: docker push source.madyanne.fr/yax/stacosys # run diff --git a/README.md b/README.md index 160ab37..45be15e 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ -To be updated. Moved to ~CodeBerg~ Zaclys - [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) -[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) [![Coverage Status](https://coveralls.io/repos/github/kianby/stacosys/badge.svg?branch=main)](https://coveralls.io/github/kianby/stacosys?branch=main) [![Build status - docker image](https://github.com/kianby/stacosys/workflows/docker/badge.svg)](https://hub.docker.com/r/kianby/stacosys) +[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/coverage.svg) ## Stacosys @@ -47,17 +45,16 @@ Stacosys offers a REST API to retrieve and post comments. Static blog is HTML-ba ### Installation -Build and Dependency management relies on [Rye](https://rye-up.com/) but you can also use [Docker image](https://hub.docker.com/r/kianby/stacosys). +Build and Dependency management relies on [uv](https://docs.astral.sh/uv/) -Build executable with pyinstaller +Run tests and coverage + + make test + +Build docker image make build -Update dependencies and sync virtual env - - rye lock --update-all - rye sync - ### Improvements Stacosys fits my needs, and it manages comments on [my blog](https://blogduyax.madyanne.fr) for a while. I don't have any plan to make big changes, it's more a python playground for me. So I strongly encourage you to fork and enhance the project if you need additional features. diff --git a/coverage.svg b/coverage.svg new file mode 100644 index 0000000..6963b3e --- /dev/null +++ b/coverage.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + coverage + coverage + 87% + 87% + + diff --git a/pyproject.toml b/pyproject.toml index e59cc7c..85a93b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,7 @@ authors = [ requires-python = ">=3.13.1" dependencies = [ "background>=0.2.1", + "coverage-badge>=1.1.2", "flask>=3.1.0", "markdown>=3.7", "pydal>=20241204.1", @@ -38,4 +39,4 @@ packages = ["stacosys", "stacosys.db", "stacosys.i18n", "stacosys.interface", "s [build-system] requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" \ No newline at end of file +build-backend = "setuptools.build_meta" diff --git a/src/stacosys/i18n/messages.py b/src/stacosys/i18n/messages.py index 375506f..374d066 100644 --- a/src/stacosys/i18n/messages.py +++ b/src/stacosys/i18n/messages.py @@ -1,6 +1,7 @@ import configparser -import os import importlib.resources +import os + class Messages: def __init__(self): diff --git a/uv.lock b/uv.lock index afb15b0..aeef7a6 100644 --- a/uv.lock +++ b/uv.lock @@ -1,4 +1,5 @@ version = 1 +revision = 1 requires-python = ">=3.13.1" [[package]] @@ -86,7 +87,7 @@ name = "click" version = "8.1.7" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "platform_system == 'Windows'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } wheels = [ @@ -130,6 +131,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/26/74/b0729f196f328ac55e42b1e22ec2f16d8bcafe4b8158a26ec9f1cdd1d93e/coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", size = 211815 }, ] +[[package]] +name = "coverage-badge" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/8f/e92b0a010c76b0da82709838b3f3ae9aec638d0c44dbfb1186a5751f5d2e/coverage_badge-1.1.2.tar.gz", hash = "sha256:fe7ed58a3b72dad85a553b64a99e963dea3847dcd0b8ddd2b38a00333618642c", size = 6335 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/3d/5642a1a06191b2e1e0f87a2e824e6d3eb7c32c589a68ed4d1dcbd3324d63/coverage_badge-1.1.2-py2.py3-none-any.whl", hash = "sha256:d8413ce51c91043a1692b943616b450868cbeeb0ea6a0c54a32f8318c9c96ff7", size = 6493 }, +] + [[package]] name = "coveralls" version = "4.0.1" @@ -408,12 +422,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] +[[package]] +name = "setuptools" +version = "78.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/5a/0db4da3bc908df06e5efae42b44e75c81dd52716e10192ff36d0c1c8e379/setuptools-78.1.0.tar.gz", hash = "sha256:18fd474d4a82a5f83dac888df697af65afa82dec7323d09c3e37d1f14288da54", size = 1367827 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/21/f43f0a1fa8b06b32812e0975981f4677d28e0f3271601dc88ac5a5b83220/setuptools-78.1.0-py3-none-any.whl", hash = "sha256:3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8", size = 1256108 }, +] + [[package]] name = "stacosys" version = "3.4" source = { editable = "." } dependencies = [ { name = "background" }, + { name = "coverage-badge" }, { name = "flask" }, { name = "markdown" }, { name = "pydal" }, @@ -435,6 +459,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "background", specifier = ">=0.2.1" }, + { name = "coverage-badge", specifier = ">=1.1.2" }, { name = "flask", specifier = ">=3.1.0" }, { name = "markdown", specifier = ">=3.7" }, { name = "pydal", specifier = ">=20241204.1" }, From 1f347237be90777fa1a3cf427b16d6a6390ba771 Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 5 Apr 2025 17:30:08 +0200 Subject: [PATCH 170/182] Fix coverage badge link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45be15e..3916997 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) -[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/coverage.svg) +[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/src/branch/main/coverage.svg) ## Stacosys From 21e26e021db1f0f004e7bee51b656cf2afdf288e Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 5 Apr 2025 17:31:41 +0200 Subject: [PATCH 171/182] Fix badge link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3916997..05ecfc4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) -[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/src/branch/main/coverage.svg) +[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/coverage.svg) ## Stacosys From 59740dc5bebc76298e5a95e0eb1a83dfe7b09286 Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 5 Apr 2025 17:53:10 +0200 Subject: [PATCH 172/182] Ad test badge --- .gitignore | 4 ++- Makefile | 7 +++-- README.md | 2 +- coverage-badge.svg | 1 + coverage.svg | 21 -------------- pyproject.toml | 3 +- tests-badge.svg | 1 + uv.lock | 70 ++++++++++++++++++++++++++++++++++++---------- 8 files changed, 67 insertions(+), 42 deletions(-) create mode 100644 coverage-badge.svg delete mode 100644 coverage.svg create mode 100644 tests-badge.svg diff --git a/.gitignore b/.gitignore index 381b24b..9d89a5a 100644 --- a/.gitignore +++ b/.gitignore @@ -72,4 +72,6 @@ config-dev.ini .python-version stacosys.sublime-project stacosys.sublime-workspace -out/ \ No newline at end of file +out/ +junit.xml +coverage.xml \ No newline at end of file diff --git a/Makefile b/Makefile index 74573e7..9e40e0f 100644 --- a/Makefile +++ b/Makefile @@ -25,9 +25,10 @@ check: all # test test: - PYTHONPATH=src/ uv run coverage run -m --source=stacosys pytest tests - uv run coverage report - uv run coverage-badge -f -o coverage.svg + PYTHONPATH=src/ uv run coverage run -m --source=stacosys pytest --junitxml=junit.xml tests + uv run genbadge tests -i junit.xml + uv run coverage xml + uv run genbadge coverage -i coverage.xml # build build: diff --git a/README.md b/README.md index 05ecfc4..b013672 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) -[![Build Status - pytest](https://github.com/kianby/stacosys/workflows/pytest/badge.svg)](https://github.com/kianby/stacosys) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/coverage.svg) +![Build Status - pytest](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/tests-badge.svg) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/coverage-badge.svg) ## Stacosys diff --git a/coverage-badge.svg b/coverage-badge.svg new file mode 100644 index 0000000..c3d15a1 --- /dev/null +++ b/coverage-badge.svg @@ -0,0 +1 @@ +coverage: 86.82%coverage86.82% \ No newline at end of file diff --git a/coverage.svg b/coverage.svg deleted file mode 100644 index 6963b3e..0000000 --- a/coverage.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - coverage - coverage - 87% - 87% - - diff --git a/pyproject.toml b/pyproject.toml index 85a93b6..ff7649d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,8 +9,9 @@ authors = [ requires-python = ">=3.13.1" dependencies = [ "background>=0.2.1", - "coverage-badge>=1.1.2", + "defusedxml>=0.7.1", "flask>=3.1.0", + "genbadge>=1.1.2", "markdown>=3.7", "pydal>=20241204.1", "pyrss2gen>=1.1", diff --git a/tests-badge.svg b/tests-badge.svg new file mode 100644 index 0000000..29110b8 --- /dev/null +++ b/tests-badge.svg @@ -0,0 +1 @@ +tests: 19tests19 \ No newline at end of file diff --git a/uv.lock b/uv.lock index aeef7a6..154cad1 100644 --- a/uv.lock +++ b/uv.lock @@ -131,19 +131,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/26/74/b0729f196f328ac55e42b1e22ec2f16d8bcafe4b8158a26ec9f1cdd1d93e/coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", size = 211815 }, ] -[[package]] -name = "coverage-badge" -version = "1.1.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "coverage" }, - { name = "setuptools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/be/8f/e92b0a010c76b0da82709838b3f3ae9aec638d0c44dbfb1186a5751f5d2e/coverage_badge-1.1.2.tar.gz", hash = "sha256:fe7ed58a3b72dad85a553b64a99e963dea3847dcd0b8ddd2b38a00333618642c", size = 6335 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/3d/5642a1a06191b2e1e0f87a2e824e6d3eb7c32c589a68ed4d1dcbd3324d63/coverage_badge-1.1.2-py2.py3-none-any.whl", hash = "sha256:d8413ce51c91043a1692b943616b450868cbeeb0ea6a0c54a32f8318c9c96ff7", size = 6493 }, -] - [[package]] name = "coveralls" version = "4.0.1" @@ -158,6 +145,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/e5/6708c75e2a4cfca929302d4d9b53b862c6dc65bd75e6933ea3d20016d41d/coveralls-4.0.1-py3-none-any.whl", hash = "sha256:7a6b1fa9848332c7b2221afb20f3df90272ac0167060f41b5fe90429b30b1809", size = 13599 }, ] +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, +] + [[package]] name = "dill" version = "0.3.9" @@ -189,6 +185,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/af/47/93213ee66ef8fae3b93b3e29206f6b251e65c97bd91d8e1c5596ef15af0a/flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136", size = 102979 }, ] +[[package]] +name = "genbadge" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "pillow" }, + { name = "requests" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/2b/75c50383f951f36334635715819f89d1b4dae1de0ff7d510970bbf137994/genbadge-1.1.2.tar.gz", hash = "sha256:987ed2feaf6e9cc2850fc3883320d8706b3849eb6c9f436156254dcac438515c", size = 137188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/5e/91f2340d7a51ce0b7a59e5caa1cccd61131d8d5163cc02f3563c819cb49c/genbadge-1.1.2-py2.py3-none-any.whl", hash = "sha256:4e3073cb56c2745fbef4b7da97eb85b28a18a22af519b66acb6706b6546279f1", size = 100945 }, +] + [[package]] name = "idna" version = "3.10" @@ -328,6 +339,33 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, ] +[[package]] +name = "pillow" +version = "11.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/af/c097e544e7bd278333db77933e535098c259609c4eb3b85381109602fb5b/pillow-11.1.0.tar.gz", hash = "sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20", size = 46742715 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/31/9ca79cafdce364fd5c980cd3416c20ce1bebd235b470d262f9d24d810184/pillow-11.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc", size = 3226640 }, + { url = "https://files.pythonhosted.org/packages/ac/0f/ff07ad45a1f172a497aa393b13a9d81a32e1477ef0e869d030e3c1532521/pillow-11.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0", size = 3101437 }, + { url = "https://files.pythonhosted.org/packages/08/2f/9906fca87a68d29ec4530be1f893149e0cb64a86d1f9f70a7cfcdfe8ae44/pillow-11.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1", size = 4326605 }, + { url = "https://files.pythonhosted.org/packages/b0/0f/f3547ee15b145bc5c8b336401b2d4c9d9da67da9dcb572d7c0d4103d2c69/pillow-11.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec", size = 4411173 }, + { url = "https://files.pythonhosted.org/packages/b1/df/bf8176aa5db515c5de584c5e00df9bab0713548fd780c82a86cba2c2fedb/pillow-11.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5", size = 4369145 }, + { url = "https://files.pythonhosted.org/packages/de/7c/7433122d1cfadc740f577cb55526fdc39129a648ac65ce64db2eb7209277/pillow-11.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114", size = 4496340 }, + { url = "https://files.pythonhosted.org/packages/25/46/dd94b93ca6bd555588835f2504bd90c00d5438fe131cf01cfa0c5131a19d/pillow-11.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352", size = 4296906 }, + { url = "https://files.pythonhosted.org/packages/a8/28/2f9d32014dfc7753e586db9add35b8a41b7a3b46540e965cb6d6bc607bd2/pillow-11.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3", size = 4431759 }, + { url = "https://files.pythonhosted.org/packages/33/48/19c2cbe7403870fbe8b7737d19eb013f46299cdfe4501573367f6396c775/pillow-11.1.0-cp313-cp313-win32.whl", hash = "sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9", size = 2291657 }, + { url = "https://files.pythonhosted.org/packages/3b/ad/285c556747d34c399f332ba7c1a595ba245796ef3e22eae190f5364bb62b/pillow-11.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c", size = 2626304 }, + { url = "https://files.pythonhosted.org/packages/e5/7b/ef35a71163bf36db06e9c8729608f78dedf032fc8313d19bd4be5c2588f3/pillow-11.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65", size = 2375117 }, + { url = "https://files.pythonhosted.org/packages/79/30/77f54228401e84d6791354888549b45824ab0ffde659bafa67956303a09f/pillow-11.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861", size = 3230060 }, + { url = "https://files.pythonhosted.org/packages/ce/b1/56723b74b07dd64c1010fee011951ea9c35a43d8020acd03111f14298225/pillow-11.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081", size = 3106192 }, + { url = "https://files.pythonhosted.org/packages/e1/cd/7bf7180e08f80a4dcc6b4c3a0aa9e0b0ae57168562726a05dc8aa8fa66b0/pillow-11.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c", size = 4446805 }, + { url = "https://files.pythonhosted.org/packages/97/42/87c856ea30c8ed97e8efbe672b58c8304dee0573f8c7cab62ae9e31db6ae/pillow-11.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547", size = 4530623 }, + { url = "https://files.pythonhosted.org/packages/ff/41/026879e90c84a88e33fb00cc6bd915ac2743c67e87a18f80270dfe3c2041/pillow-11.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab", size = 4465191 }, + { url = "https://files.pythonhosted.org/packages/e5/fb/a7960e838bc5df57a2ce23183bfd2290d97c33028b96bde332a9057834d3/pillow-11.1.0-cp313-cp313t-win32.whl", hash = "sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9", size = 2295494 }, + { url = "https://files.pythonhosted.org/packages/d7/6c/6ec83ee2f6f0fda8d4cf89045c6be4b0373ebfc363ba8538f8c999f63fcd/pillow-11.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe", size = 2631595 }, + { url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 }, +] + [[package]] name = "platformdirs" version = "4.3.6" @@ -437,8 +475,9 @@ version = "3.4" source = { editable = "." } dependencies = [ { name = "background" }, - { name = "coverage-badge" }, + { name = "defusedxml" }, { name = "flask" }, + { name = "genbadge" }, { name = "markdown" }, { name = "pydal" }, { name = "pyrss2gen" }, @@ -459,8 +498,9 @@ dev = [ [package.metadata] requires-dist = [ { name = "background", specifier = ">=0.2.1" }, - { name = "coverage-badge", specifier = ">=1.1.2" }, + { name = "defusedxml", specifier = ">=0.7.1" }, { name = "flask", specifier = ">=3.1.0" }, + { name = "genbadge", specifier = ">=1.1.2" }, { name = "markdown", specifier = ">=3.7" }, { name = "pydal", specifier = ">=20241204.1" }, { name = "pyrss2gen", specifier = ">=1.1" }, From fd6b9fa639f907647e45b0f13c619d9a7a33b12b Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 5 Apr 2025 17:54:48 +0200 Subject: [PATCH 173/182] README update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b013672..6957a12 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) -![Build Status - pytest](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/tests-badge.svg) ![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/coverage-badge.svg) +![[Build Status - pytest](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/tests-badge.svg)]() ![[Coverage Status](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/coverage-badge.svg)]() ## Stacosys From ccfd5804b08445f3d7a07fa1a879b700ab291ecb Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 5 Apr 2025 17:55:40 +0200 Subject: [PATCH 174/182] Fix README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6957a12..71fe5c5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python version](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Flask version](https://img.shields.io/badge/Flask-3.1-green.svg)](https://flask.palletsprojects.com) -![[Build Status - pytest](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/tests-badge.svg)]() ![[Coverage Status](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/coverage-badge.svg)]() +[![Build Status - pytest](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/tests-badge.svg)]() [![Coverage Status](https://gitea.zaclys.com/yannic/stacosys/raw/branch/main/coverage-badge.svg)]() ## Stacosys From ee09cfaf4054eed73c21400bf5acafa1205bc11e Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 5 Apr 2025 17:57:05 +0200 Subject: [PATCH 175/182] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 71fe5c5..6986c76 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Stacosys -Stacosys (aka STAtic blog COmment SYStem) is a fork of [Pecosys](http://github.com/kianby/pecosys) trying to fix Pecosys design drawbacks and to provide a basic alternative to comment hosting services like Disqus. Stacosys works with any static blog or even a simple HTML page. +Stacosys (aka STAtic blog COmment SYStem) is a fork of Pecosys trying to fix design drawbacks and provide a basic alternative to comment hosting services like Disqus. Stacosys works with any static blog or even a simple HTML page. ### Features overview From 633be8096b57afcf1f85c2e809ec34bfb4f71b65 Mon Sep 17 00:00:00 2001 From: Yax Date: Sun, 17 Aug 2025 16:31:57 +0200 Subject: [PATCH 176/182] Update notified at published time if empty --- src/stacosys/db/dao.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/stacosys/db/dao.py b/src/stacosys/db/dao.py index 307e439..5f21ae3 100644 --- a/src/stacosys/db/dao.py +++ b/src/stacosys/db/dao.py @@ -18,6 +18,9 @@ def notify_comment(comment: Comment): def publish_comment(comment: Comment): + # if published before notification is received + if comment.notified == None: + db()(db().comment.id == comment.id).update(notified=datetime.now()) db()(db().comment.id == comment.id).update(published=datetime.now()) db().commit() From 0ea85ff307637d5bfeb42c8e5f509301a21e93f5 Mon Sep 17 00:00:00 2001 From: Yax Date: Sun, 17 Aug 2025 16:36:26 +0200 Subject: [PATCH 177/182] Upd coverage --- coverage-badge.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coverage-badge.svg b/coverage-badge.svg index c3d15a1..dcb99ba 100644 --- a/coverage-badge.svg +++ b/coverage-badge.svg @@ -1 +1 @@ -coverage: 86.82%coverage86.82% \ No newline at end of file +coverage: 86.92%coverage86.92% \ No newline at end of file From ffa76d7822849ceb76b20652b74c053d1ea8512f Mon Sep 17 00:00:00 2001 From: Yax Date: Wed, 24 Sep 2025 13:22:33 +0200 Subject: [PATCH 178/182] Log if mail connection fails --- src/stacosys/run.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/stacosys/run.py b/src/stacosys/run.py index 42d903c..d311049 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -46,9 +46,13 @@ def configure_and_validate_mailer(config, logger): config.get(ConfigParameter.SMTP_LOGIN), config.get(ConfigParameter.SMTP_PASSWORD), ) - mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) - if not mailer.check(): - logger.error("Email configuration not working") + mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) + try: + if not mailer.check(): + logger.error("Email configuration not working") + sys.exit(1) + except Exception as e: + logging.error("Failed to check email: %s", e) sys.exit(1) return mailer From d47f444ba759b59d3166945fd743384a500b3abf Mon Sep 17 00:00:00 2001 From: Yax Date: Wed, 24 Sep 2025 13:22:57 +0200 Subject: [PATCH 179/182] fix RSS date format --- src/stacosys/service/rssfeed.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/stacosys/service/rssfeed.py b/src/stacosys/service/rssfeed.py index 9c9ebe0..c9bea05 100644 --- a/src/stacosys/service/rssfeed.py +++ b/src/stacosys/service/rssfeed.py @@ -1,13 +1,15 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -from datetime import datetime +from datetime import datetime, timezone import markdown import PyRSS2Gen from stacosys.db import dao +RFC_822_FORMAT = '%a, %d %b %Y %H:%M:%S +0000' + class Rss: def __init__(self) -> None: @@ -40,7 +42,7 @@ class Rss: link=item_link, description=markdownizer.convert(row.content), guid=PyRSS2Gen.Guid(f"{item_link}{row.id}"), - pubDate=row.published, + pubDate=self._to_rfc822(row.published) ) ) @@ -54,3 +56,7 @@ class Rss: ) with open(self._rss_file, "w", encoding="utf-8") as outfile: rss.write_xml(outfile, encoding="utf-8") + + def _to_rfc822(self, dt): + return dt.replace(tzinfo=timezone.utc) \ + .strftime('%a, %d %b %Y %H:%M:%S %z') From 4e1336d1ba68a82fb65195858270d4786c6ca9bc Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 29 Nov 2025 18:36:49 +0100 Subject: [PATCH 180/182] Black formatting --- src/stacosys/db/dao.py | 2 +- src/stacosys/run.py | 2 +- src/stacosys/service/rssfeed.py | 7 +++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/stacosys/db/dao.py b/src/stacosys/db/dao.py index 5f21ae3..7088d87 100644 --- a/src/stacosys/db/dao.py +++ b/src/stacosys/db/dao.py @@ -20,7 +20,7 @@ def notify_comment(comment: Comment): def publish_comment(comment: Comment): # if published before notification is received if comment.notified == None: - db()(db().comment.id == comment.id).update(notified=datetime.now()) + db()(db().comment.id == comment.id).update(notified=datetime.now()) db()(db().comment.id == comment.id).update(published=datetime.now()) db().commit() diff --git a/src/stacosys/run.py b/src/stacosys/run.py index d311049..260e2a7 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -46,7 +46,7 @@ def configure_and_validate_mailer(config, logger): config.get(ConfigParameter.SMTP_LOGIN), config.get(ConfigParameter.SMTP_PASSWORD), ) - mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) + mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) try: if not mailer.check(): logger.error("Email configuration not working") diff --git a/src/stacosys/service/rssfeed.py b/src/stacosys/service/rssfeed.py index c9bea05..5c94d4e 100644 --- a/src/stacosys/service/rssfeed.py +++ b/src/stacosys/service/rssfeed.py @@ -8,7 +8,7 @@ import PyRSS2Gen from stacosys.db import dao -RFC_822_FORMAT = '%a, %d %b %Y %H:%M:%S +0000' +RFC_822_FORMAT = "%a, %d %b %Y %H:%M:%S +0000" class Rss: @@ -42,7 +42,7 @@ class Rss: link=item_link, description=markdownizer.convert(row.content), guid=PyRSS2Gen.Guid(f"{item_link}{row.id}"), - pubDate=self._to_rfc822(row.published) + pubDate=self._to_rfc822(row.published), ) ) @@ -58,5 +58,4 @@ class Rss: rss.write_xml(outfile, encoding="utf-8") def _to_rfc822(self, dt): - return dt.replace(tzinfo=timezone.utc) \ - .strftime('%a, %d %b %Y %H:%M:%S %z') + return dt.replace(tzinfo=timezone.utc).strftime("%a, %d %b %Y %H:%M:%S %z") From 5712fe9e001740ad0fa71c3c085c281cef148512 Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 10 Jan 2026 17:38:01 +0100 Subject: [PATCH 181/182] Remove unused import --- src/stacosys/i18n/messages.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/stacosys/i18n/messages.py b/src/stacosys/i18n/messages.py index 374d066..0e38b1f 100644 --- a/src/stacosys/i18n/messages.py +++ b/src/stacosys/i18n/messages.py @@ -1,6 +1,5 @@ import configparser import importlib.resources -import os class Messages: From 784a84fb45c2151b194cf902d3cecd1f8281eea0 Mon Sep 17 00:00:00 2001 From: Yax Date: Sat, 10 Jan 2026 17:38:27 +0100 Subject: [PATCH 182/182] Run config-dev.ini by default --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9e40e0f..7b6b402 100644 --- a/Makefile +++ b/Makefile @@ -43,4 +43,4 @@ publish: # run run: - PYTHONPATH=src/ uv run python src/stacosys/run.py $(RUN_ARGS) + PYTHONPATH=src/ uv run python src/stacosys/run.py config-dev.ini