blob: c330e3a86cd4f85580959d235049f1ef595b0c4d [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[tool.poetry]
name = "pyiceberg"
version = "0.3.0"
readme = "README.md"
homepage = "https://iceberg.apache.org/"
repository = "https://github.com/apache/iceberg/"
description = "Apache Iceberg is an open table format for huge analytic datasets"
authors = ["Apache Software Foundation <dev@iceberg.apache.org>"]
license = "Apache License 2.0"
classifiers = [
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11"
]
packages = [
{ include = "pyiceberg" },
{ from = "vendor", include = "fb303" },
{ from = "vendor", include = "hive_metastore" },
{ include = "tests", format = "sdist" },
{ include = "Makefile", format = "sdist" },
{ include = "NOTICE", format = ["sdist", "wheel"] }
]
include = [{ path = "dev", format = "sdist" }]
[tool.poetry.dependencies]
python = "^3.8"
mmhash3 = ">=3.0.0,<4.0.0"
requests = ">=2.20.0,<3.0.0"
click = ">=7.1.1,<9.0.0"
rich = ">=10.11.0,<14.0.0"
strictyaml = ">=1.7.0,<2.0.0" # CVE-2020-14343 was fixed in 5.4.
pydantic = ">=1.9.0,<2.0.0"
fsspec = ">=2021.09.0,<2024.1.0" # `lexists()` was implemented in 2021.09.0. Upper bound set arbitrarily, to be reassessed in early 2024.
pyparsing = ">=3.0.7,<4.0.0" # The `min` keyword argument for `delimited_list()` was added in 3.0.7.
zstandard = ">=0.13.0,<1.0.0"
pyarrow = { version = ">=9.0.0,<13.0.0", optional = true }
pandas = { version = ">=1.0.0,<3.0.0", optional = true }
duckdb = { version = ">=0.5.0,<1.0.0", optional = true }
ray = { version = ">=2.0.0,<3.0.0", optional = true }
python-snappy = { version = ">=0.6.0,<1.0.0", optional = true }
thrift = { version = ">=0.13.0,<1.0.0", optional = true }
boto3 = { version = ">=1.17.106", optional = true }
s3fs = { version = ">=2021.08.0,<2024.1.0", optional = true } # Upper bound set arbitrarily, to be reassessed in early 2024.
adlfs = { version = ">=2021.07.0,<2024.1.0", optional = true } # Upper bound set arbitrarily, to be reassessed in early 2024.
[tool.poetry.dev-dependencies]
pytest = "7.3.1"
pytest-checkdocs = "2.9.0"
pre-commit = "3.3.2"
fastavro = "1.7.4"
coverage = { version = "^7.2.3", extras = ["toml"] }
requests-mock = "1.10.0"
moto = "^4.1.7"
typing-extensions = "4.5.0"
[tool.poetry.scripts]
pyiceberg = "pyiceberg.cli.console:run"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.extras]
pyarrow = ["pyarrow"]
pandas = ["pandas", "pyarrow"]
duckdb = ["duckdb", "pyarrow"]
ray = ["ray", "pyarrow", "pandas"]
snappy = ["python-snappy"]
hive = ["thrift"]
s3fs = ["s3fs"]
glue = ["boto3"]
adlfs = ["adlfs"]
dynamodb = ["boto3"]
zstandard = ["zstandard"]
[tool.pytest.ini_options]
markers = [
"s3: marks a test as requiring access to s3 compliant storage (use with --aws-access-key-id, --aws-secret-access-key, and --endpoint-url args)",
"adlfs: marks a test as requiring access to adlfs compliant storage (use with --adlfs.account-name, --adlfs.account-key, and --adlfs.endpoint args)",
"integration: marks integration tests against Apache Spark"
]
[tool.black]
line-length = 130
target-version = ['py38']
[tool.isort]
src_paths = ["pyiceberg/", "tests/"]
multi_line_output = 3
profile = 'black'
line_length = 130
force_grid_wrap = 4
[tool.pycln]
all = true
[tool.mypy]
no_implicit_optional = true
namespace_packages = false
warn_redundant_casts = true
warn_unreachable = true
warn_unused_ignores = true
disallow_any_generics = true
disallow_untyped_defs = true
[[tool.mypy.overrides]]
module = "pyarrow.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "pandas.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "snappy.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "zstandard.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "pydantic.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "pytest.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "fastavro.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "mmh3.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "hive_metastore.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "thrift.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "requests_mock.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "click.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "rich.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "fsspec.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "s3fs.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "azure.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "adlfs.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "packaging.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "tests.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "boto3"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "botocore.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "moto"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "aiobotocore.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "aiohttp.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "duckdb.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "ray.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "pyparsing.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "pyspark.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "strictyaml.*"
ignore_missing_imports = true
[tool.coverage.run]
source = ['pyiceberg/']