Skip to content

Commit

Permalink
remove itertools dep
Browse files Browse the repository at this point in the history
  • Loading branch information
ritchie46 committed Dec 26, 2021
1 parent 803f46f commit 8cedd5e
Show file tree
Hide file tree
Showing 23 changed files with 184 additions and 148 deletions.
2 changes: 2 additions & 0 deletions polars/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ horizontal_concat = ["polars-core/horizontal_concat"]
abs = ["polars-core/abs", "polars-lazy/abs"]
dynamic_groupby = ["polars-core/dynamic_groupby", "polars-lazy/dynamic_groupby"]
ewma = ["polars-core/ewma", "polars-lazy/ewma"]
dot_diagram = ["polars-lazy/dot_diagram"]

# don't use this
private = ["polars-lazy/private"]
Expand Down Expand Up @@ -170,6 +171,7 @@ docs-selection = [
"diagonal_concat",
"horizontal_concat",
"abs",
"dot_diagram",
]

bench = [
Expand Down
25 changes: 25 additions & 0 deletions polars/polars-arrow/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,31 @@ pub trait CustomIterTools: Iterator {
{
FromIteratorReversed::from_trusted_len_iter_rev(self)
}

fn all_equal(&mut self) -> bool
where
Self: Sized,
Self::Item: PartialEq,
{
match self.next() {
None => true,
Some(a) => self.all(|x| a == x),
}
}

fn fold_options<A, B, F>(&mut self, mut start: B, mut f: F) -> Option<B>
where
Self: Iterator<Item = Option<A>>,
F: FnMut(B, A) -> B,
{
for elt in self {
match elt {
Some(v) => start = f(start, v),
None => return None,
}
}
Some(start)
}
}

pub trait CustomIterToolsSized: Iterator + Sized {}
Expand Down
1 change: 0 additions & 1 deletion polars/polars-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,6 @@ anyhow = "1.0"

comfy-table = { version = "4.0", optional = true }
hashbrown = { version = "0.11", features = ["rayon"] }
itertools = "0.10"
jsonpath_lib = { version = "0.3.0", optional = true, git = "https://github.com/ritchie46/jsonpath", branch = "improve_compiled" }
lazy_static = "1.4"
ndarray = { version = "0.15", optional = true, default_features = false }
Expand Down
141 changes: 70 additions & 71 deletions polars/polars-core/src/chunked_array/comparison.rs
Original file line number Diff line number Diff line change
Expand Up @@ -870,7 +870,6 @@ impl ChunkEqualElement for CategoricalChunked {
mod test {
use super::super::{arithmetic::test::create_two_chunked, test::get_chunked_array};
use crate::prelude::*;
use itertools::Itertools;
use std::iter::repeat;

#[test]
Expand All @@ -887,52 +886,52 @@ mod test {
let (a1, a2) = create_two_chunked();

assert_eq!(
a1.equal(&a2).into_iter().collect_vec(),
repeat(Some(true)).take(6).collect_vec()
a1.equal(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a2.equal(&a1).into_iter().collect_vec(),
repeat(Some(true)).take(6).collect_vec()
a2.equal(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a1.not_equal(&a2).into_iter().collect_vec(),
repeat(Some(false)).take(6).collect_vec()
a1.not_equal(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a2.not_equal(&a1).into_iter().collect_vec(),
repeat(Some(false)).take(6).collect_vec()
a2.not_equal(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a1.gt(&a2).into_iter().collect_vec(),
repeat(Some(false)).take(6).collect_vec()
a1.gt(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a2.gt(&a1).into_iter().collect_vec(),
repeat(Some(false)).take(6).collect_vec()
a2.gt(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a1.gt_eq(&a2).into_iter().collect_vec(),
repeat(Some(true)).take(6).collect_vec()
a1.gt_eq(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a2.gt_eq(&a1).into_iter().collect_vec(),
repeat(Some(true)).take(6).collect_vec()
a2.gt_eq(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a1.lt_eq(&a2).into_iter().collect_vec(),
repeat(Some(true)).take(6).collect_vec()
a1.lt_eq(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a2.lt_eq(&a1).into_iter().collect_vec(),
repeat(Some(true)).take(6).collect_vec()
a2.lt_eq(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a1.lt(&a2).into_iter().collect_vec(),
repeat(Some(false)).take(6).collect_vec()
a1.lt(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(6).collect::<Vec<_>>()
);
assert_eq!(
a2.lt(&a1).into_iter().collect_vec(),
repeat(Some(false)).take(6).collect_vec()
a2.lt(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(6).collect::<Vec<_>>()
);
}

Expand All @@ -942,52 +941,52 @@ mod test {
let a2 = get_chunked_array();

assert_eq!(
a1.equal(&a2).into_iter().collect_vec(),
repeat(Some(true)).take(3).collect_vec()
a1.equal(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a2.equal(&a1).into_iter().collect_vec(),
repeat(Some(true)).take(3).collect_vec()
a2.equal(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a1.not_equal(&a2).into_iter().collect_vec(),
repeat(Some(false)).take(3).collect_vec()
a1.not_equal(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a2.not_equal(&a1).into_iter().collect_vec(),
repeat(Some(false)).take(3).collect_vec()
a2.not_equal(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a1.gt(&a2).into_iter().collect_vec(),
repeat(Some(false)).take(3).collect_vec()
a1.gt(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a2.gt(&a1).into_iter().collect_vec(),
repeat(Some(false)).take(3).collect_vec()
a2.gt(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a1.gt_eq(&a2).into_iter().collect_vec(),
repeat(Some(true)).take(3).collect_vec()
a1.gt_eq(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a2.gt_eq(&a1).into_iter().collect_vec(),
repeat(Some(true)).take(3).collect_vec()
a2.gt_eq(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a1.lt_eq(&a2).into_iter().collect_vec(),
repeat(Some(true)).take(3).collect_vec()
a1.lt_eq(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a2.lt_eq(&a1).into_iter().collect_vec(),
repeat(Some(true)).take(3).collect_vec()
a2.lt_eq(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(true)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a1.lt(&a2).into_iter().collect_vec(),
repeat(Some(false)).take(3).collect_vec()
a1.lt(&a2).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(3).collect::<Vec<_>>()
);
assert_eq!(
a2.lt(&a1).into_iter().collect_vec(),
repeat(Some(false)).take(3).collect_vec()
a2.lt(&a1).into_iter().collect::<Vec<_>>(),
repeat(Some(false)).take(3).collect::<Vec<_>>()
);
}

Expand All @@ -1005,53 +1004,53 @@ mod test {
a2_2chunks.append(&(&[Some(3)]).iter().copied().collect());

assert_eq!(
a1.equal(&a2).into_iter().collect_vec(),
a1.equal(&a2_2chunks).into_iter().collect_vec()
a1.equal(&a2).into_iter().collect::<Vec<_>>(),
a1.equal(&a2_2chunks).into_iter().collect::<Vec<_>>()
);

assert_eq!(
a1.not_equal(&a2).into_iter().collect_vec(),
a1.not_equal(&a2_2chunks).into_iter().collect_vec()
a1.not_equal(&a2).into_iter().collect::<Vec<_>>(),
a1.not_equal(&a2_2chunks).into_iter().collect::<Vec<_>>()
);
assert_eq!(
a1.not_equal(&a2).into_iter().collect_vec(),
a2_2chunks.not_equal(&a1).into_iter().collect_vec()
a1.not_equal(&a2).into_iter().collect::<Vec<_>>(),
a2_2chunks.not_equal(&a1).into_iter().collect::<Vec<_>>()
);

assert_eq!(
a1.gt(&a2).into_iter().collect_vec(),
a1.gt(&a2_2chunks).into_iter().collect_vec()
a1.gt(&a2).into_iter().collect::<Vec<_>>(),
a1.gt(&a2_2chunks).into_iter().collect::<Vec<_>>()
);
assert_eq!(
a1.gt(&a2).into_iter().collect_vec(),
a2_2chunks.gt(&a1).into_iter().collect_vec()
a1.gt(&a2).into_iter().collect::<Vec<_>>(),
a2_2chunks.gt(&a1).into_iter().collect::<Vec<_>>()
);

assert_eq!(
a1.gt_eq(&a2).into_iter().collect_vec(),
a1.gt_eq(&a2_2chunks).into_iter().collect_vec()
a1.gt_eq(&a2).into_iter().collect::<Vec<_>>(),
a1.gt_eq(&a2_2chunks).into_iter().collect::<Vec<_>>()
);
assert_eq!(
a1.gt_eq(&a2).into_iter().collect_vec(),
a2_2chunks.gt_eq(&a1).into_iter().collect_vec()
a1.gt_eq(&a2).into_iter().collect::<Vec<_>>(),
a2_2chunks.gt_eq(&a1).into_iter().collect::<Vec<_>>()
);

assert_eq!(
a1.lt_eq(&a2).into_iter().collect_vec(),
a1.lt_eq(&a2_2chunks).into_iter().collect_vec()
a1.lt_eq(&a2).into_iter().collect::<Vec<_>>(),
a1.lt_eq(&a2_2chunks).into_iter().collect::<Vec<_>>()
);
assert_eq!(
a1.lt_eq(&a2).into_iter().collect_vec(),
a2_2chunks.lt_eq(&a1).into_iter().collect_vec()
a1.lt_eq(&a2).into_iter().collect::<Vec<_>>(),
a2_2chunks.lt_eq(&a1).into_iter().collect::<Vec<_>>()
);

assert_eq!(
a1.lt(&a2).into_iter().collect_vec(),
a1.lt(&a2_2chunks).into_iter().collect_vec()
a1.lt(&a2).into_iter().collect::<Vec<_>>(),
a1.lt(&a2_2chunks).into_iter().collect::<Vec<_>>()
);
assert_eq!(
a1.lt(&a2).into_iter().collect_vec(),
a2_2chunks.lt(&a1).into_iter().collect_vec()
a1.lt(&a2).into_iter().collect::<Vec<_>>(),
a2_2chunks.lt(&a1).into_iter().collect::<Vec<_>>()
);
}

Expand Down
11 changes: 7 additions & 4 deletions polars/polars-core/src/chunked_array/mod.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
//! The typed heart of every Series column.
use crate::prelude::*;
use arrow::{array::*, bitmap::Bitmap};
use itertools::Itertools;
use polars_arrow::prelude::ValueSize;
use std::marker::PhantomData;
use std::sync::Arc;
Expand Down Expand Up @@ -212,7 +211,11 @@ impl<T> ChunkedArray<T> {
/// Shrink the capacity of this array to fit it's length.
pub fn shrink_to_fit(&mut self) {
self.chunks = vec![arrow::compute::concatenate::concatenate(
self.chunks.iter().map(|a| &**a).collect_vec().as_slice(),
self.chunks
.iter()
.map(|a| &**a)
.collect::<Vec<_>>()
.as_slice(),
)
.unwrap()
.into()];
Expand Down Expand Up @@ -342,7 +345,7 @@ impl<T> ChunkedArray<T> {
.unwrap_or_else(|| Bitmap::new_zeroed(arr.len()));
Arc::new(BooleanArray::from_data_default(bitmap, None)) as ArrayRef
})
.collect_vec();
.collect::<Vec<_>>();
BooleanChunked::new_from_chunks(self.name(), chunks)
}

Expand All @@ -361,7 +364,7 @@ impl<T> ChunkedArray<T> {
.unwrap_or_else(|| !(&Bitmap::new_zeroed(arr.len())));
Arc::new(BooleanArray::from_data_default(bitmap, None)) as ArrayRef
})
.collect_vec();
.collect::<Vec<_>>();
BooleanChunked::new_from_chunks(self.name(), chunks)
}

Expand Down
25 changes: 20 additions & 5 deletions polars/polars-core/src/chunked_array/ops/chunkops.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ use crate::utils::slice_offsets;
#[cfg(feature = "object")]
use arrow::array::Array;
use arrow::compute::concatenate;
use itertools::Itertools;
#[cfg(feature = "dtype-categorical")]
use std::ops::Deref;

Expand Down Expand Up @@ -54,7 +53,11 @@ where
self.clone()
} else {
let chunks = vec![concatenate::concatenate(
self.chunks.iter().map(|a| &**a).collect_vec().as_slice(),
self.chunks
.iter()
.map(|a| &**a)
.collect::<Vec<_>>()
.as_slice(),
)
.unwrap()
.into()];
Expand All @@ -73,7 +76,11 @@ impl ChunkOps for BooleanChunked {
self.clone()
} else {
let chunks = vec![concatenate::concatenate(
self.chunks.iter().map(|a| &**a).collect_vec().as_slice(),
self.chunks
.iter()
.map(|a| &**a)
.collect::<Vec<_>>()
.as_slice(),
)
.unwrap()
.into()];
Expand All @@ -92,7 +99,11 @@ impl ChunkOps for Utf8Chunked {
self.clone()
} else {
let chunks = vec![concatenate::concatenate(
self.chunks.iter().map(|a| &**a).collect_vec().as_slice(),
self.chunks
.iter()
.map(|a| &**a)
.collect::<Vec<_>>()
.as_slice(),
)
.unwrap()
.into()];
Expand Down Expand Up @@ -130,7 +141,11 @@ impl ChunkOps for ListChunked {
self.clone()
} else {
let chunks = vec![concatenate::concatenate(
self.chunks.iter().map(|a| &**a).collect_vec().as_slice(),
self.chunks
.iter()
.map(|a| &**a)
.collect::<Vec<_>>()
.as_slice(),
)
.unwrap()
.into()];
Expand Down

0 comments on commit 8cedd5e

Please sign in to comment.