{"id":19093683,"url":"https://github.com/juliaarrays/catindices.jl","last_synced_at":"2026-05-25T19:30:20.607Z","repository":{"id":54985659,"uuid":"64608834","full_name":"JuliaArrays/CatIndices.jl","owner":"JuliaArrays","description":"Julia package for indices-aware array concatenation and growth","archived":false,"fork":false,"pushed_at":"2024-04-08T07:31:49.000Z","size":34,"stargazers_count":4,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-13T20:17:25.526Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JuliaArrays.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-31T18:28:52.000Z","updated_at":"2023-04-05T20:56:21.000Z","dependencies_parsed_at":"2024-11-09T03:27:25.453Z","dependency_job_id":"74aa0591-59b4-4f31-b99c-c7f92322170a","html_url":"https://github.com/JuliaArrays/CatIndices.jl","commit_stats":{"total_commits":26,"total_committers":5,"mean_commits":5.2,"dds":"0.23076923076923073","last_synced_commit":"6bb7a60531684b2b308d7d13c21d896929410a24"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaArrays%2FCatIndices.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaArrays%2FCatIndices.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaArrays%2FCatIndices.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaArrays%2FCatIndices.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuliaArrays","download_url":"https://codeload.github.com/JuliaArrays/CatIndices.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240142863,"owners_count":19754640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T03:25:42.155Z","updated_at":"2026-05-25T19:30:20.569Z","avatar_url":"https://github.com/JuliaArrays.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CatIndices\n\n[![Build Status](https://travis-ci.org/JuliaArrays/CatIndices.jl.svg?branch=master)](https://travis-ci.org/JuliaArrays/CatIndices.jl)\n[![codecov.io](http://codecov.io/github/JuliaArrays/CatIndices.jl/coverage.svg?branch=master)](http://codecov.io/github/JuliaArrays/CatIndices.jl?branch=master)\n[![PkgEval][pkgeval-img]][pkgeval-url]\n\nA Julia package for concatenating, growing, and shrinking arrays in\nways that allow control over the resulting axes.\n\n# Usage\n\n## BidirectionalVector\n\nThese vectors can grow or shrink from either end, and the axes\nupdate correspondingly. In this demo, pay careful attention to the\naxes at each step:\n\n```julia\njulia\u003e using CatIndices\n\njulia\u003e v = BidirectionalVector(rand(3))\nCatIndices.BidirectionalVector{Float64} with indices CatIndices.URange(1,3):\n 0.32572\n 0.250426\n 0.834728\n\njulia\u003e append!(v, rand(2))\nCatIndices.BidirectionalVector{Float64} with indices CatIndices.URange(1,5):\n 0.32572\n 0.250426\n 0.834728\n 0.388788\n 0.282573\n\njulia\u003e prepend!(v, rand(3))\nCatIndices.BidirectionalVector{Float64} with indices CatIndices.URange(-2,5):\n 0.992902\n 0.849368\n 0.189849\n 0.32572\n 0.250426\n 0.834728\n 0.388788\n 0.282573\n\njulia\u003e pop!(v)\n0.28257294456774673\n\njulia\u003e axes(v)\n(CatIndices.URange(-2,4),)\n\njulia\u003e popfirst!(v)\n0.9929020233076613\n\njulia\u003e axes(v)\n(CatIndices.URange(-1,4),)\n```\n\n`deleteat!` and `insert!` are not supported, since it is unclear\nwhether it should shrink/grow from the beginning or end.  To eliminate\nmany items at the beginning or end of the vector, this package exports\n`deletehead!(v, n)` and `deletetail!(v, n)`.\n\n# Concatenation\n\nThis is still mostly a TODO. For one-dimensional arrays (`AbstractVector`s),\n`PinIndices` provides a convenient interface for specifying which indices \"win\":\n\n```julia\njulia\u003e v = vcat(1:3, PinIndices(4:5), 6:10)\n10-element OffsetArray(::Array{Int64,1}, -2:7) with eltype Int64 with indices -2:7:\n  1\n  2\n  3\n  4\n  5\n  6\n  7\n  8\n  9\n 10\n\njulia\u003e v[1]\n4\n```\n\nThe array wrapped in `PinIndices` keeps its own indexes, and everything else adjusts to compensate.\n\n[pkgeval-img]: https://juliaci.github.io/NanosoldierReports/pkgeval_badges/C/CatIndices.svg\n[pkgeval-url]: https://juliaci.github.io/NanosoldierReports/pkgeval_badges/report.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaarrays%2Fcatindices.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliaarrays%2Fcatindices.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaarrays%2Fcatindices.jl/lists"}