diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d8f5707 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,23 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: FastAPI", + "type": "python", + "request": "launch", + "module": "uvicorn", + "args": [ + "--reload", + "--reload-dir", "libs/skyline-apiserver/skyline_apiserver", + "--port", "28000", + "--log-level", "debug", + "skyline_apiserver.main:app" + ], + "jinja": true, + "justMyCode": true + } + ] +} \ No newline at end of file diff --git a/README-zh_CN.md b/README-zh_CN.md index 7843900..7772706 100644 --- a/README-zh_CN.md +++ b/README-zh_CN.md @@ -1,12 +1,12 @@ -# Skyline +# Skyline API Server [English](./README.md) | 简体中文 -Skyline 是一个经过 UI 和 UE 优化过的 OpenStack 仪表盘,拥有现代化的技术栈和生态,更易于开发者维护和使用者操作,以及更高的并发性能。 +Skyline 是一个经过 UI 和 UE 优化过的 OpenStack 仪表盘,支持 OpenStack Train 及以上版本。Skyline 拥有现代化的技术栈和生态,更易于开发者维护和使用者操作,以及更高的并发性能。 Skyline 的吉祥物是九色鹿。九色鹿源自于敦煌壁画《九色鹿本生》,其寓意是佛理因果和知恩图报,这与九州云自创办以来秉持的拥抱和反馈社区理念一致。我们也希望 Skyline 像九色鹿一样,轻巧、优雅,而又能力强大,为 OpenStack 社区和用户提供更优质的 Dashboard。 -![](docs/images/nine-color-deer-64.png) +![](docs/images/OpenStack_Project_Skyline_horizontal.png) **目录** @@ -147,7 +147,7 @@ Skyline 的吉祥物是九色鹿。九色鹿源自于敦煌壁画《九色鹿本 ### 依赖工具 -> python 使用了3.7版本的新特性 Context Variables,考虑大部分系统不支持 python3.7,所以选择支持 python3.8 及以上版本 +> python 使用了 3.7 版本的新特性 Context Variables 以及 uvloop(0.15.0+ 需要 python3.7+),考虑大部分系统不支持 python3.7,所以选择支持 python3.8 及以上版本 - make >= 3.82 - python >= 3.8 @@ -207,7 +207,9 @@ Skyline 的吉祥物是九色鹿。九色鹿源自于敦煌壁画《九色鹿本 INFO: Application startup complete. ``` - 此时你可访问在线 API 文档:`http://127.0.0.1:28000/docs` + 此时你可访问在线 API 文档:`http://127.0.0.1:28000/docs`。 + + 如果用 vscode 调试的话,可以通过 `.vscode/launch.json` 启动调试器。 5. 构建镜像 @@ -222,3 +224,5 @@ Skyline 的吉祥物是九色鹿。九色鹿源自于敦煌壁画《九色鹿本 ## Kolla Ansible 部署 [使用 Kolla Ansible 部署环境。](./kolla/README-zh_CN.md) + +![](docs/images/nine-color-deer-64.png) diff --git a/README.md b/README.md index 46d6afb..27e0d17 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# Skyline API +# Skyline API Server English | [简体中文](./README-zh_CN.md) -Skyline is an OpenStack dashboard optimized by UI and UE. It has a modern technology stack and ecology, is easier for developers to maintain and operate by users, and has higher concurrency performance. +Skyline is an OpenStack dashboard optimized by UI and UE, support OpenStack Train+. It has a modern technology stack and ecology, is easier for developers to maintain and operate by users, and has higher concurrency performance. Skyline's mascot is the nine-color deer. The nine-color deer comes from Dunhuang mural "the nine-color king deer", whose moral is Buddhist cause-effect and gratefulness, which is consistent with 99cloud's philosophy of embracing and feedback community since its inception. We also hope Skyline can keep light, elegant and powerful as the nine-color deer, to provide a better dashboard for the openstack community and users. -![](docs/images/nine-color-deer-64.png) +![](docs/images/OpenStack_Project_Skyline_horizontal.png) **Table of contents** @@ -147,7 +147,7 @@ You can now access the dashboard: `https://:9999` ### Dependent tools -> Use the new feature Context Variables of python37. Considering that most systems do not support python37, we choose to support python38 at least. +> Use the new feature Context Variables of python37 & uvloop(0.15.0+ requires python37). Considering that most systems do not support python37, we choose to support python38 at least. - make >= 3.82 - python >= 3.8 @@ -207,7 +207,9 @@ You can now access the dashboard: `https://:9999` INFO: Application startup complete. ``` - You can now access the online API documentation: `http://127.0.0.1:28000/docs` + You can now access the online API documentation: `http://127.0.0.1:28000/docs`. + + Or, you can launch debugger with `.vscode/lauch.json` with vscode. 5. Build Image @@ -222,3 +224,5 @@ You can now access the dashboard: `https://:9999` ## Kolla Ansible Deployment [Kolla Ansible to build an environment.](./kolla/README.md) + +![](docs/images/nine-color-deer-64.png) diff --git a/docs/images/OpenStack_Project_Skyline-Icon-RGB.eps b/docs/images/OpenStack_Project_Skyline-Icon-RGB.eps new file mode 100644 index 0000000..0069d16 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline-Icon-RGB.eps differ diff --git a/docs/images/OpenStack_Project_Skyline-Icon-RGB.jpg b/docs/images/OpenStack_Project_Skyline-Icon-RGB.jpg new file mode 100644 index 0000000..1e4dfd2 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline-Icon-RGB.jpg differ diff --git a/docs/images/OpenStack_Project_Skyline-Icon-RGB.png b/docs/images/OpenStack_Project_Skyline-Icon-RGB.png new file mode 100644 index 0000000..6d838ad Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline-Icon-RGB.png differ diff --git a/docs/images/OpenStack_Project_Skyline-Icon-RGB.svg b/docs/images/OpenStack_Project_Skyline-Icon-RGB.svg new file mode 100644 index 0000000..b3f13ae --- /dev/null +++ b/docs/images/OpenStack_Project_Skyline-Icon-RGB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/OpenStack_Project_Skyline_horizontal.eps b/docs/images/OpenStack_Project_Skyline_horizontal.eps new file mode 100644 index 0000000..bc07e35 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_horizontal.eps differ diff --git a/docs/images/OpenStack_Project_Skyline_horizontal.jpg b/docs/images/OpenStack_Project_Skyline_horizontal.jpg new file mode 100644 index 0000000..1593596 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_horizontal.jpg differ diff --git a/docs/images/OpenStack_Project_Skyline_horizontal.png b/docs/images/OpenStack_Project_Skyline_horizontal.png new file mode 100644 index 0000000..25263a3 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_horizontal.png differ diff --git a/docs/images/OpenStack_Project_Skyline_horizontal.svg b/docs/images/OpenStack_Project_Skyline_horizontal.svg new file mode 100644 index 0000000..612385d --- /dev/null +++ b/docs/images/OpenStack_Project_Skyline_horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/OpenStack_Project_Skyline_horizontal_1color.eps b/docs/images/OpenStack_Project_Skyline_horizontal_1color.eps new file mode 100644 index 0000000..10cf241 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_horizontal_1color.eps differ diff --git a/docs/images/OpenStack_Project_Skyline_horizontal_1color.jpg b/docs/images/OpenStack_Project_Skyline_horizontal_1color.jpg new file mode 100644 index 0000000..7f5a0af Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_horizontal_1color.jpg differ diff --git a/docs/images/OpenStack_Project_Skyline_horizontal_1color.png b/docs/images/OpenStack_Project_Skyline_horizontal_1color.png new file mode 100644 index 0000000..e5c28fa Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_horizontal_1color.png differ diff --git a/docs/images/OpenStack_Project_Skyline_horizontal_1color.svg b/docs/images/OpenStack_Project_Skyline_horizontal_1color.svg new file mode 100644 index 0000000..b10f52d --- /dev/null +++ b/docs/images/OpenStack_Project_Skyline_horizontal_1color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/OpenStack_Project_Skyline_vertical.eps b/docs/images/OpenStack_Project_Skyline_vertical.eps new file mode 100644 index 0000000..11cb248 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_vertical.eps differ diff --git a/docs/images/OpenStack_Project_Skyline_vertical.jpg b/docs/images/OpenStack_Project_Skyline_vertical.jpg new file mode 100644 index 0000000..08b2be8 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_vertical.jpg differ diff --git a/docs/images/OpenStack_Project_Skyline_vertical.png b/docs/images/OpenStack_Project_Skyline_vertical.png new file mode 100644 index 0000000..c927aba Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_vertical.png differ diff --git a/docs/images/OpenStack_Project_Skyline_vertical.svg b/docs/images/OpenStack_Project_Skyline_vertical.svg new file mode 100644 index 0000000..0036c10 --- /dev/null +++ b/docs/images/OpenStack_Project_Skyline_vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/OpenStack_Project_Skyline_vertical_1color.eps b/docs/images/OpenStack_Project_Skyline_vertical_1color.eps new file mode 100644 index 0000000..d89fb79 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_vertical_1color.eps differ diff --git a/docs/images/OpenStack_Project_Skyline_vertical_1color.jpg b/docs/images/OpenStack_Project_Skyline_vertical_1color.jpg new file mode 100644 index 0000000..be1f5b9 Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_vertical_1color.jpg differ diff --git a/docs/images/OpenStack_Project_Skyline_vertical_1color.png b/docs/images/OpenStack_Project_Skyline_vertical_1color.png new file mode 100644 index 0000000..be9c29d Binary files /dev/null and b/docs/images/OpenStack_Project_Skyline_vertical_1color.png differ diff --git a/docs/images/OpenStack_Project_Skyline_vertical_1color.svg b/docs/images/OpenStack_Project_Skyline_vertical_1color.svg new file mode 100644 index 0000000..47deecc --- /dev/null +++ b/docs/images/OpenStack_Project_Skyline_vertical_1color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/etc/skyline.yaml.sample b/etc/skyline.yaml.sample index 255c86c..d9a7c72 100644 --- a/etc/skyline.yaml.sample +++ b/etc/skyline.yaml.sample @@ -2,8 +2,8 @@ default: access_token_expire: 3600 access_token_renew: 1800 cors_allow_origins: [] - database_url: mysql://root:root@localhost:3306/skyline - # database_url: sqlite:////tmp/skyline.db + database_url: 'mysql://root:root@localhost:3306/skyline' + # database_url: 'sqlite:////tmp/skyline.db' debug: false log_dir: ./log prometheus_basic_auth_password: '' @@ -67,7 +67,7 @@ openstack: fwaas_v2: neutron_firewall vpnaas: neutron_vpn interface_type: public - keystone_url: http://localhost:5000/v3/ + keystone_url: 'http://localhost:5000/v3/' nginx_prefix: /api/openstack reclaim_instance_interval: 604800 service_mapping: @@ -85,13 +85,13 @@ openstack: system_admin_roles: - admin - system_admin - system_project: service - system_project_domain: Default + system_project: 'service' + system_project_domain: 'Default' system_reader_roles: - system_reader - system_user_domain: Default - system_user_name: skyline - system_user_password: password + system_user_domain: 'Default' + system_user_name: 'skyline' + system_user_password: 'password' setting: base_settings: - flavor_families diff --git a/poetry.lock b/poetry.lock index 318a625..5f3a583 100644 --- a/poetry.lock +++ b/poetry.lock @@ -116,6 +116,25 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.dependencies] pytz = ">=2015.7" +[[package]] +name = "bandit" +version = "1.7.4" +description = "Security oriented static analyser for python code." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" +PyYAML = ">=5.3.1" +stevedore = ">=1.20.0" + +[package.extras] +test = ["coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml", "beautifulsoup4 (>=4.8.0)", "pylint (==1.9.4)"] +toml = ["toml"] +yaml = ["pyyaml"] + [[package]] name = "bcrypt" version = "3.2.0" @@ -129,7 +148,7 @@ cffi = ">=1.1" six = ">=1.4.1" [package.extras] -tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)"] +tests = ["pytest (>=3.2.1,!=3.3.0)"] typecheck = ["mypy"] [[package]] @@ -202,9 +221,9 @@ pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_ve wcwidth = ">=0.1.7" [package.extras] -dev = ["codecov", "doc8", "flake8", "invoke", "mypy (0.902)", "nox", "pytest (>=4.6)", "pytest-cov", "pytest-mock", "sphinx", "sphinx-rtd-theme", "sphinx-autobuild", "twine (>=1.11)"] +dev = ["codecov", "doc8", "flake8", "invoke", "mypy (==0.902)", "nox", "pytest (>=4.6)", "pytest-cov", "pytest-mock", "sphinx", "sphinx-rtd-theme", "sphinx-autobuild", "twine (>=1.11)"] test = ["codecov", "coverage", "pytest (>=4.6)", "pytest-cov", "pytest-mock", "gnureadline"] -validate = ["flake8", "mypy (0.902)", "types-pkg-resources"] +validate = ["flake8", "mypy (==0.902)", "types-pkg-resources"] [[package]] name = "colorama" @@ -226,12 +245,12 @@ python-versions = ">=3.6" cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,<1.8.0 || >1.8.0,<3.1.0 || >3.1.0,<3.1.1 || >3.1.1)", "sphinx-rtd-theme"] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,<3.79.2 || >3.79.2)"] +test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] [[package]] name = "databases" @@ -354,7 +373,42 @@ uvicorn = {version = "*", optional = true, markers = "extra == \"all\""} all = ["requests", "aiofiles", "jinja2", "python-multipart", "itsdangerous", "pyyaml", "graphene", "ujson", "orjson", "email-validator", "uvicorn", "async-exit-stack", "async-generator"] dev = ["pyjwt", "passlib", "autoflake", "flake8", "uvicorn", "graphene"] doc = ["mkdocs", "mkdocs-material", "markdown-include", "typer", "typer-cli", "pyyaml"] -test = ["pytest (5.4.3)", "pytest-cov (2.10.0)", "mypy", "black", "isort", "requests", "email-validator", "sqlalchemy", "peewee", "databases", "orjson", "async-exit-stack", "async-generator", "python-multipart", "aiofiles", "flask"] +test = ["pytest (==5.4.3)", "pytest-cov (==2.10.0)", "mypy", "black", "isort", "requests", "email-validator", "sqlalchemy", "peewee", "databases", "orjson", "async-exit-stack", "async-generator", "python-multipart", "aiofiles", "flask"] + +[[package]] +name = "flake8" +version = "4.0.1" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.8.0,<2.9.0" +pyflakes = ">=2.4.0,<2.5.0" + +[[package]] +name = "gitdb" +version = "4.0.9" +description = "Git Object Database" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.27" +description = "GitPython is a python library used to interact with Git repositories" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +gitdb = ">=4.0.1,<5" [[package]] name = "graphene" @@ -370,8 +424,8 @@ graphql-core = ">=3.1.2,<3.2.0" graphql-relay = ">=3.0,<4" [package.extras] -dev = ["black (19.10b0)", "flake8 (>=3.7,<4)", "pytest (>=5.3,<6)", "pytest-benchmark (>=3.2,<4)", "pytest-cov (>=2.8,<3)", "pytest-mock (>=2,<3)", "pytest-asyncio (>=0.10,<2)", "snapshottest (>=0.5,<1)", "coveralls (>=1.11,<2)", "promise (>=2.3,<3)", "mock (>=4.0,<5)", "pytz (2021.1)", "iso8601 (>=0.1,<2)"] -test = ["pytest (>=5.3,<6)", "pytest-benchmark (>=3.2,<4)", "pytest-cov (>=2.8,<3)", "pytest-mock (>=2,<3)", "pytest-asyncio (>=0.10,<2)", "snapshottest (>=0.5,<1)", "coveralls (>=1.11,<2)", "promise (>=2.3,<3)", "mock (>=4.0,<5)", "pytz (2021.1)", "iso8601 (>=0.1,<2)"] +dev = ["black (==19.10b0)", "flake8 (>=3.7,<4)", "pytest (>=5.3,<6)", "pytest-benchmark (>=3.2,<4)", "pytest-cov (>=2.8,<3)", "pytest-mock (>=2,<3)", "pytest-asyncio (>=0.10,<2)", "snapshottest (>=0.5,<1)", "coveralls (>=1.11,<2)", "promise (>=2.3,<3)", "mock (>=4.0,<5)", "pytz (==2021.1)", "iso8601 (>=0.1,<2)"] +test = ["pytest (>=5.3,<6)", "pytest-benchmark (>=3.2,<4)", "pytest-cov (>=2.8,<3)", "pytest-mock (>=2,<3)", "pytest-asyncio (>=0.10,<2)", "snapshottest (>=0.5,<1)", "coveralls (>=1.11,<2)", "promise (>=2.3,<3)", "mock (>=4.0,<5)", "pytz (==2021.1)", "iso8601 (>=0.1,<2)"] [[package]] name = "graphql-core" @@ -450,7 +504,7 @@ optional = false python-versions = "*" [package.extras] -test = ["Cython (0.29.22)"] +test = ["Cython (==0.29.22)"] [[package]] name = "httpx" @@ -545,7 +599,7 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] -MarkupSafe = ">=0.23, <=2.0.1" +MarkupSafe = ">=0.23" [package.extras] i18n = ["Babel (>=0.8)"] @@ -614,8 +668,8 @@ stevedore = ">=1.20.0" betamax = ["betamax (>=0.7.0)", "fixtures (>=3.0.0)", "mock (>=2.0.0)"] kerberos = ["requests-kerberos (>=0.8.0)"] oauth1 = ["oauthlib (>=0.6.2)"] -saml2 = ["lxml (>=3.4.1,<3.7.0 || >3.7.0)"] -test = ["PyYAML (>=3.12)", "bandit (>=1.1.0,<1.6.0)", "betamax (>=0.7.0)", "coverage (>=4.0,<4.4 || >4.4)", "fixtures (>=3.0.0)", "flake8-docstrings (0.2.1.post1)", "flake8-import-order (>=0.17.1)", "hacking (>=0.12.0,<0.13.0 || >0.13.0,<0.14)", "lxml (>=3.4.1,<3.7.0 || >3.7.0)", "mock (>=2.0.0)", "oauthlib (>=0.6.2)", "openstackdocstheme (>=1.18.1)", "oslo.config (>=5.2.0)", "oslo.utils (>=3.33.0)", "oslotest (>=3.2.0)", "reno (>=2.5.0)", "requests-kerberos (>=0.8.0)", "requests-mock (>=1.2.0)", "stestr (>=1.0.0)", "testresources (>=2.0.0)", "testtools (>=2.2.0)"] +saml2 = ["lxml (>=3.4.1,!=3.7.0)"] +test = ["PyYAML (>=3.12)", "bandit (>=1.1.0,<1.6.0)", "betamax (>=0.7.0)", "coverage (>=4.0,!=4.4)", "fixtures (>=3.0.0)", "flake8-docstrings (==0.2.1.post1)", "flake8-import-order (>=0.17.1)", "hacking (>=0.12.0,!=0.13.0,<0.14)", "lxml (>=3.4.1,!=3.7.0)", "mock (>=2.0.0)", "oauthlib (>=0.6.2)", "openstackdocstheme (>=1.18.1)", "oslo.config (>=5.2.0)", "oslo.utils (>=3.33.0)", "oslotest (>=3.2.0)", "reno (>=2.5.0)", "requests-kerberos (>=0.8.0)", "requests-mock (>=1.2.0)", "stestr (>=1.0.0)", "testresources (>=2.0.0)", "testtools (>=2.2.0)"] [[package]] name = "loguru" @@ -655,6 +709,14 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "mccabe" +version = "0.6.1" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "msgpack" version = "1.0.3" @@ -801,8 +863,8 @@ rfc3986 = ">=1.2.0" stevedore = ">=1.20.0" [package.extras] -rst_generator = ["rst2txt (>=1.1.0)", "sphinx (>=1.8.0,<2.1.0 || >2.1.0)"] -test = ["bandit (>=1.6.0,<1.7.0)", "coverage (>=4.0,<4.4 || >4.4)", "fixtures (>=3.0.0)", "hacking (>=3.0.1,<3.1.0)", "mypy (>=0.720)", "oslo.log (>=3.36.0)", "oslotest (>=3.2.0)", "pre-commit (>=2.6.0)", "requests-mock (>=1.5.0)", "stestr (>=2.1.0)", "testscenarios (>=0.4)", "testtools (>=2.2.0)"] +rst_generator = ["rst2txt (>=1.1.0)", "sphinx (>=1.8.0,!=2.1.0)"] +test = ["bandit (>=1.6.0,<1.7.0)", "coverage (>=4.0,!=4.4)", "fixtures (>=3.0.0)", "hacking (>=3.0.1,<3.1.0)", "mypy (>=0.720)", "oslo.log (>=3.36.0)", "oslotest (>=3.2.0)", "pre-commit (>=2.6.0)", "requests-mock (>=1.5.0)", "stestr (>=2.1.0)", "testscenarios (>=0.4)", "testtools (>=2.2.0)"] [[package]] name = "oslo.context" @@ -951,6 +1013,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "pycodestyle" +version = "2.8.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + [[package]] name = "pycparser" version = "2.21" @@ -974,6 +1044,14 @@ typing-extensions = ">=3.7.4.3" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "pyflakes" +version = "2.4.0" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pyinotify" version = "0.9.6" @@ -1284,7 +1362,7 @@ six = ">=1.9.0" [package.extras] keystone = ["python-keystoneclient (>=0.7.0)"] -test = ["coverage (>=4.0,<4.4 || >4.4)", "keystoneauth1 (>=3.4.0)", "mock (>=1.2.0)", "openstacksdk (>=0.11.0)", "stestr (>=2.0.0,<3.0.0 || >3.0.0)", "hacking (>=1.1.0,<1.2.0)", "hacking (>=3.2.0,<3.3.0)"] +test = ["coverage (>=4.0,!=4.4)", "keystoneauth1 (>=3.4.0)", "mock (>=1.2.0)", "openstacksdk (>=0.11.0)", "stestr (>=2.0.0,!=3.0.0)", "hacking (>=1.1.0,<1.2.0)", "hacking (>=3.2.0,<3.3.0)"] [[package]] name = "pytz" @@ -1317,7 +1395,7 @@ idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] @@ -1501,6 +1579,14 @@ Werkzeug = "*" type = "directory" url = "libs/skyline-policy-manager" +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "sniffio" version = "1.2.0" @@ -1578,7 +1664,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] 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 || >1.5.7,<2.0)"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "uvicorn" @@ -1697,7 +1783,7 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytes [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "72d4a6b3e41f23d08856517b7159e73f88b30eb1d5f0887d3aaf9ec04241b3a9" +content-hash = "cfb8ec5b6e66491cbcb3fce259bed6dfaa1e31b596e5bf22ef5547344ee835a2" [metadata.files] aiofiles = [ @@ -1744,11 +1830,18 @@ babel = [ {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"}, {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, ] +bandit = [ + {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, + {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, +] bcrypt = [ + {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b589229207630484aefe5899122fb938a5b017b0f4349f769b8c13e78d99a8fd"}, {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6"}, {file = "bcrypt-3.2.0-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7"}, {file = "bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1"}, {file = "bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d"}, + {file = "bcrypt-3.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a0584a92329210fcd75eb8a3250c5a941633f8bfaf2a18f81009b097732839b7"}, + {file = "bcrypt-3.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:56e5da069a76470679f312a7d3d23deb3ac4519991a0361abc11da837087b61d"}, {file = "bcrypt-3.2.0-cp36-abi3-win32.whl", hash = "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55"}, {file = "bcrypt-3.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34"}, {file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"}, @@ -1883,6 +1976,18 @@ fastapi = [ {file = "fastapi-0.58.1-py3-none-any.whl", hash = "sha256:d7499761d5ca901cdf5b6b73018d14729593f8ab1ea22d241f82fa574fc406ad"}, {file = "fastapi-0.58.1.tar.gz", hash = "sha256:92e59b77eef7d6eaa80b16d275adda06b5f33b12d777e3fc5521b2f7f4718e13"}, ] +flake8 = [ + {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, + {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, +] +gitdb = [ + {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, + {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, +] +gitpython = [ + {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, + {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, +] graphene = [ {file = "graphene-3.0-py2.py3-none-any.whl", hash = "sha256:57ce5ee7c9dc194224a1df96e4f7cb48d31eae96c791091d059f8f3d4d131390"}, {file = "graphene-3.0.tar.gz", hash = "sha256:af48066e152200a071aac1e0b703954c717ec7268720ba190a0c91d9bcb0a122"}, @@ -2019,6 +2124,9 @@ markupsafe = [ {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"}, @@ -2030,6 +2138,9 @@ markupsafe = [ {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"}, @@ -2041,6 +2152,9 @@ markupsafe = [ {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"}, @@ -2053,6 +2167,9 @@ markupsafe = [ {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"}, @@ -2065,10 +2182,17 @@ markupsafe = [ {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"}, ] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] msgpack = [ {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079"}, {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3"}, @@ -2251,6 +2375,10 @@ pyasn1 = [ {file = "pyasn1-0.4.8-py3.7.egg", hash = "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776"}, {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, ] +pycodestyle = [ + {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, + {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, +] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, @@ -2279,6 +2407,10 @@ pydantic = [ {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"}, {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"}, ] +pyflakes = [ + {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, + {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, +] pyinotify = [ {file = "pyinotify-0.9.6.tar.gz", hash = "sha256:9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"}, ] @@ -2505,6 +2637,10 @@ skyline-console = [ skyline-log = [] skyline-nginx = [] skyline-policy-manager = [] +smmap = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] sniffio = [ {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, diff --git a/pyproject.toml b/pyproject.toml index 5edef7e..39ab836 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,9 @@ skyline-log = {path = "libs/skyline-log", develop = true} skyline-policy-manager = {path = "libs/skyline-policy-manager", develop = true} skyline-apiserver = {path = "libs/skyline-apiserver", develop = true} skyline-nginx = {path = "libs/skyline-nginx", develop = true} +flake8 = "^4.0.1" +pycodestyle = "^2.8.0" +bandit = "^1.7.4" [tool.black] line-length = 98