[BUG] Failure To Generate `from_json` Method Using Defined Schema Objects
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con src/json.jl e src/client.jl, i file OpenAPI mostrati nei trace dello stack, e riproduci il fallimento usando l’MWE di IPUMS.jl e gli oggetti schema generati. Confronta i metodi generati con i metodi auto-piratati in IPUMS.jl/src/piracy.jl. Il lavoro è completato quando i client generati possono deserializzare gli oggetti schema segnalati senza quei metodi aggiuntivi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi folks,
I am seeing an error in my IPUMS.jl package where when I used the OpenAPI definition for IPUMS (also see here for the reference documentation: https://developer.ipums.org/docs/v2/reference/nhgis/), the methods to handle from_json definitions being generated by OpenAPI do not exist to handle the schema objects defined in the original OpenAPI definition for IPUMS.
Instead, what I am forced to do is to basically, self-pirate these generated methods within my package to get things working. Otherwise, I get errors such as these:
ERROR: MethodError: no method matching from_json(::Vector{IPUMS.TimeSeriesTableSimple}, ::Dict{String, Any})
Closest candidates are:
from_json(::Vector{IPUMS.DatasetSimple}, ::Any)
@ IPUMS ~/FOSS/IPUMS.jl/src/piracy.jl:7
from_json(::Vector{IPUMS.TimeSeriesTableFull}, ::Any)
@ IPUMS ~/FOSS/IPUMS.jl/src/piracy.jl:12
from_json(::Vector{IPUMS.Shapefile}, ::Any)
@ IPUMS ~/FOSS/IPUMS.jl/src/piracy.jl:16
...
Stacktrace:
[1] from_json(::Type{Vector{IPUMS.TimeSeriesTableSimple}}, json::Dict{String, Any})
@ OpenAPI ~/.julia/packages/OpenAPI/GMeGW/src/json.jl:40
[2] response(::Type{Vector{IPUMS.TimeSeriesTableSimple}}, data::Dict{String, Any})
@ OpenAPI.Clients ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:428
[3] response(::Type{Vector{IPUMS.TimeSeriesTableSimple}}, is_json::Bool, body::Vector{UInt8})
@ OpenAPI.Clients ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:417
[4] response(::Type{Vector{IPUMS.TimeSeriesTableSimple}}, resp::Downloads.Response, body::Vector{UInt8})
@ OpenAPI.Clients ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:412
[5] exec(ctx::OpenAPI.Clients.Ctx, stream_to::Nothing)
@ OpenAPI.Clients ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:634
[6] exec
@ ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:614 [inlined]
[7] #metadata_nhgis_time_series_tables_get#61
@ ~/FOSS/IPUMS.jl/src/apis/api_DefaultApi.jl:315 [inlined]
[8] metadata_nhgis_time_series_tables_get(_api::DefaultApi, version::String)
@ IPUMS ~/FOSS/IPUMS.jl/src/apis/api_DefaultApi.jl:313
[9] top-level scope
@ REPL[11]:1
or
ERROR: MethodError: Cannot `convert` an object of type Vector{Any} to an object of type IPUMS.DatasetFullBreakdowns
Closest candidates are:
convert(::Type{T}, ::T) where T
@ Base Base.jl:84
convert(::Type{T}, ::Dict{String, Any}) where T<:OpenAPI.APIModel
@ OpenAPI ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:715
convert(::Type{T}, ::Nothing) where T<:OpenAPI.APIModel
@ OpenAPI ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:716
...
Stacktrace:
[1] convert(::Type{Union{Nothing, IPUMS.DatasetFullBreakdowns}}, x::Vector{Any})
@ Base ./some.jl:37
[2] from_json(o::IPUMS.DatasetFull, name::Symbol, v::Vector{Any})
@ OpenAPI ~/.julia/packages/OpenAPI/GMeGW/src/json.jl:103
[3] from_json(o::IPUMS.DatasetFull, json::Dict{String, Any})
@ OpenAPI ~/.julia/packages/OpenAPI/GMeGW/src/json.jl:58
[4] from_json
@ ~/.julia/packages/OpenAPI/GMeGW/src/json.jl:40 [inlined]
[5] response
@ ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:428 [inlined]
[6] response(::Type{IPUMS.DatasetFull}, is_json::Bool, body::Vector{UInt8})
@ OpenAPI.Clients ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:417
[7] response(::Type{IPUMS.DatasetFull}, resp::Downloads.Response, body::Vector{UInt8})
@ OpenAPI.Clients ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:412
[8] exec(ctx::OpenAPI.Clients.Ctx, stream_to::Nothing)
@ OpenAPI.Clients ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:634
[9] exec
@ ~/.julia/packages/OpenAPI/GMeGW/src/client.jl:614 [inlined]
[10] #metadata_nhgis_datasets_dataset_get#52
@ ~/FOSS/IPUMS.jl/src/apis/api_DefaultApi.jl:216 [inlined]
[11] metadata_nhgis_datasets_dataset_get(_api::DefaultApi, dataset::String, version::String)
@ IPUMS ~/FOSS/IPUMS.jl/src/apis/api_DefaultApi.jl:214
[12] top-level scope
@ REPL[13]:1
Here's a mostly working MWE minus an API key (that you can generate here):
julia> using IPUMS
julia> using OpenAPI.Clients
julia> import OpenAPI.Clients: Client
julia> client = Client("https://api.ipums.org", headers = Dict("Authorization" => "API_KEY")
julia> api = DefaultApi(client)
And this would be after you generate the API with the openapi-cli tool. Happy to provide further information.
- Lingua principale
- Julia
- Stelle
- 56
- Fork
- 16
- Merge medio
- 1g 51m
- PR unite (30g)
- 12
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaComputing/OpenAPI.jl
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
JuliaComputing/OpenAPI.jl#128 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
JuliaComputing/OpenAPI.jl#118 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
JuliaComputing/OpenAPI.jl#117 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
JuliaComputing/OpenAPI.jl#113 ·
I maintainer di solito rispondono entro 1 giorno
-
stale
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
JuliaComputing/OpenAPI.jl#87 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di JuliaComputing/OpenAPI.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
`default_linear_interpolation` is called with its arguments swapped, so its opt-outs never applyAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
SciML/OrdinaryDiffEq.jl#4684 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
SciML/Evolutionary.jl#182 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
jmejia8/Metaheuristics.jl#130 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
exercism/julia-test-runner#164 · 1 commento ·