Skip to content

Async full per-tag browse(): port the type-info tree builder to the async client #11

@ale-rinaldi

Description

@ale-rinaldi

Async full per-tag browse()

The sync browse() returns the full per-tag symbol tree (name + access-sequence + datatype) by combining the EXPLORE type-info container with the DB list and walking the type tree (#4). The async client (S7CommPlusAsyncClient) still has only the experimental shallow browse() (gijzelaerr#687), which uses _parse_explore_fields (one EXPLORE per DB, name/type per field) — not the type-info tree builder.

Goal

await client.browse() returns the same flat variable list as the sync client — {name, access_sequence, data_type, db_number} — by reusing the transport-agnostic s7/typeinfo.py parser/tree-builder and porting the sync Phase A–E orchestration (_s7commplus_client.browse()) to async.

Notes

  • s7/typeinfo.py performs no I/O and is fully reusable as-is; only the orchestration needs an async twin (the per-DB LID = 1 → type-info RID reads, the EXPLORE(ObjectOMSTypeInfoContainer) call, and the recombination into the tree).
  • This is a distinct concern from both the experimental shallow async browse and the async transport fix.

Depends on

Validation

Against a live S7-1500: await client.browse() yields the same variable count and the same spot-read results as the sync browse().

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions