-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generalize the element type of BlockedUnitRange
#337
Generalize the element type of BlockedUnitRange
#337
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## release-1.0 #337 +/- ##
===============================================
+ Coverage 95.42% 95.47% +0.05%
===============================================
Files 17 17
Lines 1530 1548 +18
===============================================
+ Hits 1460 1478 +18
Misses 70 70 ☔ View full report in Codecov by Sentry. |
Looks like there are some downstream test failures caused by adding an extra type parameter to |
Probably a non-breaking implementation needs to be in the non-standard form |
I’m thinking we tag v1 after this is done so it’s fine if it’s breaking |
I'm guessing that most use cases of |
Yes sorry I meant tag v1 once we also add BlockedOneTo |
BlockedUnitRange
BlockedUnitRange
I think this is ready for review. Some discussion points are:
|
|
There already appears to be a |
Gentle bump, could you rebase this on the updated |
Will do. |
@jishnub I merged the latest I assume we will want to generalize the element type of In the latest commit I made the type constraints of the inner julia> BlockArrays._BlockedUnitRange(UInt8(1), [1, 2, 3])
3-blocked 3-element BlockedUnitRange{Int64, Vector{Int64}}:
1
─
2
─
3
julia> BlockArrays._BlockedUnitRange(UInt8(1), (UInt8(1), 2, 3))
3-blocked 3-element BlockedUnitRange{Int64, Tuple{Int64, Int64, Int64}}:
1
─
2
─
3 whereas before the types of the fields |
I think this looks good at this point. There are some issues like |
Sounds good, I'll add some more tests to improve the coverage. |
Ok I think everything is covered now. |
Great, let's merge this and then figure out the other issues |
* Compact show for `BlockRange` (#248) * Compact show for BlockRange * update docstrings * don't specialize show for zero dim * fix missing io in print * missing show tests * show for BlockIndexRange * Bump version to v1.0.0-dev * Add `BlockedOneTo` as the axis type for a `BlockedArray` (#348) * Add BlockedOneTo * axes for AbstractBlockedUnitRange returns BlockedOneTo * Rewrite test using blockedrange instead of BlockedUnitRange * Update BlockedUnitRange docstring and add for BlockedOneTo/blockedrange * Show for BlockedOneTo * Blocklengths for OrdinalRange block sizes * Update docs * Return BlockedOneTo in indexing with BlockRange * Be less fussy in show tests * Require 1-based lasts in blockedrange * Disallow offset arrays in BlockedUnitRange * undo unnecessary doc change * Test conversions between BlockedOneTo and BlockedUnitRange * Reduce the number of convert methods * Remove axes1 specialization * Disallow offset block axes and blocks in BlockArray constructor * Remove unused axes method * Infinite broadcast tests (#383) * Specialize blockedrange BroadcastStyle for LazyArrayStyle (#384) * Specialize blockedrange BroadcastStyle for LazyArrayStyle * Add compat for LazyArrays * Define dataids for PseudoBlockArrays (#364) (#385) * Define dataids for PseudoBlockArrays (#364) * Don't use dataids of axes * Banded Matrix extension (#388) * Move BandedMatrices+BlockArrays code in BlockBandedMatrices to extension * Bump julia-actions/setup-julia from 1 to 2 (#387) Bumps [julia-actions/setup-julia](https://github.com/julia-actions/setup-julia) from 1 to 2. - [Release notes](https://github.com/julia-actions/setup-julia/releases) - [Commits](julia-actions/setup-julia@v1...v2) --- updated-dependencies: - dependency-name: julia-actions/setup-julia dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Move over blockbanded code * Add tests * Update Project.toml * add tests * Update Project.toml --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Generalize the element type of `BlockedUnitRange` (#337) * Allow more general BlockUnitRange element types * Restrict element type * Get tests passing * Fix some tests * Fix some doctests * Skip broken test in Julia v1.6 * Better support for unitful numbers * Fix tests * Stricter types in _BlockedUnitRange * Improve tests coverage * Allow non-Int eltypes in BlockedOneTo (#395) * Allow non-Int eltypes in BlockedOneTo * Specific constructors in BlockedOneTo * Restrict eltype to integers in BlockedOneTo constructors * Tests for construction from a Tuple * Move LazyArrays extension to LazyArrays.jl (#393) * Move LazyArrays extension to LazyArrays.jl * remove LazyArrays * Move over OneToCumsum This was type piracy in LazyBandedMatrices.jl * Update blockaxis.jl * move out InfiniteArrays.jl tests * Use FillArrays accumulate overloads (#397) * Bump julia-actions/setup-julia from 1 to 2 (#387) Bumps [julia-actions/setup-julia](https://github.com/julia-actions/setup-julia) from 1 to 2. - [Release notes](https://github.com/julia-actions/setup-julia/releases) - [Commits](julia-actions/setup-julia@v1...v2) --- updated-dependencies: - dependency-name: julia-actions/setup-julia dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Map imported names to correct parentmodules (#391) * Remove unused imported names (#392) * Don't import Base.Cartesian (#394) I don't think this is being used anymore * Use FillArrays accumulate * Bump julia-actions/cache from 1 to 2 (#398) Bumps [julia-actions/cache](https://github.com/julia-actions/cache) from 1 to 2. - [Release notes](https://github.com/julia-actions/cache/releases) - [Commits](julia-actions/cache@v1...v2) --- updated-dependencies: - dependency-name: julia-actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update Project.toml * Update Project.toml * try running Pkg.update() --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jishnu Bhattacharya <[email protected]> * Redefine blocksizes (#399) * Redefine blocksizes * Revert change to docstring * Add tests, fix some tests, add docstring * Fix more tests * Add test Project.toml * Git ignore vim temp files * Fixes to test Project.toml * Another test Project.toml fix * Move code, change type design, better code coverage * Backwards compatibility. Fix doctest. * Fix tests * Redesign BlockSizes to be AbstractArray subtype * Rename PseudoBlockArray to BlockedArray (#401) * v1.0, add README * rename files * Update README.md --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Jishnu Bhattacharya <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Matt Fishman <[email protected]>
Fixes #336.
This is meant to be a minimal implementation that gets tests passing, there may be a few different design choices to make for certain functions. I also need to check that the element type is actually preserved appropriately, such as in functions like
blockfirsts
,blocklasts
, etc.I'm not sure what we want for
eltype(blocklengths(r))
(i.e. should it equaleltype(r)
orInt
?), sincelength(::AbstractUnitRange)
doesn't matcheltype(::AbstractUnitRange)
: