sometimes dicts are passed to constructors as `Dict{String,Any}`
まだ誰も着手していません。
評価
調査の方向性
まず Julia MWE を実行し、StructTypes.jl:267 のコンストラクター呼び出しを structs.jl:342 にある JSON3 の読み取りパスと併せて追跡します。Outer と Inner が辞書キーをどのように受け取るかを比較し、報告されたネストされた構築のケースで、Dict{String,Any} と Dict{Symbol,Any} 用の別々のコンストラクターがもはや必要ないことを確認します。
索引モデルが issue の本文から書いたものです。
説明
I started out thinking this only happened for nested types, but as I set out to make a MWE, I got even more confused. Here it is
using JSON3, StructTypes
struct Inner
a::Int
end
Inner(dct) = Inner(dct[:a])
StructTypes.StructType(::Type{Inner}) = StructTypes.DictType()
struct Outer
I::Inner
end
Outer(dct) = Outer(dct[:I])
StructTypes.StructType(::Type{Outer}) = StructTypes.DictType()
json = JSON3.write(Dict(:I=>Dict(:a=>1)))
JSON3.read(json, Outer)
gives me
ERROR: LoadError: KeyError: key :I not found
Stacktrace:
[1] getindex at ./dict.jl:467 [inlined]
[2] Outer(::Dict{String,Any}) at /home/expandingman/src/scrap.jl:13 (repeats 2 times)
[3] #construct#2 at /home/expandingman/.julia/packages/StructTypes/CpLmq/src/StructTypes.jl:267 [in
lined]
[4] construct at /home/expandingman/.julia/packages/StructTypes/CpLmq/src/StructTypes.jl:267 [inlin
ed]
[5] read(::StructTypes.DictType, ::Base.CodeUnits{UInt8,String}, ::Int64, ::Int64, ::UInt8, ::Type{
Outer}, ::Type{Symbol}, ::Type{Any}; kw::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),
Tuple{}}}) at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:342
[6] read at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:285 [inlined]
[7] #read#30 at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:279 [inlined]
[8] read at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:279 [inlined]
[9] read(::String, ::Type{Outer}; kw::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tu
ple{}}}) at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:34
[10] read(::String, ::Type{Outer}) at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl
:33
[11] top-level scope at /home/expandingman/src/scrap.jl:19
[12] include(::String) at ./client.jl:457
[13] top-level scope at REPL[3]:1
in expression starting at /home/expandingman/src/scrap.jl:19
Usually I would hit this kind of error with Inner where it would try to construct from Dict("a"=>1), I don't know why I suddenly have this problem with the outer one.
As a workaround, it seems that right now one has to define constructors for both Dict{String,Any} and Dict{Symbol,Any} which seems wrong.
- 主要言語
- Julia
- スター
- 86
- フォーク
- 21
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaData/StructTypes.jl のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
JuliaData/StructTypes.jl#104 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
JuliaData/StructTypes.jl#102 · コメント 1 件 ·
-
Register v1.11.0?オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
JuliaData/StructTypes.jl#98 · コメント 2 件 · リアクション 1 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 30/100
JuliaData/StructTypes.jl#96 · コメント 1 件 ·
-
`StructTypes.x` is not defined対応中かも @sunoru が 1124 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
JuliaData/StructTypes.jl#92 · コメント 3 件 ·
JuliaData/StructTypes.jl の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
SciML/SciMLSensitivity.jl#1703 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Cannot set point coordinates with `Range`s (or arbitrary arrays) using `Makie.Resampler` in `heatmap`対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 2 日以内に返信
-
Document that `nullspace` returns orthonormalized vectors対応中かも @thchr が今日担当しました。 オープンdocs
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
JuliaLang/LinearAlgebra.jl#1754 · コメント 2 件 · リアクション 1 件 ·
メンテナーはふだん 2 日以内に返信
-
documentation
難易度 1/5 1時間未満 初心者へのやさしさ 66/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
JuliaPy/CondaPkg.jl#232 ·