[BUG] Failure To Generate `from_json` Method Using Defined Schema Objects
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne mit src/json.jl und src/client.jl, den in den Stacktraces angezeigten OpenAPI-Dateien, und reproduziere den Fehler mit dem MWE von IPUMS.jl und den generierten Schemaobjekten. Vergleiche die generierten Methoden mit den von IPUMS.jl/src/piracy.jl selbst hineinkopierten Methoden. Als erledigt gilt die Aufgabe, wenn generierte Clients die gemeldeten Schemaobjekte ohne diese zusätzlichen Methoden deserialisieren können.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Julia
- Sterne
- 56
- Forks
- 16
- Ø Merge
- 1 T. 51 Min.
- Gemergte PRs (30 T.)
- 12
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus JuliaComputing/OpenAPI.jl
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
JuliaComputing/OpenAPI.jl#128 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
JuliaComputing/OpenAPI.jl#118 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
JuliaComputing/OpenAPI.jl#117 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
JuliaComputing/OpenAPI.jl#113 ·
Maintainer antworten meist innerhalb von 1 Tag
-
stale
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
JuliaComputing/OpenAPI.jl#87 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in JuliaComputing/OpenAPI.jl
Ähnliche Issues
-
add-on doc enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
JuliaGraphics/ColorTypes.jl#344 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
`enzymexla.linalg.lu` lowering fails for a tall matrix: the permutation is built with the pivot typeOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
EnzymeAD/Enzyme-JAX#3286 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 90/100
SciML/LinearSolve.jl#1359 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
EnzymeAD/ReactantNitro.jl#13 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
epiforecasts/BVDOutbreakSize#1009 ·
Maintainer antworten meist innerhalb von 1 Tag