Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

DIT errors with custom types in contexts

Abierto Apto para principiantes
#1,069 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
julia
Área
testing

Línea de trabajo

Empieza en DifferentiationInterfaceTest/src/scenarios/scenario.jl:78, donde zero_contexts gestiona DI.Constant, y reproduce la llamada mostrada a DIT.Scenario con MyStruct. Rastrea cómo se construyen los valores cero del contexto y añade cobertura de regresión para este contexto personalizado; se considera terminado cuando el escenario de ejemplo se ejecuta sin el error mostrado zero(::MyStruct).

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

import DifferentiationInterface as DI
import DifferentiationInterfaceTest as DIT

struct MyStruct{V}
    v::V
end
ms = MyStruct(randn(2))
f(x, ms) = sum(x .* ms.v)

using ForwardDiff
DI.gradient(f, DI.AutoForwardDiff(), randn(2), DI.Constant(ms)) # This is fine

DIT.Scenario{:gradient,:out}(f, randn(2), DI.Constant(ms)) # This errors

Error:

julia> DIT.Scenario{:gradient,:out}(f, randn(2), DI.Constant(ms))
ERROR: MethodError: no method matching zero(::MyStruct{Vector{Float64}})
The function `zero` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  zero(::Type{Union{}}, Any...)
   @ Base number.jl:359
  zero(::Type{LibGit2.GitHash})
   @ LibGit2 ~/.julia/juliaup/julia-1.13.0+0.aarch64.apple.darwin14/Julia-1.13.app/Contents/Resources/julia/share/julia/stdlib/v1.13/LibGit2/src/oid.jl:221
  zero(::Type{Pkg.Resolve.VersionWeight})
   @ Pkg ~/.julia/juliaup/julia-1.13.0+0.aarch64.apple.darwin14/Julia-1.13.app/Contents/Resources/julia/share/julia/stdlib/v1.13/Pkg/src/Resolve/versionweights.jl:15
  ...

Stacktrace:
 [1] call_composed
   @ ./operators.jl:1110 [inlined]
 [2] (::ComposedFunction{…})(x::DifferentiationInterface.Constant{…}; kw::@Kwargs{})
   @ Base ./operators.jl:1107
 [3] map
   @ ./tuple.jl:354 [inlined]
 [4] zero_contexts(contexts::DifferentiationInterface.Constant{MyStruct{Vector{Float64}}})
   @ DifferentiationInterfaceTest ~/jl/DifferentiationInterface.jl/DifferentiationInterfaceTest/src/scenarios/scenario.jl:78
 [5] (DifferentiationInterfaceTest.Scenario{…})(f::Function, x::Vector{…}, contexts::DifferentiationInterface.Constant{…})
   @ DifferentiationInterfaceTest ~/jl/DifferentiationInterface.jl/DifferentiationInterfaceTest/src/scenarios/scenario.jl:81
 [6] top-level scope
   @ REPL[19]:1
 [7] top-level scope
   @ REPL:1
Some type information was truncated. Use `show(err)` to see complete types.
Lenguaje dominante
Julia
Estrellas
314
Forks
36
Merge medio
2 h 14 min
PR fusionados (30 d)
3

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaDiff/DifferentiationInterface.jl

Todos los issues de JuliaDiff/DifferentiationInterface.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.