Releases: techouse/qs_codec
Releases · techouse/qs_codec
1.3.2
1.3.2
- [CHORE] pin mypy<1.19 on PyPy to avoid new
librtbuild failures while keeping newer mypy on CPython
1.3.1
1.3.1
- [FEAT] add support for PyPy 3.8, 3.9, 3.10 and 3.11
1.3.0
1.3.0
- [FEAT] add
EncodeOptions.comma_compact_nulls, allowing omission ofNoneentries in lists when using theListFormat.COMMA. This results in cleaner output (e.g.,[True, False, None, True]becomes"true,false,true").
1.2.5
1.2.5
- [CHORE] add support for Python 3.14
- [CHORE] reinstate Python 3.8 support
1.2.4
1.2.4
- [FIX] encode booleans in lowercase to match JavaScript behavior
- [CHORE] add tests for boolean encoding and decoding parity
1.2.3
1.2.3
- [CHORE] add highlights section to README and docs with key features and usage notes
1.2.2
1.2.2
- [CHORE] update pyproject.toml with improved metadata, optional dev dependencies, and wheel build config
- [CHORE] add project logo to README and documentation
1.2.1
1.2.1
- [FIX] fix top-level dot splitting in keys to preserve encoded dots and handle degenerate cases
- [FIX] normalize percent-encoded dots in bracketed keys when
decode_dot_in_keysis enabled - [FIX] handle leading dot in keys by converting to bracket segment in
dot_to_bracket_top_level - [FIX] fix strict_depth enforcement to avoid raising on unterminated bracket groups in decode logic
- [FIX] fix dot-to-bracket decoding to preserve leading dots in consecutive dot sequences
- [FIX] fix percent-decoding to handle dot in keys and clarify top-level percent sequence handling
- [FIX] handle ambiguous '.]' in key decoding and prevent bracket segment overrun on closing brackets
- [CHORE]️ refactor
DecodeOptionsto support legacy decoders and add unified decode methods - [CHORE]️ update type annotations in
decode_options_testfor decoder andlegacy_decodersignatures - [CHORE] add tests for
DecodeOptionsdot-in-keys and custom decoder behaviors - [CHORE] add C# port (QsNet) parity tests for encoded dot behavior in
DecodeOptions - [CHORE] add tests for decoder precedence over
legacy_decoderand non-stringdecoderresults inDecodeOptions - [CHORE] add tests for dot encoding and decoding parity across
DecodeOptionsconfigurations - [CHORE] revise decode test to avoid duplicate dict key assertion and ensure decoder invocation for dot-encoded and bracketed keys
- [CHORE] add tests for
split_key_into_segmentsremainder handling and strict depth enforcement
1.2.0
1.2.0
- [FIX] preserve percent-encoded dots in keys during decoding
- [CHORE] refactor merge logic for improved readability and performance in utils
- [CHORE] optimize encoding logic for improved performance and clarity in encode_utils
- [CHORE] optimize decode logic for improved performance and clarity in decode_utils
- [CHORE] optimize key handling and object normalization for improved performance and clarity in encode.py
- [CHORE] optimize delimiter splitting and list parsing logic for improved performance and clarity in decode.py
- [CHORE] optimize proxy caching and dict hashing logic for improved performance and determinism in weak_wrapper
- [CHORE] optimize Undefined singleton logic for thread safety and clarity; prevent subclassing and ensure identity preservation
- [CHORE] optimize EncodeOptions initialization and equality logic for improved clarity and determinism
- [CHORE] optimize DecodeOptions post-init logic for improved determinism and enforce consistency between decode_dot_in_keys and allow_dots
- [CHORE] optimize list merging logic in Utils.merge for improved determinism and handling of Undefined values
- [CHORE] optimize type checking in list merging logic for improved clarity and consistency in Utils.merge
- [CHORE] optimize encode logic for improved determinism and clarity; use UNDEFINED singleton and refine ListFormat.COMMA comparison
- [CHORE] optimize decode logic to use UNDEFINED singleton for list initialization
1.1.8
1.1.8
- [FIX] fix stable hashing for mappings and sets by sorting on hashed keys and elements to prevent ordering errors
- [FIX] fix percent-encoding to operate on UTF-16 code units for accurate surrogate pair handling and JS compatibility
- [FIX] handle surrogate pairs only when valid high+low combination is present in UTF-8 encoding
- [FIX] replace code_unit_at with ord for direct code unit retrieval in EncodeUtils methods
- [FIX] fix WeakWrapper equality to compare underlying object identity instead of proxy instance
- [FIX] ensure thread-safe access to _proxy_cache with RLock in get_proxy
- [CHORE] add tests for EncodeUtils._encode_string with RFC3986 format and emoji handling
- [CHORE] update documentation