Skip to content

Commit ddb028a

Browse files
authored
Merge branch 'main' into repo-assist/improve-splitinto-2026-03-10-4bfa9f8b67a1a5ed
2 parents 68671c4 + 41f84e8 commit ddb028a

File tree

13 files changed

+530
-30
lines changed

13 files changed

+530
-30
lines changed

.github/aw/actions-lock.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
"repo": "github/gh-aw/actions/setup",
1010
"version": "v0.56.2",
1111
"sha": "f1073c5498ee46fec1530555a7c953445417c69b"
12+
},
13+
"github/gh-aw/actions/setup@v0.57.2": {
14+
"repo": "github/gh-aw/actions/setup",
15+
"version": "v0.57.2",
16+
"sha": "32b3a711a9ee97d38e3989c90af0385aff0066a7"
1217
}
1318
}
1419
}

.github/workflows/repo-assist.lock.yml

Lines changed: 21 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/workflows/repo-assist.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ description: |
1414
Always polite, constructive, and mindful of the project's goals.
1515
1616
on:
17-
schedule: every 6h
17+
schedule: every 48 hours
1818
workflow_dispatch:
1919
slash_command:
2020
name: repo-assist

README.md

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -208,16 +208,16 @@ The `TaskSeq` project already has a wide array of functions and functionalities,
208208
- [ ] Add remaining relevant functions from `Seq`. **PLANNED FOR 0.4.x**
209209
- [x] `min` / `max` / `minBy` / `maxBy` & async variant (see [#221])
210210
- [x] `insertAt` / `updateAt` and related (see [#236])
211-
- [ ] `average` / `averageBy`, `sum` and related
211+
- [x] `average` / `averageBy`, `sum` and related (see [#304])
212212
- [x] `forall` / `forallAsync` (see [#240])
213213
- [x] `skip` / `drop` / `truncate` / `take` (see [#209])
214214
- [x] `chunkBySize` / `windowed` (see [#258])
215-
- [ ] `compareWith`
216-
- [ ] `distinct`
215+
- [x] `compareWith` / `compareWithAsync`
216+
- [x] `distinct`
217217
- [ ] `exists2` / `map2` / `fold2` / `iter2` and related '2'-functions
218-
- [ ] `mapFold`
218+
- [x] `mapFold` (see [#306])
219219
- [x] `pairwise` (see [#293])
220-
- [ ] `allpairs` / `permute` / `distinct` / `distinctBy`
220+
- [x] `groupBy` / `groupByAsync`, `countBy` / `countByAsync`, `partition` / `partitionAsync` (see [#307])
221221
- [x] `replicate`
222222
- [x] `reduce` / `scan` (see [#299], [#296])
223223
- [x] `unfold` (see [#300])
@@ -257,8 +257,8 @@ This is what has been implemented so far, is planned or skipped:
257257
| ✅ [#81][] | `append` | `append` | | |
258258
| ✅ [#81][] | | | `appendSeq` | |
259259
| ✅ [#81][] | | | `prependSeq` | |
260-
| | `average` | `average` | | |
261-
| | `averageBy` | `averageBy` | `averageByAsync` | |
260+
| ✅ [#304][] | `average` | `average` | | |
261+
| ✅ [#304][] | `averageBy` | `averageBy` | `averageByAsync` | |
262262
| ❓ | `cache` | `cache` | | [note #1](#note1 "These functions require a form of pre-materializing through 'TaskSeq.cache', similar to the approach taken in the corresponding 'Seq' functions. It doesn't make much sense to have a cached async sequence. However, 'AsyncSeq' does implement these, so we'll probably do so eventually as well.") |
263263
| ✅ [#67][] | `cast` | `cast` | | |
264264
| ✅ [#67][] | | | `box` | |
@@ -267,16 +267,18 @@ This is what has been implemented so far, is planned or skipped:
267267
| ✅ [#258][] | `chunkBySize` | `chunkBySize` | | |
268268
| ✅ [#11][] | `collect` | `collect` | `collectAsync` | |
269269
| ✅ [#11][] | | `collectSeq` | `collectSeqAsync` | |
270-
| | `compareWith` | `compareWith` | `compareWithAsync` | |
270+
| ✅ | `compareWith` | `compareWith` | `compareWithAsync` | |
271271
| ✅ [#69][] | `concat` | `concat` | | |
272272
| ✅ [#237][]| `concat` (list) | `concat` (list) | | |
273273
| ✅ [#237][]| `concat` (array) | `concat` (array) | | |
274274
| ✅ [#237][]| `concat` (r-array) | `concat` (r-array) | | |
275275
| ✅ [#237][]| `concat` (seq) | `concat` (seq) | | |
276276
| ✅ [#70][] | `contains` | `contains` | | |
277+
| ✅ [#307][] | `countBy` | `countBy` | `countByAsync` | |
277278
| ✅ [#82][] | `delay` | `delay` | | |
278-
| | `distinct` | `distinct` | | |
279-
| | `distinctBy` | `dictinctBy` | `distinctByAsync` | |
279+
| ✅ [#305][] | `distinct` | `distinct` | | |
280+
| ✅ [#305][] | `distinctBy` | `distinctBy` | `distinctByAsync` | |
281+
| ✅ [#305][] | | `distinctUntilChanged` | | |
280282
| ✅ [#209][]| | `drop` | | |
281283
| ✅ [#2][] | `empty` | `empty` | | |
282284
| ✅ [#23][] | `exactlyOne` | `exactlyOne` | | |
@@ -295,7 +297,7 @@ This is what has been implemented so far, is planned or skipped:
295297
| 🚫 | `foldBack2` | | | [note #2](#note2 "Because of the async nature of TaskSeq sequences, iterating from the back would be bad practice. Instead, materialize the sequence to a list or array and then apply the 'Back' iterators.") |
296298
| ✅ [#240][]| `forall` | `forall` | `forallAsync` | |
297299
| | `forall2` | `forall2` | `forall2Async` | |
298-
| ❓ | `groupBy` | `groupBy` | `groupByAsync` | [note #1](#note1 "These functions require a form of pre-materializing through 'TaskSeq.cache', similar to the approach taken in the corresponding 'Seq' functions. It doesn't make much sense to have a cached async sequence. However, 'AsyncSeq' does implement these, so we'll probably do so eventually as well.") |
300+
| ✅ [#307][] | `groupBy` | `groupBy` | `groupByAsync` | |
299301
| ✅ [#23][] | `head` | `head` | | |
300302
| ✅ [#68][] | `indexed` | `indexed` | | |
301303
| ✅ [#69][] | `init` | `init` | `initAsync` | |
@@ -314,7 +316,7 @@ This is what has been implemented so far, is planned or skipped:
314316
| ✅ [#2][] | `map` | `map` | `mapAsync` | |
315317
| | `map2` | `map2` | `map2Async` | |
316318
| | `map3` | `map3` | `map3Async` | |
317-
| | `mapFold` | `mapFold` | `mapFoldAsync` | |
319+
| ✅ [#306][] | `mapFold` | `mapFold` | `mapFoldAsync` | |
318320
| 🚫 | `mapFoldBack` | | | [note #2](#note2 "Because of the async nature of TaskSeq sequences, iterating from the back would be bad practice. Instead, materialize the sequence to a list or array and then apply the 'Back' iterators.") |
319321
| ✅ [#2][] | `mapi` | `mapi` | `mapiAsync` | |
320322
| | `mapi2` | `mapi2` | `mapi2Async` | |
@@ -334,6 +336,7 @@ This is what has been implemented so far, is planned or skipped:
334336
| ✅ [#2][] | | `ofTaskList` | | |
335337
| ✅ [#2][] | | `ofTaskSeq` | | |
336338
| ✅ [#293][] | `pairwise` | `pairwise` | | |
339+
| ✅ [#307][] | `partition` | `partition` | `partitionAsync` | |
337340
| | `permute` | `permute` | `permuteAsync` | |
338341
| ✅ [#23][] | `pick` | `pick` | `pickAsync` | |
339342
| &#x1f6ab; | `readOnly` | | | [note #3](#note3 "The motivation for 'readOnly' in 'Seq' is that a cast from a mutable array or list to a 'seq<_>' is valid and can be cast back, leading to a mutable sequence. Since 'TaskSeq' doesn't implement 'IEnumerable<_>', such casts are not possible.") |
@@ -354,9 +357,9 @@ This is what has been implemented so far, is planned or skipped:
354357
| &#x2753; | `sortByAscending` | | | [note #1](#note1 "These functions require a form of pre-materializing through 'TaskSeq.cache', similar to the approach taken in the corresponding 'Seq' functions. It doesn't make much sense to have a cached async sequence. However, 'AsyncSeq' does implement these, so we'll probably do so eventually as well.") |
355358
| &#x2753; | `sortByDescending` | | | [note #1](#note1 "These functions require a form of pre-materializing through 'TaskSeq.cache', similar to the approach taken in the corresponding 'Seq' functions. It doesn't make much sense to have a cached async sequence. However, 'AsyncSeq' does implement these, so we'll probably do so eventually as well.") |
356359
| &#x2753; | `sortWith` | | | [note #1](#note1 "These functions require a form of pre-materializing through 'TaskSeq.cache', similar to the approach taken in the corresponding 'Seq' functions. It doesn't make much sense to have a cached async sequence. However, 'AsyncSeq' does implement these, so we'll probably do so eventually as well.") |
357-
| &#x2705; | `splitInto` | `splitInto` | | |
358-
| | `sum` | `sum` | | |
359-
| | `sumBy` | `sumBy` | `sumByAsync` | |
360+
| &#x2753; | `splitInto` | `splitInto` | | |
361+
| &#x2705; [#304][] | `sum` | `sum` | | |
362+
| &#x2705; [#304][] | `sumBy` | `sumBy` | `sumByAsync` | |
360363
| &#x2705; [#76][] | `tail` | `tail` | | |
361364
| &#x2705; [#209][]| `take` | `take` | | |
362365
| &#x2705; [#126][]| `takeWhile` | `takeWhile` | `takeWhileAsync` | |
@@ -659,6 +662,10 @@ module TaskSeq =
659662
[#296]: https://github.com/fsprojects/FSharp.Control.TaskSeq/pull/296
660663
[#299]: https://github.com/fsprojects/FSharp.Control.TaskSeq/pull/299
661664
[#300]: https://github.com/fsprojects/FSharp.Control.TaskSeq/pull/300
665+
[#304]: https://github.com/fsprojects/FSharp.Control.TaskSeq/pull/304
666+
[#305]: https://github.com/fsprojects/FSharp.Control.TaskSeq/pull/305
667+
[#306]: https://github.com/fsprojects/FSharp.Control.TaskSeq/pull/306
668+
[#307]: https://github.com/fsprojects/FSharp.Control.TaskSeq/pull/307
662669

663670
[issues]: https://github.com/fsprojects/FSharp.Control.TaskSeq/issues
664671
[nuget]: https://www.nuget.org/packages/FSharp.Control.TaskSeq/

release-notes.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ Release notes:
33

44
0.6.0
55
- adds TaskSeq.splitInto
6+
- fixes: async { for item in taskSeq do ... } no longer wraps exceptions in AggregateException, #129
7+
- adds TaskSeq.compareWith and TaskSeq.compareWithAsync
68
- adds TaskSeq.scan and TaskSeq.scanAsync, #289
79
- adds TaskSeq.pairwise, #289
810
- adds TaskSeq.groupBy and TaskSeq.groupByAsync, #289

src/FSharp.Control.TaskSeq.Test/FSharp.Control.TaskSeq.Test.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<Compile Include="TaskSeq.ToXXX.Tests.fs" />
5959
<Compile Include="TaskSeq.UpdateAt.Tests.fs" />
6060
<Compile Include="TaskSeq.Zip.Tests.fs" />
61+
<Compile Include="TaskSeq.CompareWith.Tests.fs" />
6162
<Compile Include="TaskSeq.ChunkBySize.Tests.fs" />
6263
<Compile Include="TaskSeq.SplitInto.Tests.fs" />
6364
<Compile Include="TaskSeq.Windowed.Tests.fs" />

0 commit comments

Comments
 (0)