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
Document EXPy's v1.0 public API surface and ship v1.0 as a pip-installable Python package. Rewrite the README to cover the full surface declared in ADR-0013 (packaging) and ADR-0014 (surface refinements): the eight Namespace members, the six-method EXIProcessor API (feature-gated via hasattr), the eight *Processor CLI binaries (each with six modes where supported), the public expy.v2gjson constructors, the typed EncodeError/DecodeError attribute contract, and the per-Namespace top-level envelope split. Add a CHANGELOG.md entry for v1.0 enumerating the surface. Tag v1.0 on main.
References: ADR-0013 (packaging), ADR-0014 (surface refinements). ADR-0003 and ADR-0012 are historical and superseded for v1.0 by these two.
Acceptance criteria
pyproject.toml ships an installable expy package (scikit-build-core or equivalent); pip install . in a fresh venv produces a working installation with the eight per-Namespace .so files bundled as package data
Public import paths are from expy import EXIProcessor, Namespace and from expy.v2gjson import sap, din, iso2, iso20_common, iso20_ac, iso20_dc, iso20_wpt, iso20_acdp
Namespace (renamed from ProtocolEnum) is documented with all eight members: SAP, DIN, ISO2, ISO20_COMMON, ISO20_AC, ISO20_DC, ISO20_WPT, ISO20_ACDP; EXIProcessor.__init__ takes namespace: Namespace
README documents the six-method EXIProcessor API (encode / decode for Document / Fragment / XmldsigFragment roots) and the hasattr-based feature-detection idiom for Fragment / XmldsigFragment on SAP and DIN
README documents the eight *Processor CLI binaries and their six modes (--encode, --decode, --encode-fragment, --decode-fragment, --encode-xmldsig, --decode-xmldsig), with the feature-gated subset on SAP and DIN absent from --help
README documents expy.v2gjson as public, with a naming-conventions note that identifiers mirror libcbv2g verbatim (non-PEP-8 casing such as costKindType, RelativeTimeIntervalType, EVSE_NotReady) and a pointer to per-file ruffN801,N802,N806 suppressions for strict-linting consumers
README documents the EVerest JSON shape ({"bytes": [...], "bytesLen": N}, "isUsed": true) and the per-Namespace top-level envelope split: DIN and ISO-2 use V2G_Message(Header=..., Body=...); SAP and the five ISO-20 Namespaces use raw {"<MessageName>": ...} or {"Body": {"<MessageName>": ...}}
CHANGELOG.md exists with a v1.0 entry enumerating the surface above
All Processor round-trip integration test suites pass on main
What to build
Document EXPy's v1.0 public API surface and ship
v1.0as a pip-installable Python package. Rewrite the README to cover the full surface declared in ADR-0013 (packaging) and ADR-0014 (surface refinements): the eightNamespacemembers, the six-methodEXIProcessorAPI (feature-gated viahasattr), the eight*ProcessorCLI binaries (each with six modes where supported), the publicexpy.v2gjsonconstructors, the typedEncodeError/DecodeErrorattribute contract, and the per-Namespace top-level envelope split. Add aCHANGELOG.mdentry for v1.0 enumerating the surface. Tagv1.0onmain.References: ADR-0013 (packaging), ADR-0014 (surface refinements). ADR-0003 and ADR-0012 are historical and superseded for v1.0 by these two.
Acceptance criteria
pyproject.tomlships an installableexpypackage (scikit-build-core or equivalent);pip install .in a fresh venv produces a working installation with the eight per-Namespace.sofiles bundled as package datafrom expy import EXIProcessor, Namespaceandfrom expy.v2gjson import sap, din, iso2, iso20_common, iso20_ac, iso20_dc, iso20_wpt, iso20_acdpNamespace(renamed fromProtocolEnum) is documented with all eight members:SAP,DIN,ISO2,ISO20_COMMON,ISO20_AC,ISO20_DC,ISO20_WPT,ISO20_ACDP;EXIProcessor.__init__takesnamespace: NamespaceEXIProcessorAPI (encode/decodefor Document / Fragment / XmldsigFragment roots) and thehasattr-based feature-detection idiom for Fragment / XmldsigFragment on SAP and DIN*ProcessorCLI binaries and their six modes (--encode,--decode,--encode-fragment,--decode-fragment,--encode-xmldsig,--decode-xmldsig), with the feature-gated subset on SAP and DIN absent from--helpexpy.v2gjsonas public, with a naming-conventions note that identifiers mirror libcbv2g verbatim (non-PEP-8 casing such ascostKindType,RelativeTimeIntervalType,EVSE_NotReady) and a pointer to per-fileruffN801,N802,N806suppressions for strict-linting consumersEncodeErrorandDecodeErrorcarryrc: int,namespace: str,root: Literal["exiDocument", "exiFragment", "xmldsigFragment"];str(e)remains informational{"bytes": [...], "bytesLen": N},"isUsed": true) and the per-Namespace top-level envelope split: DIN and ISO-2 useV2G_Message(Header=..., Body=...); SAP and the five ISO-20 Namespaces use raw{"<MessageName>": ...}or{"Body": {"<MessageName>": ...}}CHANGELOG.mdexists with a v1.0 entry enumerating the surface abovemainv1.0git tag created onmainBlocked by