[tool.poetry] name = "awswrangler" version = "3.2.1" description = "Pandas on AWS." authors = ["Amazon Web Services"] license = "Apache License 2.0" readme = "README.md" include = ["README.md", "LICENSE.txt", "NOTICE.txt", "THIRD_PARTY.txt", "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.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", ] [tool.poetry.dependencies] python = ">=3.8, <4.0" # Required boto3 = "^1.20.32" botocore = "^1.23.32" pandas = ">=1.2.0,!=1.5.0,<3.0.0" # Exclusion per: https://github.com/aws/aws-sdk-pandas/issues/1678 numpy = "^1.18" pyarrow = ">=7.0.0" typing-extensions = "^4.4.0" packaging = ">=21.1,<24.0" # 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.0.0", optional = true } oracledb = { version = "^1.0.0", optional = true } # Graph gremlinpython = { version = "^3.6.2", optional = true } SPARQLWrapper = { version = "^2.0.0", optional = true } requests = { version = "^2.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.6.4,<0.10.0", optional = true } # Distributed modin = { version = "^0.22.2", optional = true } ray = { version = ">=2.0.0,<2.6.0", extras = ["default", "data"], optional = true } [tool.poetry.extras] redshift = ["redshift-connector"] mysql = ["pymysql"] postgres = ["pg8000"] sqlserver = ["pyodbc"] oracle = ["oracledb"] gremlin = ["gremlinpython", "requests"] sparql = ["SPARQLWrapper", "requests"] opencypher = ["requests"] opensearch = ["opensearch-py", "jsonpath-ng", "requests-aws4auth"] openpyxl = ["openpyxl"] progressbar = ["progressbar2"] deltalake = ["deltalake"] modin = ["modin"] ray = ["ray"] [tool.poetry.dev-dependencies] # Build setuptools = "*" wheel = "^0.38.1" # Lint black = "^23.1.0" boto3-stubs = {version = "^1.26.151", extras = ["athena", "cleanrooms", "chime", "cloudwatch", "dynamodb", "ec2", "emr", "emr-serverless", "glue", "kms", "lakeformation", "logs", "neptune", "opensearch", "opensearchserverless", "quicksight", "rds", "rds-data", "redshift", "redshift-data", "s3", "secretsmanager", "ssm", "sts", "timestream-query", "timestream-write"]} doc8 = "^1.0" mypy = "^1.0" pylint = "^2.17" ruff = "^0.0.270" isort = "^5.9.2" flake8 = "^5.0.1" pydocstyle = "^6.1.1" # Test moto = "^4.1" openpyxl = "^3.0" pyparsing = "^3.0.7" pytest = "^7.1.2" pytest-cov = "^4.0" pytest-rerunfailures = "^11.1" pytest-timeout = "^2.1.0" pytest-xdist = "^3.0.2" s3fs = "0.4.2" # Must be pinned to 0.4.2 tox = "^4.5.0" # Docs bump2version = "^1.0.1" IPython = "^8.10.0" jupyterlab = "^3.0" nbsphinx = "^0.8.8" nbsphinx-link = "^1.3.0" sphinx = "^6.0" sphinx-bootstrap-theme = "^0.8" sphinx-copybutton = "^0.5.1" pydot = "^1.4.2" myst-parser = "^1.0.0" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 120 target-version = ["py38", "py39", "py310"] extend_exclude = ''' /( \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | \.env | _build | buck-out | build | dist | .vscode | dev | .coverage )/ ''' [tool.ruff] select = ["D", "E", "F", "I001", "I002", "PL", "W"] ignore = ["E501", "PLR2004", "PLR0911", "PLR0912", "PLR0913", "PLR0915"] fixable = ["I001"] exclude = [ ".eggs", ".git", ".mypy_cache", ".ruff_cache", ".tox", ".venv", "__pypackages__", "_build", "build", "dist", "venv", ] line-length = 120 target-version = "py38" [tool.ruff.pydocstyle] convention = "numpy" [tool.mypy] python_version = 3.8 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