@@ -160,7 +160,11 @@ function update_kwargs_and_metadata!(dict, kwargs, a, def, indices, type, var,
160160 Expr (:(:: ), a,
161161 Expr (:curly , :Union , :Nothing , Expr (:curly , :AbstractArray , vartype))),
162162 nothing ))
163- push! (where_types, :($ vartype <: $type ))
163+ if ! isnothing (meta) && haskey (meta, VariableUnit)
164+ push! (where_types, vartype)
165+ else
166+ push! (where_types, :($ vartype <: $type ))
167+ end
164168 dict[:kwargs ][getname (var)] = Dict (:value => def, :type => AbstractArray{type})
165169 end
166170 if dict[varclass] isa Vector
@@ -624,10 +628,20 @@ function convert_units(varunits::DynamicQuantities.Quantity, value)
624628 DynamicQuantities. SymbolicUnits. as_quantity (varunits), value))
625629end
626630
631+ function convert_units (varunits:: DynamicQuantities.Quantity , value:: AbstractArray{T} ) where T
632+ DynamicQuantities. ustrip .(DynamicQuantities. uconvert .(
633+ DynamicQuantities. SymbolicUnits. as_quantity (varunits), value))
634+ end
635+
627636function convert_units (varunits:: Unitful.FreeUnits , value)
628637 Unitful. ustrip (varunits, value)
629638end
630639
640+ function convert_units (varunits:: Unitful.FreeUnits , value:: AbstractArray{T} ) where T
641+ Unitful. ustrip .(varunits, value)
642+ end
643+
644+
631645function parse_variable_arg (dict, mod, arg, varclass, kwargs, where_types)
632646 vv, def, metadata_with_exprs = parse_variable_def! (
633647 dict, mod, arg, varclass, kwargs, where_types)
0 commit comments