[tool.poetry] name = "mdb-python-deps" version = "1.0.0" description = "MongoDB python dependencies" authors = ["MongoDB"] readme = "README.md" # These packages are included as a TODO if we want to run resmoke with pex # Currently this does nothing packages = [ { include = "buildscripts/resmoke.py" }, { include = "buildscripts/mongosymb.py" }, { include = "buildscripts/build_system_options.py" }, { include = "buildscripts/resmokelib" }, { include = "buildscripts/idl" }, { include = "buildscripts/util" }, ] [tool.poetry.dependencies] python = ">=3.10,<4.0" # OPTIONAL # Libdeps depdencies networkx = "*" # This is also used as a part of build_metrics so it is sort of required flask = { version = "*", optional = true } flask-cors = { version = "*", optional = true } lxml = { version = "*", optional = true } eventlet = { version = "*", optional = true } gevent = { version = "*", optional = true } progressbar2 = { version = "*", optional = true } cxxfilt = { version = "*", optional = true } pympler = { version = "*", optional = true } [tool.poetry.group.aws.dependencies] boto3 = "^1.20.26" botocore = "^1.23.26" [tool.poetry.group.build-metrics.dependencies] jsonschema = "^4.17.3" psutil = "^5.8.0" memory-profiler = "^0.61.0" puremagic = "^1.15" tabulate = "^0.9.0" [tool.poetry.group.compile.dependencies] cheetah3 = "<=3.2.6.post1" # src/mongo/base/generate_error_codes.py packaging = "<=21.3" regex = "<=2021.11.10" setuptools = "58.1.0" [tool.poetry.group.core.dependencies] psutil = "5.8.0" pymongo = "4.3.3" PyYAML = "5.3.1" types-PyYAML = "~6.0.12.10" requests = "^2.26.0" typing-extensions = "^4.7.1" [tool.poetry.group.export.dependencies] pipx = "1.4.3" # TODO: Add in pex as we move forward with this # pex = "^2.1.137" poetry = "1.5.1" [tool.poetry.group.evergreen.dependencies] click = "^8.1.7" inject = "^5" GitPython = "^3.1.7" pydantic = "*" structlog = "^23.1.0" [tool.poetry.group.external-auth.dependencies] # These are the dependencies of ldaptor passlib = "1.7.4" pyOpenSSL = [ { version = "19.0.0", markers = "platform_machine == 's390x' or platform_machine == 'ppc64le'" }, # Needed for pinned cryptography package - see SERVER-70845 { version = "22.0.0", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" }, ] pyparsing = "2.4.0" service_identity = "18.1.0" twisted = "24.3.0" 'zope.interface' = "5.0.0" ldaptor = "19.0.0" [tool.poetry.group.idl.dependencies] unittest-xml-reporting = "3.0.4" # Pinned because newer versions require lxml which fails to install packaging = "21.3" [tool.poetry.group.jira-client.dependencies] jira = "<=3.1.1" requests-oauth = "<=0.4.1" PyJWT = "<=2.3.0" # https://github.com/pycontribs/jira/issues/247 # We are omitting pycrypto based on https://github.com/pycontribs/jira/pull/629 [tool.poetry.group.lint.dependencies] # Note: These versions are checked by python modules in buildscripts/linter/ GitPython = "~3.1.7" mypy = "~1.3.0" pydocstyle = "6.3.0" pylint = "2.17.4" structlog = "~23.1.0" yamllint = "1.32.0" yapf = "0.26.0" # latest is 0.40.1, but that causes CI failures types-setuptools = "57.4.12" # latest is 68.0.0.0, but that causes pip install requirements to fail types-requests = "2.31.0.1" tqdm = "*" colorama = "^0.4.6" evergreen-lint = "^0.1.7" ruff = "^0.4.4" [tool.poetry.group.platform.dependencies] pypiwin32 = { version = ">=223", markers = "sys_platform == 'win32'" } pywin32 = { version = ">=225", markers = "sys_platform == 'win32'" } cryptography = [ { version = "2.3", markers = "platform_machine == 's390x' or platform_machine == 'ppc64le'" }, # Needed for oauthlib to use RSAAlgorithm # Version locked - see SERVER-36618 { version = "36.0.2", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" }, ] mongo-ninja-python = [ { version = "1.11.1.7", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" }, ] ninja = [ { version = ">=1.10.0", markers = "platform_machine == 's390x' or platform_machine == 'ppc64le'" }, ] [tool.poetry.group.testing.dependencies] curatorbin = "1.2.3" PyKMIP = "0.10.0" evergreen-py = "^3.6.26" jinja2 = "^3" mock = "^5" shrub-py = "1.1.4" ocspresponder = "^0.5.0" flask = "^2" ocspbuilder = "^0.10.2" # Werkzeug is needed for ocsp tests in ocsp_mock.py # version 3+ fails with "ImportError: cannot import name 'url_quote' from 'werkzeug.urls'" Werkzeug = "<=2.3.7" PyGithub = "^1.53" urllib3 = "^1.26.7" distro = "1.5.0" dnspython = "^2.1.0" proxy-protocol = "^0.7.5" pkce = "^1.0.3" oauthlib = "^3.1.1" requests-oauthlib = "^1.3.0" packaging = "21.3" docker = "^6.1.2" mongomock = "^4.1.2" pyjwt = "<=2.3.0" selenium = "^4.9.1" geckodriver-autoinstaller = "^0.1.0" retry = "^0.9.2" gdbmongo = "^0.14.0" googleapis-common-protos = "^1.61.0" opentelemetry-api = "*" opentelemetry-sdk = "*" opentelemetry-exporter-otlp-proto-common = "*" [tool.poetry.group.tooling-metrics.dependencies] mongo-tooling-metrics = "1.0.8" # This can be installed with "poetry install -E libdeps" [tool.poetry.extras] libdeps = [ "flask", "flask-cors", "lxml", "eventlet", "gevent", "progressbar2", "cxxfilt", "pympler", ] # This entrypoint is included as a TODO if we want to run resmoke with pex # Currently this does nothing [tool.poetry.scripts] resmoke = "buildscripts.resmoke:entrypoint" [tool.ruff] extend-exclude = [ "site_scons/third_party", "src/third_party", ] extend-include = [ "SConstruct", "*/SConscript" ] line-length = 100 target-version = "py310" [tool.ruff.lint] ignore = [ "E402", # module-import-not-at-top-of-file "E703", # useless-semicolon "E711", # none-comparison "E712", # true-false-comparison "E713", # not-in-test "E714", # not-is-test "E721", # type-comparison "E722", # bare-except "E731", # lambda-assignment "E741", # ambiguous-variable-name "F401", # unused-import "F402", # import-shadowed-by-loop-var "F403", # undefined-local-with-import-star "F405", # undefined-local-with-import-star-usage "F541", # f-string-missing-placeholders "F811", # redefined-while-unused "F821", # undefined-name "F822", # undefined-export "F841", # unused-variable ] [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"