[project] name = "mdb-python-deps" version = "1.0.0" requires-python = ">=3.13,<4.0" description = "MongoDB python dependencies" authors = [ { name = "MongoDB" } ] package-mode = false 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" }, ] dependencies = [ "networkx", # This is also used as a part of build_metrics so it is sort of required "pyright (==1.1.393)", "flask", "flask-cors", "lxml", "eventlet", "gevent", "progressbar2", "cxxfilt", "pympler", "faker (==37.1.0)", "pymongo (==4.12.0)", ] [tool.poetry.dependencies] python = ">=3.13,<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 = ">=4.0.2", 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 } pyright = "1.1.393" [[tool.poetry.source]] name = "mdb-build-public" url = "https://mdb-build-public.s3.amazonaws.com/rapidyaml_wheels/simple/" priority = "explicit" [tool.poetry.group.aws.dependencies] boto3 = "^1.34.156" botocore = "^1.34.156" [tool.poetry.group.build-metrics.dependencies] jsonschema = "^4.23.0" psutil = "^6.0.0" memory-profiler = "^0.61.0" puremagic = "^1.26" tabulate = "^0.9.0" [tool.poetry.group.compile.dependencies] ct3 = "3.4.0.post5" # Renamed from cheetah3 packaging = "^25.0" regex = "^2024.11.6" setuptools = "^80.9.0" wheel = "0.45.0" [tool.poetry.group.core.dependencies] psutil = "^6.0.0" pymongo = "4.12.0" PyYAML = "^6.0.2" types-PyYAML = "^6.0.12.20240808" requests = "^2.32.3" typing-extensions = "^4.12.2" typer = "^0.12.3" tenacity = "^9.0.0" # specifically rapidyaml is broken on atlas distros with powercycle. # current we exclude this when running poetry install in powercycle. # Use the S3 simple index so Poetry can pick a matching wheel or fall back to # the sdist when a wheel is unavailable for the current platform. [tool.poetry.group.powercycle-incompatible.dependencies] rapidyaml = { version = "==0.9.0.post0", source = "mdb-build-public", markers = "python_version == '3.13'" } [tool.poetry.group.export.dependencies] pipx = "1.6.0" # TODO: Add in pex as we move forward with this # pex = "^2.1.137" poetry = "2.0.0" [tool.poetry.group.evergreen.dependencies] click = "^8.1.7" inject = "^5.2.1" GitPython = "^3.1.43" pydantic = "*" structlog = "^24.4.0" [tool.poetry.group.external-auth.dependencies] # These are the dependencies of ldaptor passlib = "^1.7.4" pyOpenSSL = "^25.0.0" pyparsing = "^2.4.7" service_identity = "^18.1.0" twisted = "^24.3.0" twisted-iocpsupport = { version = "^1.0.4", markers = "sys_platform == 'win32'" } 'zope.interface' = "^8.1.1" ldaptor = "19.0.0" [tool.poetry.group.idl.dependencies] unittest-xml-reporting = "3.2.0" packaging = "^25.0" [tool.poetry.group.jira-client.dependencies] jira = "^3.10.5" requests-oauth = "<=0.4.1" PyJWT = "^2.9.0" # 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.11.1" structlog = "^24.4.0" yamllint = "^1.35.1" types-setuptools = "^80.9.0" types-requests = "^2.32.0.20240712" tqdm = "*" colorama = "^0.4.6" evergreen-lint = "^0.1.10" ruff = "^0.6.7" license-expression = "^30.4.4" [tool.poetry.group.modules_poc.dependencies] codeowners = { version = "^0.8.0", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } progressbar2 = { version = "^4.4.2", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } textual = {extras = ["syntax"], version = "^3.0.0", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } tree-sitter = { version = "^0.24.0", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } tree-sitter-cpp = { version = "^0.23.4", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } pyzstd = { version = "^0.16.2", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } cffi = "^2.0.0" [tool.poetry.group.platform.dependencies] pypiwin32 = { version = ">=223", markers = "sys_platform == 'win32'" } pywin32 = { version = ">=225", markers = "sys_platform == 'win32'" } python-msilib = { version = "^0.5.0", markers = "sys_platform == 'win32' and python_version >= '3.13'" } cryptography = "^44.0.2" [tool.poetry.group.testing.dependencies] bazel-runfiles = "^1.8.3" curatorbin = "^1.2.4" PyKMIP = {git = "https://github.com/mongodb-forks/PyKMIP.git", rev = "c48cb01635819e478b573e3245ef840a11d78865"} kafka-python = "^2.0.2" avro-python3 = "^1.10.2" evergreen-py = { version = "^3.15.0", python = ">=3.10,<3.14"} mock = "^5.1.0" shrub-py = "^3.1.4" ocspresponder = "^0.5.0" flask = "^2.3.3" ocspbuilder = "^0.10.2" ecdsa = "^0.19.0" asn1crypto = "^1.5.1" toml = ">=0.10.2,<0.11.0" filelock = "^3.18.0" numpy = { version = "2.2.6", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } oscrypto = { version = "^1.3.0", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } # 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.58" urllib3 = "^2.2.2" distro = "^1.9.0" dnspython = "^2.6.1" proxy-protocol = "^0.11.3" pkce = "^1.0.3" pexpect = "^4.9.0" oauthlib = "^3.1.1" requests-oauthlib = "^2.0.0" packaging = "^25.0" docker = "^7.1.0" mongomock = "^4.1.2" pyjwt = "^2.9.0" selenium = "^4.23.1" geckodriver-autoinstaller = "^0.1.0" retry = "^0.9.2" gdbmongo = "^0.16.0" googleapis-common-protos = "^1.63.2" google-api-python-client="^2.19.0" google-auth-oauthlib="^1.2.1" gcovr = "7.2" opentelemetry-api = "*" opentelemetry-sdk = "*" opentelemetry-exporter-otlp-proto-common = "*" opentelemetry-exporter-otlp-proto-grpc = { version = "*", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } opentelemetry-exporter-otlp-proto-http = { version = "*", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } timeout-decorator = "0.5.0" # This can be installed with "poetry install -E libdeps" [project.optional-dependencies] 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 [project.scripts] resmoke = "buildscripts.resmoke:entrypoint" [tool.ruff] force-exclude = true extend-exclude = [ "src/third_party", ] line-length = 100 target-version = "py313" [tool.ruff.lint] extend-select = [ "I", # isort "UP006", # non-pep585-annotation "W605", # invalid-escape-sequence ] ignore = [ "E402", # module-import-not-at-top-of-file "E721", # type-comparison "E722", # bare-except "E741", # ambiguous-variable-name "F402", # import-shadowed-by-loop-var "F403", # undefined-local-with-import-star "F405", # undefined-local-with-import-star-usage "F811", # redefined-while-unused "F821", # undefined-name "F822", # undefined-export ] [tool.ruff.lint.per-file-ignores] # This file needs to support Python 3.5+ for old OS package testing "buildscripts/package_test_internal.py" = ["UP"] [tool.ruff.lint.isort] known-first-party = ["buildscripts", "buildscripts/idl", "evergreen", "tools"] [tool.pyright] include = [ "buildscripts", "src" ] exclude = [ "**/third_party/**", "**/external/**" ] pythonVersion = "3.13" # These should be set to "error" for basic functionality reportInvalidTypeForm = "none" reportMissingImports = "none" reportUndefinedVariable = "none" reportAbstractUsage = "error" reportAssertTypeFailure = "error" reportInconsistentOverload = "error" reportInvalidTypeArguments = "none" reportNoOverloadImplementation = "error" reportOptionalCall = "none" reportOptionalContextManager = "error" reportRedeclaration = "none" reportUnboundVariable = "none" reportUnhashable = "none" reportUnusedCoroutine = "error" reportUnusedExcept = "error" # These should be set to "warning" or "error" for standard checks reportArgumentType = "none" reportAssignmentType = "none" reportAttributeAccessIssue = "none" reportCallIssue = "none" reportGeneralTypeIssues = "none" reportIndexIssue = "none" reportOperatorIssue = "none" reportOptionalSubscript = "none" reportOptionalMemberAccess = "none" reportOptionalIterable = "none" reportOptionalOperand = "none" reportReturnType = "none" reportTypedDictNotRequiredAccess = "none" reportPrivateImportUsage = "none" reportFunctionMemberAccess = "none" reportIncompatibleMethodOverride = "none" reportIncompatibleVariableOverride = "none" reportOverlappingOverload = "error" reportPossiblyUnboundVariable = "none" # These are additional checks for strict mode reportMissingTypeStubs = "none" reportAssertAlwaysTrue = "error" reportInvalidStringEscapeSequence = "error" reportInvalidTypeVarUse = "error" reportSelfClsParameterName = "none" reportUnsupportedDunderAll = "error" reportUnusedExpression = "error" reportWildcardImportFromLibrary = "error" reportConstantRedefinition = "none" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"