# 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.

[package]
name = "opendal-python"
publish = false

authors = ["Apache OpenDAL <dev@opendal.apache.org>"]
edition = "2024"
homepage = "https://opendal.apache.org/"
license = "Apache-2.0"
repository = "https://github.com/apache/opendal"
rust-version = "1.85"
version = "0.47.1"

[features]
default = [
  "services-azblob",
  "services-azdls",
  "services-cos",
  "services-fs",
  "services-gcs",
  "services-ghac",
  "services-http",
  "services-ipmfs",
  "services-memory",
  "services-obs",
  "services-oss",
  "services-s3",
  "services-webdav",
  "services-webhdfs",
]

# NOTE: this is the feature we used to build pypi wheels.
# When enable or disable some features,
# Also, you need to update the `enabled_service` function in dev/src/generate/python.rs to match it.
services-all = [
  'default',
  'services-aliyun-drive',
  'services-alluxio',
  'services-azfile',
  'services-b2',
  'services-cacache',
  'services-dashmap',
  'services-dropbox',
  'services-ftp',
  'services-gdrive',
  'services-gridfs',
  'services-hf',
  'services-ipfs',
  'services-koofr',
  'services-memcached',
  'services-mini-moka',
  'services-moka',
  'services-mongodb',
  'services-mysql',
  'services-onedrive',
  'services-persy',
  'services-postgresql',
  'services-redb',
  'services-redis',
  'services-seafile',
  'services-sled',
  'services-sqlite',
  'services-swift',
  'services-upyun',
  'services-vercel-artifacts',
  'services-yandex-disk',
]

# List of feature-flags for all services provided by opendal.
services-aliyun-drive = ["opendal/services-aliyun-drive"]
services-alluxio = ["opendal/services-alluxio"]
services-azblob = ["opendal/services-azblob"]
services-azdls = ["opendal/services-azdls"]
services-azfile = ["opendal/services-azfile"]
services-b2 = ["opendal/services-b2"]
services-cacache = ["opendal/services-cacache"]
services-cloudflare-kv = [
  "opendal/services-cloudflare-kv",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-compfs = [
  "opendal/services-compfs",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-cos = ["opendal/services-cos"]
services-d1 = ["opendal/services-d1"] # FIXME EXCLUDED: Needs tests/ maintenance
services-dashmap = ["opendal/services-dashmap"]
services-dbfs = [
  "opendal/services-dbfs",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-dropbox = ["opendal/services-dropbox"]
services-etcd = [
  "opendal/services-etcd",
] # FIXME EXCLUDED: this service needs protoc
services-foundationdb = [
  "opendal/services-foundationdb",
] # FIXME EXCLUDED: this service needs preinstalled fdb library
services-fs = ["opendal/services-fs"]
services-ftp = ["opendal/services-ftp"]
services-gcs = ["opendal/services-gcs"]
services-gdrive = ["opendal/services-gdrive"]
services-ghac = ["opendal/services-ghac"]
services-github = [
  "opendal/services-github",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-gridfs = ["opendal/services-gridfs"]
services-hdfs = [
  "opendal/services-hdfs",
] # FIXME EXCLUDED: how to support HDFS services in bindings?
services-hdfs-native = ["opendal/services-hdfs-native"]
services-hf = ["opendal/services-hf"]
services-http = ["opendal/services-http"]
services-huggingface = ["services-hf"]
services-ipfs = ["opendal/services-ipfs"]
services-ipmfs = ["opendal/services-ipmfs"]
services-koofr = ["opendal/services-koofr"]
services-lakefs = [
  "opendal/services-lakefs",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-memcached = ["opendal/services-memcached"]
services-memory = ["opendal/services-memory"]
services-mini-moka = ["opendal/services-mini-moka"]
services-moka = ["opendal/services-moka"]
services-mongodb = ["opendal/services-mongodb"]
services-monoiofs = [
  "opendal/services-monoiofs",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-mysql = ["opendal/services-mysql"]
services-obs = ["opendal/services-obs"]
services-onedrive = ["opendal/services-onedrive"]
services-opfs = [
  "opendal/services-opfs",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-oss = ["opendal/services-oss"]
services-pcloud = [
  "opendal/services-pcloud",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-persy = ["opendal/services-persy"]
services-postgresql = ["opendal/services-postgresql"]
services-redb = ["opendal/services-redb"]
services-redis = ["opendal/services-redis"]
services-rocksdb = [
  "opendal/services-rocksdb",
] # FIXME EXCLUDED: how to support rocksdb services in bindings?
services-s3 = ["opendal/services-s3"]
services-seafile = ["opendal/services-seafile"]
services-sftp = ["opendal/services-sftp"]
services-sled = ["opendal/services-sled"]
services-sqlite = ["opendal/services-sqlite"]
services-surrealdb = [
  "opendal/services-surrealdb",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-swift = ["opendal/services-swift"]
services-tikv = [
  "opendal/services-tikv",
] # FIXME EXCLUDED: this service needs protoc
services-upyun = ["opendal/services-upyun"]
services-vercel-artifacts = ["opendal/services-vercel-artifacts"]
services-vercel-blob = [
  "opendal/services-vercel-blob",
] # FIXME EXCLUDED: Needs tests/ maintenance
services-webdav = ["opendal/services-webdav"]
services-webhdfs = ["opendal/services-webhdfs"]
services-yandex-disk = ["opendal/services-yandex-disk"]

# we build cp311-abi3 and cp310 wheels now, move this to pyo3 after we drop cp310
abi3 = ["pyo3/abi3-py311"]

# Conditionally include sftp only on non-windows targets
[target.'cfg(not(windows))'.features]
services-all = ["services-sftp"]

# Conditionally include sftp only on non-windows targets
[target.'cfg(not(target_arch = "arm"))'.features]
services-all = ["services-hdfs-native"]

[[bin]]
doc = false
name = "stub_gen"

[lib]
crate-type = ["cdylib", "rlib"]
doc = false
name = "_opendal"

[dependencies]
bytes = "1.5.0"
futures = "0.3.28"
jiff = { version = "0.2.15" }
mea = "0.6"
# this crate won't be published, we always use the local version
opendal = { version = ">=0", path = "../../core", features = [
  "blocking",
  "layers-mime-guess",
] }
pyo3 = { version = "0.27.2", features = ["generate-import-lib", "jiff-02"] }
pyo3-async-runtimes = { version = "0.27.0", features = ["tokio-runtime"] }
pyo3-stub-gen = { version = "0.17" }
tokio = "1"

[profile.release]
codegen-units = 1
debug = false
lto = "fat"
strip = true
