diff --git a/poetry.lock b/poetry.lock index 43c74ceb..70db8d73 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry and should not be changed by hand. [[package]] name = "about-time" version = "4.2.1" description = "Easily measure timing and throughput of code blocks, with beautiful human friendly representations." +category = "main" optional = false python-versions = ">=3.7, <4" files = [ @@ -15,6 +16,7 @@ files = [ name = "alive-progress" version = "3.1.4" description = "A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!" +category = "main" optional = false python-versions = ">=3.7, <4" files = [ @@ -30,6 +32,7 @@ grapheme = "0.6.0" name = "astroid" version = "2.15.4" description = "An abstract syntax tree for Python with inference support." +category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -49,6 +52,7 @@ wrapt = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -67,6 +71,7 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "awsipranges" version = "0.3.3" description = "Work with the AWS IP address ranges in native Python." +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -78,6 +83,7 @@ files = [ name = "azure-common" version = "1.1.28" description = "Microsoft Azure Client Library for Python (Common)" +category = "main" optional = false python-versions = "*" files = [ @@ -89,6 +95,7 @@ files = [ name = "azure-core" version = "1.26.4" description = "Microsoft Azure Core Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -108,6 +115,7 @@ aio = ["aiohttp (>=3.0)"] name = "azure-identity" version = "1.13.0" description = "Microsoft Azure Identity Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -126,6 +134,7 @@ six = ">=1.12.0" name = "azure-mgmt-authorization" version = "3.0.0" description = "Microsoft Azure Authorization Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -142,6 +151,7 @@ msrest = ">=0.7.1" name = "azure-mgmt-core" version = "1.4.0" description = "Microsoft Azure Management Core Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -156,6 +166,7 @@ azure-core = ">=1.26.2,<2.0.0" name = "azure-mgmt-security" version = "5.0.0" description = "Microsoft Azure Security Center Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -172,6 +183,7 @@ isodate = ">=0.6.1,<1.0.0" name = "azure-mgmt-storage" version = "21.0.0" description = "Microsoft Azure Storage Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -188,6 +200,7 @@ msrest = ">=0.7.1" name = "azure-mgmt-subscription" version = "3.1.1" description = "Microsoft Azure Subscription Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -204,6 +217,7 @@ msrest = ">=0.7.1" name = "azure-storage-blob" version = "12.16.0" description = "Microsoft Azure Blob Storage Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -224,6 +238,7 @@ aio = ["azure-core[aio] (>=1.26.0,<2.0.0)"] name = "bandit" version = "1.7.5" description = "Security oriented static analyser for python code." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -247,6 +262,7 @@ yaml = ["PyYAML"] name = "black" version = "22.12.0" description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -280,17 +296,18 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "boto3" -version = "1.26.161" +version = "1.26.165" description = "The AWS SDK for Python" +category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "boto3-1.26.161-py3-none-any.whl", hash = "sha256:f66e5c9dbe7f34383bcf64fa6070771355c11a44dd75c7f1279f2f37e1c89183"}, - {file = "boto3-1.26.161.tar.gz", hash = "sha256:662731e464d14af1035f44fc6a46b0e3112ee011ac0a5ed416d205daa3e15f25"}, + {file = "boto3-1.26.165-py3-none-any.whl", hash = "sha256:fa85b67147c8dc99b6e7c699fc086103f958f9677db934f70659e6e6a72a818c"}, + {file = "boto3-1.26.165.tar.gz", hash = "sha256:9e7242b9059d937f34264125fecd844cb5e01acce6be093f6c44869fdf7c6e30"}, ] [package.dependencies] -botocore = ">=1.29.161,<1.30.0" +botocore = ">=1.29.165,<1.30.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -301,6 +318,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] name = "botocore" version = "1.29.165" description = "Low-level, data-driven core of boto 3." +category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -320,6 +338,7 @@ crt = ["awscrt (==0.16.9)"] name = "cachetools" version = "5.3.0" description = "Extensible memoizing collections and decorators" +category = "main" optional = false python-versions = "~=3.7" files = [ @@ -331,6 +350,7 @@ files = [ name = "certifi" version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -342,6 +362,7 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" files = [ @@ -418,6 +439,7 @@ pycparser = "*" name = "charset-normalizer" 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 = ">=3.7.0" files = [ @@ -502,6 +524,7 @@ files = [ name = "click" version = "8.1.3" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -516,6 +539,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "click-plugins" version = "1.1.1" description = "An extension module for click to enable registering CLI commands via setuptools entry-points." +category = "main" optional = false python-versions = "*" files = [ @@ -533,6 +557,7 @@ dev = ["coveralls", "pytest (>=3.6)", "pytest-cov", "wheel"] 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 = [ @@ -544,6 +569,7 @@ files = [ name = "contextlib2" version = "21.6.0" description = "Backports and enhancements for the contextlib module" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -555,6 +581,7 @@ files = [ name = "coverage" version = "7.2.7" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -627,6 +654,7 @@ toml = ["tomli"] name = "cryptography" version = "41.0.0" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -668,6 +696,7 @@ test-randomorder = ["pytest-randomly"] name = "detect-secrets" version = "1.4.0" description = "Tool for detecting secrets in the codebase" +category = "main" optional = false python-versions = "*" files = [ @@ -687,6 +716,7 @@ word-list = ["pyahocorasick"] name = "dill" version = "0.3.6" description = "serialize all of python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -701,6 +731,7 @@ graph = ["objgraph (>=1.7.2)"] name = "docker" version = "6.1.3" description = "A Python library for the Docker Engine API." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -722,6 +753,7 @@ ssh = ["paramiko (>=2.4.3)"] name = "dparse" version = "0.6.2" description = "A parser for Python dependency files" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -741,6 +773,7 @@ pipenv = ["pipenv"] name = "exceptiongroup" version = "1.1.1" description = "Backport of PEP 654 (exception groups)" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -755,6 +788,7 @@ test = ["pytest (>=6)"] name = "execnet" version = "1.9.0" description = "execnet: rapid multi-Python deployment" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -769,6 +803,7 @@ testing = ["pre-commit"] 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" files = [ @@ -785,6 +820,7 @@ pyflakes = ">=3.0.0,<3.1.0" name = "freezegun" version = "1.2.2" description = "Let your Python tests travel through time" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -799,6 +835,7 @@ python-dateutil = ">=2.7" name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." +category = "main" optional = true python-versions = "*" files = [ @@ -816,6 +853,7 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "gitdb" version = "4.0.10" description = "Git Object Database" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -830,6 +868,7 @@ smmap = ">=3.0.1,<6" name = "gitpython" version = "3.1.31" description = "GitPython is a Python library used to interact with Git repositories" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -844,6 +883,7 @@ gitdb = ">=4.0.1,<5" name = "google-api-core" version = "2.11.0" description = "Google API client core library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -866,6 +906,7 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] name = "google-api-python-client" version = "2.91.0" description = "Google API Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -874,7 +915,7 @@ files = [ ] [package.dependencies] -google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0.dev0" +google-api-core = ">=1.31.5,<2.0.0 || >2.3.0,<3.0.0.dev0" google-auth = ">=1.19.0,<3.0.0.dev0" google-auth-httplib2 = ">=0.1.0" httplib2 = ">=0.15.0,<1.dev0" @@ -884,6 +925,7 @@ uritemplate = ">=3.0.1,<5" name = "google-auth" version = "2.17.3" description = "Google Authentication Library" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" files = [ @@ -908,6 +950,7 @@ requests = ["requests (>=2.20.0,<3.0.0dev)"] name = "google-auth-httplib2" version = "0.1.0" description = "Google Authentication Library: httplib2 transport" +category = "main" optional = false python-versions = "*" files = [ @@ -924,6 +967,7 @@ six = "*" name = "googleapis-common-protos" version = "1.59.0" description = "Common protobufs used in Google APIs" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -941,6 +985,7 @@ grpc = ["grpcio (>=1.44.0,<2.0.0dev)"] name = "grapheme" version = "0.6.0" description = "Unicode grapheme helpers" +category = "main" optional = false python-versions = "*" files = [ @@ -954,6 +999,7 @@ test = ["pytest", "sphinx", "sphinx-autobuild", "twine", "wheel"] name = "httplib2" version = "0.22.0" description = "A comprehensive HTTP client library." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -968,6 +1014,7 @@ pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0 name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -979,6 +1026,7 @@ files = [ name = "importlib-metadata" version = "6.6.0" description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -998,6 +1046,7 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1009,6 +1058,7 @@ files = [ name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" +category = "main" optional = false python-versions = "*" files = [ @@ -1023,6 +1073,7 @@ six = "*" 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 = [ @@ -1040,6 +1091,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1057,6 +1109,7 @@ i18n = ["Babel (>=2.7)"] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1068,6 +1121,7 @@ files = [ name = "jsonschema" version = "4.17.3" description = "An implementation of JSON Schema validation for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1087,6 +1141,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsonschema-spec" version = "0.1.4" description = "JSONSchema Spec with object-oriented paths" +category = "dev" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ @@ -1104,6 +1159,7 @@ typing-extensions = ">=4.3.0,<5.0.0" 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 = [ @@ -1149,6 +1205,7 @@ files = [ name = "markdown" version = "3.3.7" description = "Python implementation of Markdown." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1166,6 +1223,7 @@ testing = ["coverage", "pyyaml"] name = "markdown-it-py" version = "2.2.0" description = "Python port of markdown-it. Markdown parsing, done right!" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1190,6 +1248,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1249,6 +1308,7 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1260,6 +1320,7 @@ files = [ name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1271,6 +1332,7 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1282,6 +1344,7 @@ files = [ name = "mkdocs" version = "1.4.3" description = "Project documentation with Markdown." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1310,6 +1373,7 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp name = "mkdocs-material" version = "9.1.18" description = "Documentation that simply works" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1332,6 +1396,7 @@ requests = ">=2.26" name = "mkdocs-material-extensions" version = "1.1.1" description = "Extension pack for Python Markdown and MkDocs Material." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1343,6 +1408,7 @@ files = [ name = "mock" version = "5.0.2" description = "Rolling backport of unittest.mock for all Pythons" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1359,6 +1425,7 @@ test = ["pytest", "pytest-cov"] name = "moto" version = "4.1.12" description = "" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1405,6 +1472,7 @@ xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"] name = "msal" version = "1.22.0" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." +category = "main" optional = false python-versions = "*" files = [ @@ -1424,6 +1492,7 @@ broker = ["pymsalruntime (>=0.13.2,<0.14)"] name = "msal-extensions" version = "1.0.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." +category = "main" optional = false python-versions = "*" files = [ @@ -1442,6 +1511,7 @@ portalocker = [ name = "msgraph-core" version = "0.2.2" description = "Core component of the Microsoft Graph Python SDK consisting of HTTP/Graph Client and a configurable middleware pipeline (Preview)." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1453,6 +1523,7 @@ files = [ name = "msrest" version = "0.7.1" description = "AutoRest swagger generator Python client runtime." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1474,6 +1545,7 @@ async = ["aiodns", "aiohttp (>=3.0)"] 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 = [ @@ -1485,6 +1557,7 @@ files = [ name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1501,6 +1574,7 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "openapi-schema-validator" version = "0.4.4" description = "OpenAPI schema validation for Python" +category = "dev" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ @@ -1519,6 +1593,7 @@ docs = ["sphinx (>=5.3.0,<6.0.0)", "sphinx-immaterial (>=0.11.0,<0.12.0)"] name = "openapi-spec-validator" version = "0.5.7" description = "OpenAPI 2.0 (aka Swagger) and OpenAPI 3 spec validator" +category = "dev" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ @@ -1536,6 +1611,7 @@ openapi-schema-validator = ">=0.4.2,<0.5.0" name = "packaging" version = "21.3" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1550,6 +1626,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" name = "pathable" version = "0.4.3" description = "Object-oriented paths" +category = "dev" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ @@ -1561,6 +1638,7 @@ files = [ 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 = [ @@ -1572,6 +1650,7 @@ files = [ name = "pbr" version = "5.11.1" description = "Python Build Reasonableness" +category = "dev" optional = false python-versions = ">=2.6" files = [ @@ -1583,6 +1662,7 @@ files = [ name = "platformdirs" version = "3.5.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 = [ @@ -1598,6 +1678,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1613,6 +1694,7 @@ testing = ["pytest", "pytest-benchmark"] name = "portalocker" version = "2.7.0" description = "Wraps the portalocker recipe for easy usage" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1632,6 +1714,7 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p name = "protobuf" version = "4.23.0" description = "" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1654,6 +1737,7 @@ files = [ name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1665,6 +1749,7 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1679,6 +1764,7 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pycodestyle" version = "2.10.0" description = "Python style guide checker" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1690,6 +1776,7 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1701,6 +1788,7 @@ files = [ name = "pydantic" version = "1.10.9" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1753,6 +1841,7 @@ email = ["email-validator (>=1.0.3)"] name = "pyflakes" version = "3.0.1" description = "passive checker of Python programs" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1764,6 +1853,7 @@ files = [ name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1778,6 +1868,7 @@ plugins = ["importlib-metadata"] name = "pyjwt" version = "2.6.0" description = "JSON Web Token implementation in Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1798,6 +1889,7 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] name = "pylint" version = "2.17.4" description = "python code static checker" +category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -1827,6 +1919,7 @@ testutils = ["gitpython (>3)"] name = "pymdown-extensions" version = "10.0" description = "Extension pack for Python Markdown." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1842,6 +1935,7 @@ pyyaml = "*" name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -1856,6 +1950,7 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyrsistent" version = "0.19.3" description = "Persistent/Functional/Immutable data structures" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1892,6 +1987,7 @@ files = [ name = "pytest" version = "7.4.0" description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1914,6 +2010,7 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-randomly" version = "3.13.0" description = "Pytest plugin to randomly order tests and control random.seed." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1929,6 +2026,7 @@ pytest = "*" name = "pytest-xdist" version = "3.3.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1949,6 +2047,7 @@ testing = ["filelock"] 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" files = [ @@ -1963,6 +2062,7 @@ six = ">=1.5" name = "pywin32" version = "306" description = "Python for Window Extensions" +category = "dev" optional = false python-versions = "*" files = [ @@ -1986,6 +2086,7 @@ files = [ name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2035,6 +2136,7 @@ files = [ name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2049,6 +2151,7 @@ pyyaml = "*" name = "regex" version = "2023.5.5" description = "Alternative regular expression module, to replace re." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2146,6 +2249,7 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2167,6 +2271,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2185,6 +2290,7 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "responses" version = "0.23.1" description = "A utility library for mocking out the `requests` Python library." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2205,6 +2311,7 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asy name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2219,6 +2326,7 @@ six = "*" name = "rich" version = "13.3.5" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -2237,6 +2345,7 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" +category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -2251,6 +2360,7 @@ pyasn1 = ">=0.1.3" name = "ruamel-yaml" version = "0.17.24" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "dev" optional = false python-versions = ">=3" files = [ @@ -2269,6 +2379,7 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel-yaml-clib" version = "0.2.7" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2315,6 +2426,7 @@ files = [ name = "s3transfer" version = "0.6.1" description = "An Amazon S3 Transfer Manager" +category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -2332,6 +2444,7 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] name = "safety" version = "2.3.5" description = "Checks installed dependencies for known vulnerabilities and licenses." +category = "dev" optional = false python-versions = "*" files = [ @@ -2355,6 +2468,7 @@ gitlab = ["python-gitlab (>=1.3.0)"] name = "schema" version = "0.7.5" description = "Simple data validation library" +category = "main" optional = false python-versions = "*" files = [ @@ -2369,6 +2483,7 @@ contextlib2 = ">=0.5.5" name = "setuptools" version = "67.7.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2385,6 +2500,7 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "shodan" version = "1.29.1" description = "Python library and command-line utility for Shodan (https://developer.shodan.io)" +category = "main" optional = false python-versions = "*" files = [ @@ -2402,6 +2518,7 @@ XlsxWriter = "*" 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.*" files = [ @@ -2413,6 +2530,7 @@ files = [ name = "slack-sdk" version = "3.21.3" description = "The Slack API Platform SDK for Python" +category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -2428,6 +2546,7 @@ testing = ["Flask (>=1,<2)", "Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "We 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" files = [ @@ -2439,6 +2558,7 @@ files = [ name = "stevedore" version = "5.0.0" description = "Manage dynamic plugins for Python applications" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2453,6 +2573,7 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0" name = "sure" version = "2.0.1" description = "utility belt for automated testing in python for python" +category = "dev" optional = false python-versions = "*" files = [ @@ -2467,6 +2588,7 @@ six = "*" name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2481,6 +2603,7 @@ widechars = ["wcwidth"] 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.*" files = [ @@ -2492,6 +2615,7 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2503,6 +2627,7 @@ files = [ name = "tomlkit" version = "0.11.8" description = "Style preserving TOML library" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2514,6 +2639,7 @@ files = [ name = "types-pyyaml" version = "6.0.12.9" description = "Typing stubs for PyYAML" +category = "dev" optional = false python-versions = "*" files = [ @@ -2525,6 +2651,7 @@ files = [ name = "typing-extensions" version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2536,6 +2663,7 @@ files = [ name = "uritemplate" version = "4.1.1" description = "Implementation of RFC 6570 URI Templates" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2547,6 +2675,7 @@ files = [ 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 = [ @@ -2563,6 +2692,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "vulture" version = "2.7" description = "Find dead code" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2577,6 +2707,7 @@ toml = "*" name = "watchdog" version = "3.0.0" description = "Filesystem events monitoring" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2616,6 +2747,7 @@ watchmedo = ["PyYAML (>=3.10)"] name = "websocket-client" version = "1.5.1" description = "WebSocket client for Python with low level API options" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2632,6 +2764,7 @@ test = ["websockets"] name = "werkzeug" version = "2.3.4" description = "The comprehensive WSGI web application library." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2649,6 +2782,7 @@ 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 = [ @@ -2733,6 +2867,7 @@ files = [ name = "xlsxwriter" version = "3.1.0" description = "A Python module for creating Excel XLSX files." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2744,6 +2879,7 @@ files = [ name = "xmltodict" version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" +category = "dev" optional = false python-versions = ">=3.4" files = [ @@ -2755,6 +2891,7 @@ files = [ name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2772,4 +2909,4 @@ docs = ["mkdocs", "mkdocs-material"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "70f4f6d7f82d83ef5d41929c4b83d1e1cab1ecfbf2b670485d85a8d4c9e7ef71" +content-hash = "8a87c4e416a8f5143de4fb3d9f3ebfbe8d21ade819197662a1723d3933a66612" diff --git a/prowler/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level.py b/prowler/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level.py index 06996302..2a038fad 100644 --- a/prowler/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level.py +++ b/prowler/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level.py @@ -30,6 +30,7 @@ class iam_no_service_roles_at_project_level(Check): report.resource_id = project report.resource_name = "" report.status = "PASS" + report.location = cloudresourcemanager_client.region report.status_extended = f"No IAM Users assigned to service roles at project level {project}." findings.append(report) return findings diff --git a/pyproject.toml b/pyproject.toml index bff002b9..ade4b126 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ azure-mgmt-security = "5.0.0" azure-mgmt-storage = "21.0.0" azure-mgmt-subscription = "3.1.1" azure-storage-blob = "12.16.0" -boto3 = "1.26.161" +boto3 = "1.26.165" botocore = "1.29.165" colorama = "0.4.6" detect-secrets = "1.4.0" diff --git a/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py b/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py index 928db07d..21518e6e 100644 --- a/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py +++ b/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py @@ -9,8 +9,12 @@ class Test_iam_no_service_roles_at_project_level: cloudresourcemanager_client = mock.MagicMock cloudresourcemanager_client.bindings = [] cloudresourcemanager_client.project_ids = [GCP_PROJECT_ID] + cloudresourcemanager_client.region = "global" with mock.patch( + "prowler.providers.gcp.services.cloudresourcemanager.cloudresourcemanager_service.CloudResourceManager", + new=cloudresourcemanager_client, + ), mock.patch( "prowler.providers.gcp.services.iam.iam_no_service_roles_at_project_level.iam_no_service_roles_at_project_level.cloudresourcemanager_client", new=cloudresourcemanager_client, ): @@ -52,8 +56,12 @@ class Test_iam_no_service_roles_at_project_level: cloudresourcemanager_client = mock.MagicMock cloudresourcemanager_client.project_ids = [GCP_PROJECT_ID] cloudresourcemanager_client.bindings = [binding1, binding2, binding3] + cloudresourcemanager_client.region = "global" with mock.patch( + "prowler.providers.gcp.services.cloudresourcemanager.cloudresourcemanager_service.CloudResourceManager", + new=cloudresourcemanager_client, + ), mock.patch( "prowler.providers.gcp.services.iam.iam_no_service_roles_at_project_level.iam_no_service_roles_at_project_level.cloudresourcemanager_client", new=cloudresourcemanager_client, ): @@ -65,13 +73,16 @@ class Test_iam_no_service_roles_at_project_level: result = check.execute() assert len(result) == 1 - for idx, r in enumerate(result): - assert r.status == "PASS" - assert search( - "No IAM Users assigned to service roles at project level", - r.status_extended, - ) - assert r.resource_id == GCP_PROJECT_ID + + assert result[0].status == "PASS" + assert search( + "No IAM Users assigned to service roles at project level", + result[0].status_extended, + ) + assert result[0].resource_id == GCP_PROJECT_ID + assert result[0].resource_name == "" + assert result[0].project_id == GCP_PROJECT_ID + assert result[0].location == cloudresourcemanager_client.region def test_binding_with_service_account_user(self): from prowler.providers.gcp.services.cloudresourcemanager.cloudresourcemanager_service import ( @@ -87,8 +98,12 @@ class Test_iam_no_service_roles_at_project_level: cloudresourcemanager_client = mock.MagicMock cloudresourcemanager_client.project_ids = [GCP_PROJECT_ID] cloudresourcemanager_client.bindings = [binding] + cloudresourcemanager_client.region = "global" with mock.patch( + "prowler.providers.gcp.services.cloudresourcemanager.cloudresourcemanager_service.CloudResourceManager", + new=cloudresourcemanager_client, + ), mock.patch( "prowler.providers.gcp.services.iam.iam_no_service_roles_at_project_level.iam_no_service_roles_at_project_level.cloudresourcemanager_client", new=cloudresourcemanager_client, ): @@ -106,6 +121,9 @@ class Test_iam_no_service_roles_at_project_level: result[0].status_extended, ) assert result[0].resource_id == binding.role + assert result[0].resource_name == binding.role + assert result[0].project_id == GCP_PROJECT_ID + assert result[0].location == cloudresourcemanager_client.region def test_binding_with_service_account_token_creator(self): from prowler.providers.gcp.services.cloudresourcemanager.cloudresourcemanager_service import ( @@ -121,8 +139,12 @@ class Test_iam_no_service_roles_at_project_level: cloudresourcemanager_client = mock.MagicMock cloudresourcemanager_client.project_ids = [GCP_PROJECT_ID] cloudresourcemanager_client.bindings = [binding] + cloudresourcemanager_client.region = "global" with mock.patch( + "prowler.providers.gcp.services.cloudresourcemanager.cloudresourcemanager_service.CloudResourceManager", + new=cloudresourcemanager_client, + ), mock.patch( "prowler.providers.gcp.services.iam.iam_no_service_roles_at_project_level.iam_no_service_roles_at_project_level.cloudresourcemanager_client", new=cloudresourcemanager_client, ): @@ -140,3 +162,6 @@ class Test_iam_no_service_roles_at_project_level: result[0].status_extended, ) assert result[0].resource_id == binding.role + assert result[0].resource_name == binding.role + assert result[0].project_id == GCP_PROJECT_ID + assert result[0].location == cloudresourcemanager_client.region