pyproject.toml (173 lines of code) (raw):

[tool.poetry] name = "awswrangler" version = "3.11.0" description = "Pandas on AWS." authors = ["Amazon Web Services"] license = "Apache License 2.0" readme = "README.md" include = ["awswrangler/py.typed"] exclude = ["*.so", "*.pyc", "*~", "#*", ".git*", ".coverage*", "DS_Store", "__pycache__"] homepage = "https://aws-sdk-pandas.readthedocs.io/" repository = "https://github.com/aws/aws-sdk-pandas" documentation = "https://aws-sdk-pandas.readthedocs.io/" keywords = ["pandas", "aws"] classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] [tool.poetry.dependencies] python = ">=3.9, <4.0" # Required boto3 = "^1.20.32" botocore = "^1.23.32" pandas = { version = ">=1.2.0,<3.0.0" } numpy = [ { version = ">=1.26,<2.1.0", markers = "python_version < \"3.10\"" }, { version = ">=1.26,<3.0", markers = "python_version >= \"3.10\"" } ] pyarrow = [ { version = ">=8.0.0,<19.0.0", markers = "python_version < \"3.13\"" }, { version = ">=18.0.0,<19.0.0", markers = "python_version >= \"3.13\"" } ] typing-extensions = "^4.4.0" packaging = ">=21.1,<25.0" # needed because Py 3.12 removed distutils, which some libraries still need setuptools = {version = "*", markers = "python_version >= \"3.12\""} # Databases redshift-connector = { version = "^2.0.0", optional = true } pymysql = { version = "^1.0.0", optional = true } pg8000 = { version = "^1.29.0", optional = true } pyodbc = { version = ">=4,<6", optional = true } oracledb = { version = ">=1,<4", optional = true } # Graph gremlinpython = { version = "^3.7.1", optional = true } SPARQLWrapper = { version = "^2.0.0", optional = true } requests = { version = "^2.0.0", optional = true } aiohttp = { version = "^3.9.0", optional = true } async-timeout = { version = ">=4.0.3,<6.0.0", optional = true } # OpenSearch opensearch-py = { version = "^2.0.0", optional = true } requests-aws4auth = { version = "^1.1.1", optional = true } jsonpath-ng = { version = "^1.5.3", optional = true } # Other openpyxl = { version = "^3.0.0", optional = true } progressbar2 = { version = "^4.0.0", optional = true } deltalake = { version = ">=0.18.0,<0.26.0", optional = true } geopandas = { version = "^1.0.0", optional = true } # Distributed modin = { version = ">=0.31,<0.33", optional = true } ray = { version = ">=2.30.0,<2.38.0", extras = ["default", "data"], optional = true } [tool.poetry.extras] redshift = ["redshift-connector"] mysql = ["pymysql"] postgres = ["pg8000"] sqlserver = ["pyodbc"] oracle = ["oracledb"] gremlin = ["gremlinpython", "requests", "aiohttp", "async-timeout"] sparql = ["SPARQLWrapper", "requests"] opencypher = ["requests"] opensearch = ["opensearch-py", "jsonpath-ng", "requests-aws4auth"] openpyxl = ["openpyxl"] progressbar = ["progressbar2"] deltalake = ["deltalake"] geopandas = ["geopandas"] modin = ["modin"] ray = ["ray"] [tool.poetry.group.dev.dependencies] # Build setuptools = "*" wheel = "^0.45.1" msgpack = "*" poetry = "^2.0.1" # Lint boto3-stubs = {version = "^1.36.2", extras = ["athena", "cleanrooms", "chime", "cloudwatch", "dynamodb", "ec2", "emr", "emr-serverless", "glue", "kms", "logs", "neptune", "opensearch", "opensearchserverless", "quicksight", "rds", "rds-data", "redshift", "redshift-data", "s3", "secretsmanager", "ssm", "sts", "timestream-query", "timestream-write"]} doc8 = "^1.1" mypy = "^1.14" ruff = ">=0.9.2,<0.12.0" # Test moto = "^5.0" openpyxl = "^3.1" pyparsing = "^3.2.1" pytest = "^8.3.4" pytest-cov = "^6.0" pytest-rerunfailures = "^15.0" pytest-timeout = "^2.3.1" pytest-xdist = "^3.6.1" s3fs = "0.4.2" # Must be pinned to 0.4.2 tox = "^4.23.2" # Docs bump-my-version = ">=0.29,<1.2" IPython = "^8.18.1" jupyterlab = "^4.3" nbsphinx = "^0.9.6" nbsphinx-link = "^1.3.1" sphinx = "^7.1" sphinx-autodoc-typehints = "^2.0.1" sphinx-bootstrap-theme = "^0.8" sphinx-copybutton = "^0.5.1" pydot = "^3.0.3" myst-parser = "^3.0.1" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.ruff] extend-include = ["*.ipynb"] exclude = [ ".eggs", ".git", ".mypy_cache", ".ruff_cache", ".tox", ".venv", "__pypackages__", "_build", "build", "dist", "venv", ] line-length = 120 target-version = "py38" [tool.ruff.lint] select = ["D", "E", "F", "I", "PL", "RUF100", "W", "FA", "UP", "PYI036", "NPY"] ignore = ["E501", "PLR2004", "UP037"] fixable = ["ALL"] [tool.ruff.lint.per-file-ignores] "docs/*" = ["D"] "test_infra/*" = ["D"] "tests/*" = ["PL", "D"] "tutorials/*" = ["D", "E402", "F401", "F811", "F821"] [tool.ruff.lint.pydocstyle] convention = "numpy" [tool.ruff.lint.pylint] max-args=25 # Maximum number of arguments for function / method. max-bool-expr=5 # Maximum number of boolean expressions in an if statement (see R0916). max-branches=15 # Maximum number of branch for function / method body. max-locals=30 # Maximum number of locals for function / method body. max-public-methods=20 # Maximum number of public methods for a class (see R0904). max-returns=6 # Maximum number of return / yield for function / method body. max-statements=50 # Maximum number of statements in function / method body. [tool.mypy] python_version = "3.9" strict = true ignore_missing_imports = true warn_unused_ignores = true [tool.pytest.ini_options] log_cli = false filterwarnings = "ignore::DeprecationWarning" addopts = "--log-cli-format \"[%(name)s][%(funcName)s] %(message)s\" --verbose --capture=sys" markers = [ "distributed: tests againsts methods with distributed functionality", ] [tool.coverage.run] branch = true omit = [ "awswrangler/distributed/*", "awswrangler/neptune/_utils.py", "awswrangler/opensearch/_utils.py", "awswrangler/chime.py", ] [tool.coverage.report] show_missing = true