diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c84ec3e4..1df7b9acb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - julia-version: ["1.6", "1.10", "~1.11.0-0"] + julia-version: ["lts", "1", "pre"] os: [ubuntu-latest, macOS-latest] group: - 'test_manifolds' diff --git a/.github/workflows/documenter.yml b/.github/workflows/documenter.yml index 0ac7acf6c..4a1274035 100644 --- a/.github/workflows/documenter.yml +++ b/.github/workflows/documenter.yml @@ -17,7 +17,7 @@ jobs: version: "1.4.551" - uses: julia-actions/setup-julia@latest with: - version: "1.10" + version: "1" - name: Julia Cache uses: julia-actions/cache@v2 - name: Cache Quarto diff --git a/NEWS.md b/NEWS.md index 4517fcd05..10c2479bd 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.10.8] – unreleased + +### Changed + +* Minimum Julia version is now 1.10 (the LTS which replaced 1.6) + ## [0.10.7] – 2024-11-16 ### Added diff --git a/Project.toml b/Project.toml index 033aa9bfa..3ab0bb342 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Manifolds" uuid = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e" authors = ["Seth Axen ", "Mateusz Baran ", "Ronny Bergmann ", "Antoine Levitt "] -version = "0.10.7" +version = "0.10.8" [deps] Einsum = "b7d42ee7-0b51-5a75-98ca-779d3107e4c0" @@ -14,7 +14,6 @@ Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a" MatrixEquations = "99c1a7ee-ab34-5fd5-8076-27c950a045f4" Quaternions = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -Requires = "ae029012-a4dd-5104-9daa-d747884805df" SimpleWeightedGraphs = "47aef6b3-ad0c-573a-a1e2-d07658019622" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" @@ -67,13 +66,12 @@ Quaternions = "0.5, 0.6, 0.7" Random = "1.6" RecipesBase = "1.1" RecursiveArrayTools = "2, 3" -Requires = "0.5, 1" SimpleWeightedGraphs = "1.2" SpecialFunctions = "0.8, 0.9, 0.10, 1.0, 2" StaticArrays = "1.4.3" Statistics = "1.6" StatsBase = "0.32, 0.33, 0.34" -julia = "1.6" +julia = "1.10" [extras] BoundaryValueDiffEq = "764a87c0-6b3e-53db-9096-fe964310641d" diff --git a/ext/ManifoldsBoundaryValueDiffEqExt.jl b/ext/ManifoldsBoundaryValueDiffEqExt.jl index 64a03ff01..fd0aeac82 100644 --- a/ext/ManifoldsBoundaryValueDiffEqExt.jl +++ b/ext/ManifoldsBoundaryValueDiffEqExt.jl @@ -1,24 +1,12 @@ module ManifoldsBoundaryValueDiffEqExt -if isdefined(Base, :get_extension) - using Manifolds - using ManifoldsBase +using Manifolds +using ManifoldsBase - using Manifolds: affine_connection - import Manifolds: solve_chart_log_bvp, estimate_distance_from_bvp +using Manifolds: affine_connection +import Manifolds: solve_chart_log_bvp, estimate_distance_from_bvp - using BoundaryValueDiffEq -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..ManifoldsBase - - using ..Manifolds: affine_connection - import ..Manifolds: solve_chart_log_bvp, estimate_distance_from_bvp - - using ..BoundaryValueDiffEq -end +using BoundaryValueDiffEq function chart_log_problem!(du, u, params, t) M, A, i = params diff --git a/ext/ManifoldsDistributionsExt/ManifoldsDistributionsExt.jl b/ext/ManifoldsDistributionsExt/ManifoldsDistributionsExt.jl index d068a23e5..7b97813b8 100644 --- a/ext/ManifoldsDistributionsExt/ManifoldsDistributionsExt.jl +++ b/ext/ManifoldsDistributionsExt/ManifoldsDistributionsExt.jl @@ -1,38 +1,19 @@ module ManifoldsDistributionsExt -if isdefined(Base, :get_extension) - using Manifolds - using Distributions - using Random - using LinearAlgebra +using Manifolds +using Distributions +using Random +using LinearAlgebra - import Manifolds: - normal_rotation_distribution, - normal_tvector_distribution, - projected_distribution, - uniform_distribution +import Manifolds: + normal_rotation_distribution, + normal_tvector_distribution, + projected_distribution, + uniform_distribution - using Manifolds: get_iterator, get_parameter, _read, _write +using Manifolds: get_iterator, get_parameter, _read, _write - using RecursiveArrayTools: ArrayPartition -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..Distributions - using ..Random - using ..LinearAlgebra - - import ..Manifolds: - normal_rotation_distribution, - normal_tvector_distribution, - projected_distribution, - uniform_distribution - - using ..Manifolds: get_iterator, get_parameter, _read, _write - - using ..RecursiveArrayTools: ArrayPartition -end +using RecursiveArrayTools: ArrayPartition include("distributions.jl") include("distributions_for_manifolds.jl") diff --git a/ext/ManifoldsHybridArraysExt.jl b/ext/ManifoldsHybridArraysExt.jl index ed7b2ada0..7ca6f41fa 100644 --- a/ext/ManifoldsHybridArraysExt.jl +++ b/ext/ManifoldsHybridArraysExt.jl @@ -1,28 +1,14 @@ module ManifoldsHybridArraysExt -if isdefined(Base, :get_extension) - using Manifolds - using ManifoldsBase +using Manifolds +using ManifoldsBase - using Manifolds: PowerManifoldMultidimensional - using Manifolds: rep_size_to_colons +using Manifolds: PowerManifoldMultidimensional +using Manifolds: rep_size_to_colons - using HybridArrays +using HybridArrays - import Manifolds: _read -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..ManifoldsBase - - using ..Manifolds: PowerManifoldMultidimensional - using ..Manifolds: rep_size_to_colons - - using ..HybridArrays - - import ..Manifolds: _read -end +import Manifolds: _read Base.@propagate_inbounds @inline function _read( ::PowerManifoldMultidimensional, diff --git a/ext/ManifoldsNLsolveExt.jl b/ext/ManifoldsNLsolveExt.jl index 7661526f5..b5d2f13d9 100644 --- a/ext/ManifoldsNLsolveExt.jl +++ b/ext/ManifoldsNLsolveExt.jl @@ -1,18 +1,9 @@ module ManifoldsNLsolveExt -if isdefined(Base, :get_extension) - using Manifolds - using ManifoldsBase +using Manifolds +using ManifoldsBase - using NLsolve: NLsolve -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..ManifoldsBase - - using ..NLsolve: NLsolve -end +using NLsolve: NLsolve @doc raw""" inverse_retract(M, p, q method::NLSolveInverseRetraction; kwargs...) diff --git a/ext/ManifoldsOrdinaryDiffEqDiffEqCallbacksExt.jl b/ext/ManifoldsOrdinaryDiffEqDiffEqCallbacksExt.jl index da3971d75..07b34da43 100644 --- a/ext/ManifoldsOrdinaryDiffEqDiffEqCallbacksExt.jl +++ b/ext/ManifoldsOrdinaryDiffEqDiffEqCallbacksExt.jl @@ -1,38 +1,19 @@ module ManifoldsOrdinaryDiffEqDiffEqCallbacksExt -if isdefined(Base, :get_extension) - using Manifolds - using Manifolds: - IntegratorTerminatorNearChartBoundary, - affine_connection, - get_chart_index, - transition_map!, - transition_map_diff! - import Manifolds: solve_chart_exp_ode, solve_chart_parallel_transport_ode - using ManifoldsBase +using Manifolds +using Manifolds: + IntegratorTerminatorNearChartBoundary, + affine_connection, + get_chart_index, + transition_map!, + transition_map_diff! +import Manifolds: solve_chart_exp_ode, solve_chart_parallel_transport_ode +using ManifoldsBase - using DiffEqCallbacks - using OrdinaryDiffEq: OrdinaryDiffEq, SciMLBase, Rodas5, AutoVern9, ODEProblem, solve +using DiffEqCallbacks +using OrdinaryDiffEq: OrdinaryDiffEq, SciMLBase, Rodas5, AutoVern9, ODEProblem, solve - using RecursiveArrayTools: ArrayPartition -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..Manifolds: - IntegratorTerminatorNearChartBoundary, - affine_connection, - get_chart_index, - transition_map!, - transition_map_diff! - import ..Manifolds: solve_chart_exp_ode, solve_chart_parallel_transport_ode - using ..ManifoldsBase - - using ..DiffEqCallbacks - using ..OrdinaryDiffEq: OrdinaryDiffEq, SciMLBase, Rodas5, AutoVern9, ODEProblem, solve - - using ..RecursiveArrayTools: ArrayPartition -end +using RecursiveArrayTools: ArrayPartition """ (int_term::IntegratorTerminatorNearChartBoundary)(u, t, integrator) diff --git a/ext/ManifoldsOrdinaryDiffEqExt.jl b/ext/ManifoldsOrdinaryDiffEqExt.jl index c911f6c04..c964ec69b 100644 --- a/ext/ManifoldsOrdinaryDiffEqExt.jl +++ b/ext/ManifoldsOrdinaryDiffEqExt.jl @@ -1,32 +1,16 @@ module ManifoldsOrdinaryDiffEqExt -if isdefined(Base, :get_extension) - using ManifoldsBase - using ManifoldsBase: TraitList +using ManifoldsBase +using ManifoldsBase: TraitList - using Manifolds - import Manifolds: exp!, solve_exp_ode - using Manifolds: @einsum +using Manifolds +import Manifolds: exp!, solve_exp_ode +using Manifolds: @einsum - using ManifoldDiff: default_differential_backend +using ManifoldDiff: default_differential_backend - using OrdinaryDiffEq: ODEProblem, AutoVern9, Rodas5, solve - using StaticArrays -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..ManifoldsBase - using ..ManifoldsBase: TraitList - - using ..Manifolds - import ..Manifolds: exp!, solve_exp_ode - using ..Manifolds: @einsum - - using ..ManifoldDiff: default_differential_backend - - using ..OrdinaryDiffEq: ODEProblem, AutoVern9, Rodas5, solve - using ..StaticArrays -end +using OrdinaryDiffEq: ODEProblem, AutoVern9, Rodas5, solve +using StaticArrays function solve_exp_ode( M::AbstractManifold, diff --git a/ext/ManifoldsRecipesBaseExt.jl b/ext/ManifoldsRecipesBaseExt.jl index 65068c455..d99ced558 100644 --- a/ext/ManifoldsRecipesBaseExt.jl +++ b/ext/ManifoldsRecipesBaseExt.jl @@ -1,20 +1,10 @@ module ManifoldsRecipesBaseExt -if isdefined(Base, :get_extension) - using Manifolds - using Manifolds: TypeParameter +using Manifolds +using Manifolds: TypeParameter - using Colors: RGBA - using RecipesBase: @recipe, @series -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..Manifolds: TypeParameter - - using ..RecipesBase: @recipe, @series - using ..Colors: RGBA -end +using Colors: RGBA +using RecipesBase: @recipe, @series # # Defaults diff --git a/ext/ManifoldsRecursiveArrayToolsExt/ManifoldsRecursiveArrayToolsExt.jl b/ext/ManifoldsRecursiveArrayToolsExt/ManifoldsRecursiveArrayToolsExt.jl index 3065773cd..4420dacb8 100644 --- a/ext/ManifoldsRecursiveArrayToolsExt/ManifoldsRecursiveArrayToolsExt.jl +++ b/ext/ManifoldsRecursiveArrayToolsExt/ManifoldsRecursiveArrayToolsExt.jl @@ -1,122 +1,61 @@ module ManifoldsRecursiveArrayToolsExt -if isdefined(Base, :get_extension) - using Manifolds - using RecursiveArrayTools: ArrayPartition - using StaticArrays - using LinearAlgebra +using Manifolds +using RecursiveArrayTools: ArrayPartition +using StaticArrays +using LinearAlgebra - using Base.Iterators: repeated +using Base.Iterators: repeated - using Manifolds: - ActionDirectionAndSide, - ColumnwiseMultiplicationAction, - FiberBundleBasisData, - FiberBundleProductVectorTransport, - LeftColumnwiseSpecialEuclideanAction, - LeftInvariantRepresentation, - PowerManifoldNestedReplacing, - SpecialEuclideanIdentity, - SpecialEuclideanInGeneralLinear, - TangentVectorRepresentation, - TypeParameter +using Manifolds: + ActionDirectionAndSide, + ColumnwiseMultiplicationAction, + FiberBundleBasisData, + FiberBundleProductVectorTransport, + LeftColumnwiseSpecialEuclideanAction, + LeftInvariantRepresentation, + PowerManifoldNestedReplacing, + SpecialEuclideanIdentity, + SpecialEuclideanInGeneralLinear, + TangentVectorRepresentation, + TypeParameter - using Manifolds: - bundle_transport_tangent_direction, bundle_transport_tangent_to, _get_parameter +using Manifolds: + bundle_transport_tangent_direction, bundle_transport_tangent_to, _get_parameter - import Manifolds: - adjoint_Jacobi_field, - allocate, - allocate_result, - apply, - apply!, - apply_diff, - apply_diff!, - apply_diff_group!, - _common_product_translate_diff, - compose, - _compose, - exp_lie, - get_coordinates, - get_vector, - get_vectors, - hat, - identity_element, - inverse_apply, - inverse_apply_diff, - inverse_translate, - inverse_translate_diff, - isapprox, - jacobi_field, - lie_bracket, - optimal_alignment, - project, - translate, - translate_diff, - vector_representation, - _vector_transport_direction, - _vector_transport_to, - vee -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..RecursiveArrayTools: ArrayPartition - using ..StaticArrays - using ..LinearAlgebra - - using ..Base.Iterators: repeated - - using ..Manifolds: - bundle_transport_tangent_direction, bundle_transport_tangent_to, _get_parameter - - using ..Manifolds: - ActionDirectionAndSide, - ColumnwiseMultiplicationAction, - FiberBundleBasisData, - FiberBundleProductVectorTransport, - LeftColumnwiseSpecialEuclideanAction, - LeftInvariantRepresentation, - PowerManifoldNestedReplacing, - SpecialEuclideanIdentity, - SpecialEuclideanInGeneralLinear, - TangentVectorRepresentation, - TypeParameter - - import ..Manifolds: - adjoint_Jacobi_field, - allocate, - allocate_result, - apply, - apply!, - apply_diff, - apply_diff!, - apply_diff_group!, - _common_product_translate_diff, - compose, - _compose, - exp_lie, - get_coordinates, - get_vector, - get_vectors, - hat, - identity_element, - inverse_apply, - inverse_apply_diff, - inverse_translate, - inverse_translate_diff, - isapprox, - jacobi_field, - lie_bracket, - optimal_alignment, - project, - translate, - translate_diff, - vector_representation, - _vector_transport_direction, - _vector_transport_to, - vee -end +import Manifolds: + adjoint_Jacobi_field, + allocate, + allocate_result, + apply, + apply!, + apply_diff, + apply_diff!, + apply_diff_group!, + _common_product_translate_diff, + compose, + _compose, + exp_lie, + get_coordinates, + get_vector, + get_vectors, + hat, + identity_element, + inverse_apply, + inverse_apply_diff, + inverse_translate, + inverse_translate_diff, + isapprox, + jacobi_field, + lie_bracket, + optimal_alignment, + project, + translate, + translate_diff, + vector_representation, + _vector_transport_direction, + _vector_transport_to, + vee function allocate( ::PowerManifoldNestedReplacing, diff --git a/ext/ManifoldsTestExt/ManifoldsTestExt.jl b/ext/ManifoldsTestExt/ManifoldsTestExt.jl index 255551850..eee169ad4 100644 --- a/ext/ManifoldsTestExt/ManifoldsTestExt.jl +++ b/ext/ManifoldsTestExt/ManifoldsTestExt.jl @@ -1,30 +1,14 @@ module ManifoldsTestExt -if isdefined(Base, :get_extension) - using Manifolds - using ManifoldsBase +using Manifolds +using ManifoldsBase - import Manifolds: - test_manifold, test_group, test_action, test_parallel_transport, find_eps - using Manifolds: RieszRepresenterCotangentVector, get_chart_index +import Manifolds: test_manifold, test_group, test_action, test_parallel_transport, find_eps +using Manifolds: RieszRepresenterCotangentVector, get_chart_index - using Random: MersenneTwister, rand! +using Random: MersenneTwister, rand! - using Test: Test -else - # imports need to be relative for Requires.jl-based workflows: - # https://github.com/JuliaArrays/ArrayInterface.jl/pull/387 - using ..Manifolds - using ..ManifoldsBase - - import ..Manifolds: - test_manifold, test_group, test_action, test_parallel_transport, find_eps - using ..Manifolds: RieszRepresenterCotangentVector, get_chart_index - - using ..Random: MersenneTwister, rand! - - using ..Test: Test -end +using Test: Test include("tests_general.jl") include("tests_group.jl") diff --git a/src/Manifolds.jl b/src/Manifolds.jl index cf1aea2d0..73ed5d7d9 100644 --- a/src/Manifolds.jl +++ b/src/Manifolds.jl @@ -358,7 +358,6 @@ using Markdown: @doc_str using MatrixEquations: lyapc, sylvc using Quaternions: Quaternions using Random -using Requires using SimpleWeightedGraphs: AbstractSimpleWeightedGraph, get_weight using SpecialFunctions using StaticArrays @@ -612,50 +611,6 @@ function __init__() end end - @static if !isdefined(Base, :get_extension) - @require OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" begin - include("../ext/ManifoldsOrdinaryDiffEqExt.jl") - end - - @require BoundaryValueDiffEq = "764a87c0-6b3e-53db-9096-fe964310641d" begin - include("../ext/ManifoldsBoundaryValueDiffEqExt.jl") - end - - @require NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" begin - include("../ext/ManifoldsNLsolveExt.jl") - end - - @require RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" begin - @require Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" begin - include("../ext/ManifoldsRecipesBaseExt.jl") - end - end - - @require Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" begin - include("../ext/ManifoldsTestExt/ManifoldsTestExt.jl") - end - - @require RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" begin - include( - "../ext/ManifoldsRecursiveArrayToolsExt/ManifoldsRecursiveArrayToolsExt.jl", - ) - - @require Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" begin - include("../ext/ManifoldsDistributionsExt/ManifoldsDistributionsExt.jl") - end - - @require OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" begin - @require DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def" begin - include("../ext/ManifoldsOrdinaryDiffEqDiffEqCallbacksExt.jl") - end - end - end - - @require HybridArrays = "1baab800-613f-4b0a-84e4-9cd3431bfbb9" begin - include("../ext/ManifoldsHybridArraysExt.jl") - end - end - return nothing end