# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.83"
name = "clarax"
version = "1.0.0"
authors = ["Abdulwahed Mansour"]
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 = "High-performance Rust-Python bindings for Django 5.x — async-first, CPython 3.11+ only"
homepage = "https://github.com/abdulwahed-sweden/clarax"
documentation = "https://docs.rs/clarax"
readme = "README.md"
keywords = [
    "django",
    "rust",
    "python",
    "serializer",
    "performance",
]
categories = [
    "api-bindings",
    "development-tools::ffi",
]
license = "MIT"
repository = "https://github.com/abdulwahed-sweden/clarax"

[package.metadata.docs.rs]
no-default-features = true
features = ["full"]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[features]
abi3 = [
    "clarax-build-config/abi3",
    "clarax-ffi/abi3",
]
abi3-py311 = [
    "abi3-py312",
    "clarax-build-config/abi3-py311",
    "clarax-ffi/abi3-py311",
]
abi3-py312 = [
    "abi3-py313",
    "clarax-build-config/abi3-py312",
    "clarax-ffi/abi3-py312",
]
abi3-py313 = [
    "abi3-py314",
    "clarax-build-config/abi3-py313",
    "clarax-ffi/abi3-py313",
]
abi3-py314 = [
    "abi3",
    "clarax-build-config/abi3-py314",
    "clarax-ffi/abi3-py314",
]
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",
]
experimental-async = [
    "macros",
    "clarax-macros/experimental-async",
]
experimental-inspect = ["clarax-macros/experimental-inspect"]
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",
    "ordered-float",
    "parking_lot",
    "py-clone",
    "rust_decimal",
    "serde",
    "smallvec",
    "time",
    "uuid",
]
macros = ["clarax-macros"]
multiple-pymethods = [
    "inventory",
    "clarax-macros/multiple-pymethods",
]
nightly = []
num-bigint = [
    "dep:num-bigint",
    "dep:num-traits",
]
parking_lot = [
    "dep:parking_lot",
    "lock_api",
]
py-clone = []

[lib]
name = "clarax"
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_init_race"
path = "tests/test_init_race.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.clarax-ffi]
version = "=1.0.0"

[dependencies.clarax-macros]
version = "=1.0.0"
optional = true

[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.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.clarax-build-config]
version = "=1.0.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"
