You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Define a consistent contract for tabular results #26
Tabular functions currently return KeggTupleList or KeggGenesList, but the meaning and orientation of data varies between methods. Some parsers return vectors of columns while batched methods return vectors of rows. The result types are also not exported even though public functions return them.
Tables.jl should define the table contract so downstream packages can consume results without KEGGAPI.jl depending on DataFrames.jl.
Plan
Add Tables.jl as a dependency.
Introduce one exported, immutable result type containing request URL metadata and tabular column data.
Implement the Tables.jl column-access interface, including Tables.istable, Tables.columnaccess, Tables.columns, and Tables.schema.
Give every column a stable, unique Symbol name.
Use the same result type for conversion, DDI, list, find, link, and genomic-feature responses.
Correct conversion columns to source first and target second, matching KEGG's response order.
Support direct downstream conversion such as DataFrame(result).
Preserve .data and .colnames temporarily if practical, with a documented deprecation path.
Make empty responses valid tables with a known schema.
Tests
Check Tables.columntable and Tables.rowtable for every response shape.
Check column order, names, lengths, and element types.
Cover empty and batched responses.
Add a DataFrames.jl interoperability test as a test-only dependency if needed.
This changes the public result contract and may require a breaking release.
Activity
feat: move to Tables.jl for results
feat!: move to Tables.jl for results
fix: standardize tabular result rows
cvigilv commentedon Sep 17, 2026
Keeping as is currently, thinking on a redesign in the future is worth the time.