| # 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/'] |