diff --git a/Cargo.toml b/Cargo.toml index 90259620..ab777709 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ rustpython-parser-vendored = { path = "vendored", version = "0.3.0" } rustpython-ast = { path = "ast", default-features = false, version = "0.3.0" } rustpython-parser-core = { path = "core", features = [], version = "0.3.0" } rustpython-literal = { path = "literal", version = "0.3.0" } -rustpython-format = { path = "format", version = "0.3.0" } +rustpython-format = { path = "format", default-features = false, version = "0.3.0" } rustpython-parser = { path = "parser", default-features = false, version = "0.3.0" } anyhow = "1.0.45" diff --git a/format/Cargo.toml b/format/Cargo.toml index f9fd0242..2771f63b 100644 --- a/format/Cargo.toml +++ b/format/Cargo.toml @@ -8,10 +8,14 @@ repository = { workspace = true } license = { workspace = true } rust-version = { workspace = true } +[features] +default = ["malachite-bigint"] + [dependencies] rustpython-literal = { workspace = true } bitflags = { workspace = true } itertools = { workspace = true } -malachite-bigint = { workspace = true } +malachite-bigint = { workspace = true, optional = true } +num-bigint = { workspace = true, optional = true } num-traits = { workspace = true } diff --git a/format/src/bigint.rs b/format/src/bigint.rs new file mode 100644 index 00000000..ed12ec44 --- /dev/null +++ b/format/src/bigint.rs @@ -0,0 +1,4 @@ +#[cfg(feature = "malachite-bigint")] +pub use malachite_bigint::{BigInt, Sign}; +#[cfg(feature = "num-bigint")] +pub use num_bigint::{BigInt, Sign}; diff --git a/format/src/cformat.rs b/format/src/cformat.rs index a207857e..975da4be 100644 --- a/format/src/cformat.rs +++ b/format/src/cformat.rs @@ -1,7 +1,7 @@ //! Implementation of Printf-Style string formatting //! as per the [Python Docs](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting). +use crate::bigint::{BigInt, Sign}; use bitflags::bitflags; -use malachite_bigint::{BigInt, Sign}; use num_traits::Signed; use rustpython_literal::{float, format::Case}; use std::{ diff --git a/format/src/format.rs b/format/src/format.rs index 09cc3d1a..fd497b90 100644 --- a/format/src/format.rs +++ b/format/src/format.rs @@ -1,5 +1,5 @@ +use crate::bigint::{BigInt, Sign}; use itertools::{Itertools, PeekingNext}; -use malachite_bigint::{BigInt, Sign}; use num_traits::FromPrimitive; use num_traits::{cast::ToPrimitive, Signed}; use rustpython_literal::float; diff --git a/format/src/lib.rs b/format/src/lib.rs index 3c5d8695..acf8e1b3 100644 --- a/format/src/lib.rs +++ b/format/src/lib.rs @@ -1,3 +1,4 @@ +mod bigint; pub mod cformat; mod format; diff --git a/parser/Cargo.toml b/parser/Cargo.toml index 19a8c8e3..fc7ecd8d 100644 --- a/parser/Cargo.toml +++ b/parser/Cargo.toml @@ -24,7 +24,7 @@ phf_codegen = "0.11.1" tiny-keccak = { version = "2", features = ["sha3"] } [dependencies] -rustpython-ast = { workspace = true } +rustpython-ast = { workspace = true, default-features = false } rustpython-parser-core = { workspace = true } itertools = { workspace = true }