Skip to content

Releases: techouse/qs_codec

1.3.2

14 Dec 12:58
83bf7f0

Choose a tag to compare

1.3.2

  • [CHORE] pin mypy<1.19 on PyPy to avoid new librt build failures while keeping newer mypy on CPython

PyPI: https://pypi.org/project/qs_codec/1.3.2/

1.3.1

09 Nov 08:46
9d5c265

Choose a tag to compare

1.3.1

  • [FEAT] add support for PyPy 3.8, 3.9, 3.10 and 3.11

PyPI: https://pypi.org/project/qs_codec/1.3.1/

1.3.0

16 Oct 20:28
6a4555f

Choose a tag to compare

1.3.0

  • [FEAT] add EncodeOptions.comma_compact_nulls, allowing omission of None entries in lists when using the ListFormat.COMMA. This results in cleaner output (e.g., [True, False, None, True] becomes "true,false,true").

PyPI: https://pypi.org/project/qs_codec/1.3.0/

1.2.5

09 Oct 07:56
92304f6

Choose a tag to compare

1.2.5

  • [CHORE] add support for Python 3.14
  • [CHORE] reinstate Python 3.8 support

PyPI: https://pypi.org/project/qs_codec/1.2.5/

1.2.4

08 Oct 22:40
1fdc82b

Choose a tag to compare

1.2.4

  • [FIX] encode booleans in lowercase to match JavaScript behavior
  • [CHORE] add tests for boolean encoding and decoding parity

PyPI: https://pypi.org/project/qs_codec/1.2.4/

1.2.3

29 Aug 08:13
ceeffe6

Choose a tag to compare

1.2.3

  • [CHORE] add highlights section to README and docs with key features and usage notes

PyPI: https://pypi.org/project/qs_codec/1.2.3/

1.2.2

27 Aug 17:49
af82a87

Choose a tag to compare

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

https://pypi.org/project/qs-codec/1.2.2/

1.2.1

23 Aug 23:26
c7a3217

Choose a tag to compare

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_keys is 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 DecodeOptions to support legacy decoders and add unified decode methods
  • [CHORE]️ update type annotations in decode_options_test for decoder and legacy_decoder signatures
  • [CHORE] add tests for DecodeOptions dot-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_decoder and non-string decoder results in DecodeOptions
  • [CHORE] add tests for dot encoding and decoding parity across DecodeOptions configurations
  • [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_segments remainder handling and strict depth enforcement

https://pypi.org/project/qs-codec/1.2.1/

1.2.0

19 Aug 06:37
2c3e103

Choose a tag to compare

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

https://pypi.org/project/qs-codec/1.2.0/

1.1.8

16 Aug 20:12
496328d

Choose a tag to compare

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

https://pypi.org/project/qs-codec/1.1.8/