[package]
edition = "2021"
rust-version = "1.83"
name = "pyo3"
version = "0.28.0"
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
build = "build.rs"
exclude = [
"/.gitignore",
".cargo/config",
"/codecov.yml",
"/Makefile",
"/pyproject.toml",
"/noxfile.py",
"/.github",
"/tests/test_compile_error.rs",
"/tests/ui",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Bindings to Python interpreter"
homepage = "https://github.com/pyo3/pyo3"
documentation = "https://docs.rs/crate/pyo3/"
readme = "README.md"
keywords = [
"pyo3",
"python",
"cpython",
"ffi",
]
categories = [
"api-bindings",
"development-tools::ffi",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/pyo3/pyo3"
[package.metadata.docs.rs]
no-default-features = true
features = ["full"]
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
abi3 = [
"pyo3-build-config/abi3",
"pyo3-ffi/abi3",
]
abi3-py310 = [
"abi3-py311",
"pyo3-build-config/abi3-py310",
"pyo3-ffi/abi3-py310",
]
abi3-py311 = [
"abi3-py312",
"pyo3-build-config/abi3-py311",
"pyo3-ffi/abi3-py311",
]
abi3-py312 = [
"abi3-py313",
"pyo3-build-config/abi3-py312",
"pyo3-ffi/abi3-py312",
]
abi3-py313 = [
"abi3-py314",
"pyo3-build-config/abi3-py313",
"pyo3-ffi/abi3-py313",
]
abi3-py314 = [
"abi3",
"pyo3-build-config/abi3-py314",
"pyo3-ffi/abi3-py314",
]
abi3-py37 = [
"abi3-py38",
"pyo3-build-config/abi3-py37",
"pyo3-ffi/abi3-py37",
]
abi3-py38 = [
"abi3-py39",
"pyo3-build-config/abi3-py38",
"pyo3-ffi/abi3-py38",
]
abi3-py39 = [
"abi3-py310",
"pyo3-build-config/abi3-py39",
"pyo3-ffi/abi3-py39",
]
arc_lock = [
"lock_api",
"lock_api/arc_lock",
"parking_lot?/arc_lock",
]
auto-initialize = []
bigdecimal = [
"dep:bigdecimal",
"num-bigint",
]
chrono-local = [
"chrono/clock",
"dep:iana-time-zone",
]
default = ["macros"]
experimental-async = [
"macros",
"pyo3-macros/experimental-async",
]
experimental-inspect = ["pyo3-macros/experimental-inspect"]
extension-module = ["pyo3-ffi/extension-module"]
full = [
"macros",
"anyhow",
"arc_lock",
"bigdecimal",
"bytes",
"chrono",
"chrono-local",
"chrono-tz",
"either",
"experimental-async",
"experimental-inspect",
"eyre",
"hashbrown",
"indexmap",
"jiff-02",
"lock_api",
"num-bigint",
"num-complex",
"num-rational",
"ordered-float",
"parking_lot",
"py-clone",
"rust_decimal",
"serde",
"smallvec",
"time",
"uuid",
]
generate-import-lib = ["pyo3-ffi/generate-import-lib"]
macros = ["pyo3-macros"]
multiple-pymethods = [
"inventory",
"pyo3-macros/multiple-pymethods",
]
nightly = []
num-bigint = [
"dep:num-bigint",
"dep:num-traits",
]
parking_lot = [
"dep:parking_lot",
"lock_api",
]
py-clone = []
[lib]
name = "pyo3"
path = "src/lib.rs"
[[test]]
name = "test_anyhow"
path = "tests/test_anyhow.rs"
[[test]]
name = "test_append_to_inittab"
path = "tests/test_append_to_inittab.rs"
[[test]]
name = "test_arithmetics"
path = "tests/test_arithmetics.rs"
[[test]]
name = "test_buffer"
path = "tests/test_buffer.rs"
[[test]]
name = "test_buffer_protocol"
path = "tests/test_buffer_protocol.rs"
[[test]]
name = "test_bytes"
path = "tests/test_bytes.rs"
[[test]]
name = "test_class_attributes"
path = "tests/test_class_attributes.rs"
[[test]]
name = "test_class_basics"
path = "tests/test_class_basics.rs"
[[test]]
name = "test_class_comparisons"
path = "tests/test_class_comparisons.rs"
[[test]]
name = "test_class_conversion"
path = "tests/test_class_conversion.rs"
[[test]]
name = "test_class_formatting"
path = "tests/test_class_formatting.rs"
[[test]]
name = "test_class_init"
path = "tests/test_class_init.rs"
[[test]]
name = "test_class_new"
path = "tests/test_class_new.rs"
[[test]]
name = "test_coroutine"
path = "tests/test_coroutine.rs"
[[test]]
name = "test_datetime"
path = "tests/test_datetime.rs"
[[test]]
name = "test_datetime_import"
path = "tests/test_datetime_import.rs"
[[test]]
name = "test_declarative_module"
path = "tests/test_declarative_module.rs"
[[test]]
name = "test_default_impls"
path = "tests/test_default_impls.rs"
[[test]]
name = "test_enum"
path = "tests/test_enum.rs"
[[test]]
name = "test_exceptions"
path = "tests/test_exceptions.rs"
[[test]]
name = "test_field_cfg"
path = "tests/test_field_cfg.rs"
[[test]]
name = "test_frompy_intopy_roundtrip"
path = "tests/test_frompy_intopy_roundtrip.rs"
[[test]]
name = "test_frompyobject"
path = "tests/test_frompyobject.rs"
[[test]]
name = "test_gc"
path = "tests/test_gc.rs"
[[test]]
name = "test_getter_setter"
path = "tests/test_getter_setter.rs"
[[test]]
name = "test_inheritance"
path = "tests/test_inheritance.rs"
[[test]]
name = "test_intopyobject"
path = "tests/test_intopyobject.rs"
[[test]]
name = "test_macro_docs"
path = "tests/test_macro_docs.rs"
[[test]]
name = "test_macros"
path = "tests/test_macros.rs"
[[test]]
name = "test_mapping"
path = "tests/test_mapping.rs"
[[test]]
name = "test_methods"
path = "tests/test_methods.rs"
[[test]]
name = "test_module"
path = "tests/test_module.rs"
[[test]]
name = "test_multiple_pymethods"
path = "tests/test_multiple_pymethods.rs"
[[test]]
name = "test_proto_methods"
path = "tests/test_proto_methods.rs"
[[test]]
name = "test_pybuffer_drop_without_interpreter"
path = "tests/test_pybuffer_drop_without_interpreter.rs"
[[test]]
name = "test_pyerr_debug_unformattable"
path = "tests/test_pyerr_debug_unformattable.rs"
[[test]]
name = "test_pyfunction"
path = "tests/test_pyfunction.rs"
[[test]]
name = "test_pyself"
path = "tests/test_pyself.rs"
[[test]]
name = "test_sequence"
path = "tests/test_sequence.rs"
[[test]]
name = "test_serde"
path = "tests/test_serde.rs"
[[test]]
name = "test_static_slots"
path = "tests/test_static_slots.rs"
[[test]]
name = "test_string"
path = "tests/test_string.rs"
[[test]]
name = "test_super"
path = "tests/test_super.rs"
[[test]]
name = "test_text_signature"
path = "tests/test_text_signature.rs"
[[test]]
name = "test_variable_arguments"
path = "tests/test_variable_arguments.rs"
[[test]]
name = "test_various"
path = "tests/test_various.rs"
[dependencies.anyhow]
version = "1.0.1"
optional = true
[dependencies.bigdecimal]
version = "0.4.7"
optional = true
[dependencies.bytes]
version = "1.10"
optional = true
[dependencies.chrono]
version = "0.4.25"
optional = true
default-features = false
[dependencies.chrono-tz]
version = ">= 0.10, < 0.11"
optional = true
default-features = false
[dependencies.either]
version = "1.9"
optional = true
[dependencies.eyre]
version = ">= 0.6.8, < 0.7"
optional = true
[dependencies.hashbrown]
version = ">= 0.15.0, < 0.17"
optional = true
default-features = false
[dependencies.iana-time-zone]
version = "0.1"
features = ["fallback"]
optional = true
[dependencies.indexmap]
version = ">= 2.5.0, < 3"
optional = true
[dependencies.inventory]
version = "0.3.5"
optional = true
[dependencies.jiff-02]
version = "0.2"
optional = true
package = "jiff"
[dependencies.libc]
version = "0.2.62"
[dependencies.lock_api]
version = "0.4"
optional = true
[dependencies.num-bigint]
version = "0.4.4"
optional = true
[dependencies.num-complex]
version = ">= 0.4.6, < 0.5"
optional = true
[dependencies.num-rational]
version = "0.4.1"
optional = true
[dependencies.num-traits]
version = "0.2.16"
optional = true
[dependencies.once_cell]
version = "1.21"
[dependencies.ordered-float]
version = "5.0.0"
optional = true
default-features = false
[dependencies.parking_lot]
version = "0.12"
optional = true
[dependencies.pyo3-ffi]
version = "=0.28.0"
[dependencies.pyo3-macros]
version = "=0.28.0"
optional = true
[dependencies.rust_decimal]
version = "1.15"
optional = true
default-features = false
[dependencies.serde]
version = "1.0"
optional = true
[dependencies.smallvec]
version = "1.0"
optional = true
[dependencies.time]
version = "0.3.38"
optional = true
default-features = false
[dependencies.uuid]
version = "1.12.0"
optional = true
[dev-dependencies.assert_approx_eq]
version = "1.1.0"
[dev-dependencies.chrono]
version = "0.4.25"
[dev-dependencies.chrono-tz]
version = ">= 0.10, < 0.11"
[dev-dependencies.futures]
version = "0.3.28"
[dev-dependencies.parking_lot]
version = "0.12.3"
features = ["arc_lock"]
[dev-dependencies.proptest]
version = "1.0"
features = ["std"]
default-features = false
[dev-dependencies.rayon]
version = "1.6.1"
[dev-dependencies.send_wrapper]
version = "0.6"
[dev-dependencies.serde]
version = "1.0"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1.0.61"
[dev-dependencies.static_assertions]
version = "1.1.0"
[dev-dependencies.tempfile]
version = "3.12.0"
[dev-dependencies.trybuild]
version = ">=1.0.115"
[dev-dependencies.uuid]
version = "1.10.0"
features = ["v4"]
[build-dependencies.pyo3-build-config]
version = "=0.28.0"
features = ["resolve-config"]
[target.'cfg(not(target_has_atomic = "64"))'.dependencies.portable-atomic]
version = "1.0"
[lints.clippy]
checked_conversions = "warn"
dbg_macro = "warn"
explicit_into_iter_loop = "warn"
explicit_iter_loop = "warn"
filter_map_next = "warn"
flat_map_option = "warn"
let_unit_value = "warn"
manual_assert = "warn"
manual_ok_or = "warn"
todo = "warn"
undocumented_unsafe_blocks = "allow"
unnecessary_wraps = "warn"
used_underscore_binding = "warn"
useless_transmute = "warn"
[lints.rust]
elided_lifetimes_in_paths = "warn"
invalid_doc_attributes = "warn"
rust_2021_prelude_collisions = "warn"
unsafe_op_in_unsafe_fn = "warn"
unused_lifetimes = "warn"
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -1
[lints.rustdoc]
bare_urls = "warn"
broken_intra_doc_links = "warn"