qs-codec 1.2.1__tar.gz → 1.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qs_codec-1.2.1 → qs_codec-1.2.3}/CHANGELOG.md +9 -0
- qs_codec-1.2.1/README.rst → qs_codec-1.2.3/PKG-INFO +96 -0
- qs_codec-1.2.1/PKG-INFO → qs_codec-1.2.3/README.rst +53 -33
- {qs_codec-1.2.1 → qs_codec-1.2.3}/pyproject.toml +22 -10
- {qs_codec-1.2.1 → qs_codec-1.2.3}/requirements_dev.txt +3 -1
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/__init__.py +1 -1
- {qs_codec-1.2.1 → qs_codec-1.2.3}/.gitignore +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/CODE-OF-CONDUCT.md +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/LICENSE +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/docs/README.rst +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/decode.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/encode.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/enums/__init__.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/enums/charset.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/enums/decode_kind.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/enums/duplicates.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/enums/format.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/enums/list_format.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/enums/sentinel.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/models/__init__.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/models/decode_options.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/models/encode_options.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/models/undefined.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/models/weak_wrapper.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/py.typed +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/utils/__init__.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/utils/decode_utils.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/utils/encode_utils.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/src/qs_codec/utils/utils.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/comparison/.gitignore +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/comparison/__init__.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/comparison/compare_outputs.sh +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/comparison/package.json +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/comparison/qs.js +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/comparison/qs.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/comparison/test_cases.json +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/e2e/__init__.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/e2e/e2e_test.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/__init__.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/decode_options_test.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/decode_test.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/encode_test.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/example_test.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/fixed_qs_issues_test.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/utils_test.py +0 -0
- {qs_codec-1.2.1 → qs_codec-1.2.3}/tests/unit/weakref_test.py +0 -0
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## 1.2.3
|
|
2
|
+
|
|
3
|
+
* [CHORE] add highlights section to README and docs with key features and usage notes
|
|
4
|
+
|
|
5
|
+
## 1.2.2
|
|
6
|
+
|
|
7
|
+
* [CHORE] update pyproject.toml with improved metadata, optional dev dependencies, and wheel build config
|
|
8
|
+
* [CHORE] add project logo to README and documentation
|
|
9
|
+
|
|
1
10
|
## 1.2.1
|
|
2
11
|
|
|
3
12
|
* [FIX] fix top-level dot splitting in keys to preserve encoded dots and handle degenerate cases
|
|
@@ -1,6 +1,55 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: qs-codec
|
|
3
|
+
Version: 1.2.3
|
|
4
|
+
Summary: A query string encoding and decoding library for Python. Ported from qs for JavaScript.
|
|
5
|
+
Project-URL: Homepage, https://techouse.github.io/qs_codec/
|
|
6
|
+
Project-URL: Documentation, https://techouse.github.io/qs_codec/
|
|
7
|
+
Project-URL: Repository, https://github.com/techouse/qs_codec.git
|
|
8
|
+
Project-URL: Issues, https://github.com/techouse/qs_codec/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/techouse/qs_codec/blob/master/CHANGELOG.md
|
|
10
|
+
Project-URL: Sponsor, https://github.com/sponsors/techouse
|
|
11
|
+
Project-URL: PayPal, https://paypal.me/ktusar
|
|
12
|
+
Author-email: Klemen Tusar <techouse@gmail.com>
|
|
13
|
+
License-Expression: BSD-3-Clause
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Keywords: arrays,brackets,codec,form-urlencoded,nested,percent-encoding,qs,query,query-string,querystring,rfc3986,url,urldecode,urlencode
|
|
16
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
17
|
+
Classifier: Environment :: Web Environment
|
|
18
|
+
Classifier: Intended Audience :: Developers
|
|
19
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Classifier: Programming Language :: Python
|
|
22
|
+
Classifier: Programming Language :: Python :: 3
|
|
23
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
29
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
30
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
31
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
32
|
+
Classifier: Typing :: Typed
|
|
33
|
+
Requires-Python: >=3.9
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: black; extra == 'dev'
|
|
36
|
+
Requires-Dist: isort; extra == 'dev'
|
|
37
|
+
Requires-Dist: mypy>=1.15.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest-cov>=6.0.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest>=8.3.5; extra == 'dev'
|
|
40
|
+
Requires-Dist: toml>=0.10.2; extra == 'dev'
|
|
41
|
+
Requires-Dist: tox; extra == 'dev'
|
|
42
|
+
Description-Content-Type: text/x-rst
|
|
43
|
+
|
|
1
44
|
qs-codec
|
|
2
45
|
========
|
|
3
46
|
|
|
47
|
+
|
|
48
|
+
.. image:: https://raw.githubusercontent.com/techouse/qs_codec/main/logo.png
|
|
49
|
+
:alt: qs-codec
|
|
50
|
+
:width: 256
|
|
51
|
+
:align: center
|
|
52
|
+
|
|
4
53
|
A query string encoding and decoding library for Python.
|
|
5
54
|
|
|
6
55
|
Ported from `qs <https://www.npmjs.com/package/qs>`__ for JavaScript.
|
|
@@ -9,6 +58,19 @@ Ported from `qs <https://www.npmjs.com/package/qs>`__ for JavaScript.
|
|
|
9
58
|
|Test| |CodeQL| |Publish| |Docs| |codecov| |Codacy| |Black| |flake8| |mypy| |pylint| |isort| |bandit|
|
|
10
59
|
|License| |Contributor Covenant| |GitHub Sponsors| |GitHub Repo stars|
|
|
11
60
|
|
|
61
|
+
Highlights
|
|
62
|
+
----------
|
|
63
|
+
|
|
64
|
+
- Nested dictionaries & lists: ``foo[bar][baz]=qux`` ⇄ ``{'foo': {'bar': {'baz': 'qux'}}}``.
|
|
65
|
+
- Multiple list formats: INDICES (``a[0]=x``), BRACKETS (``a[]=x``), REPEAT (``a=x&a=y``), COMMA (``a=x,y``) with optional comma round-trip.
|
|
66
|
+
- Dot-notation: parse/encode keys like ``a.b=c`` as nested; option to **encode dots in keys** when using dot notation.
|
|
67
|
+
- Charset handling: UTF-8 (default) and Latin-1; optional **charset sentinel** (``utf8=✓``) to auto-detect encoding.
|
|
68
|
+
- Pluggable hooks: custom ``encoder``/``decoder`` callables; options to sort keys, filter output, and control percent-encoding (keys-only, values-only).
|
|
69
|
+
- Nulls & empties: ``strict_null_handling`` and ``skip_nulls``; support for empty lists/arrays when desired.
|
|
70
|
+
- Dates: ``serialize_date`` for ISO 8601 or custom (e.g., UNIX timestamp).
|
|
71
|
+
- Safety limits: configurable nesting depth, parameter limit, and list index limit; optional strict-depth errors; duplicate-key strategies (combine/first/last).
|
|
72
|
+
- Extras: numeric entity decoding (e.g. ``☺`` → ☺), alternate delimiters/regex, and query-prefix helpers.
|
|
73
|
+
|
|
12
74
|
Usage
|
|
13
75
|
-----
|
|
14
76
|
|
|
@@ -976,6 +1038,25 @@ The default `format <https://techouse.github.io/qs_codec/qs_codec.models.html#qs
|
|
|
976
1038
|
|
|
977
1039
|
--------------
|
|
978
1040
|
|
|
1041
|
+
Other ports
|
|
1042
|
+
-----------
|
|
1043
|
+
|
|
1044
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1045
|
+
| Port | Repository | Package |
|
|
1046
|
+
+============================+===============================================================+=================+
|
|
1047
|
+
| Dart | `techouse/qs <https://github.com/techouse/qs>`__ | |pubdev| |
|
|
1048
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1049
|
+
| Kotlin / JVM + Android AAR | `techouse/qs-kotlin <https://github.com/techouse/qs-kotlin>`__| |maven-central| |
|
|
1050
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1051
|
+
| Swift / Objective-C | `techouse/qs-swift <https://github.com/techouse/qs-swift>`__ | |spm| |
|
|
1052
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1053
|
+
| .NET / C# | `techouse/qs-net <https://github.com/techouse/qs-net>`__ | |nuget| |
|
|
1054
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1055
|
+
| Node.js (original) | `ljharb/qs <https://github.com/ljharb/qs>`__ | |npm| |
|
|
1056
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1057
|
+
|
|
1058
|
+
--------------
|
|
1059
|
+
|
|
979
1060
|
Special thanks to the authors of
|
|
980
1061
|
`qs <https://www.npmjs.com/package/qs>`__ for JavaScript: - `Jordan
|
|
981
1062
|
Harband <https://github.com/ljharb>`__ - `TJ
|
|
@@ -1021,3 +1102,18 @@ Holowaychuk <https://github.com/visionmedia/node-querystring>`__
|
|
|
1021
1102
|
.. |bandit| image:: https://img.shields.io/badge/security-bandit-blue.svg
|
|
1022
1103
|
:target: https://github.com/PyCQA/bandit
|
|
1023
1104
|
:alt: Security Status
|
|
1105
|
+
.. |pubdev| image:: https://img.shields.io/pub/v/qs_dart?logo=dart&label=pub.dev
|
|
1106
|
+
:target: https://pub.dev/packages/qs_dart
|
|
1107
|
+
:alt: pub.dev version
|
|
1108
|
+
.. |maven-central| image:: https://img.shields.io/maven-central/v/io.github.techouse/qs-kotlin?logo=kotlin&label=Maven%20Central
|
|
1109
|
+
:target: https://central.sonatype.com/artifact/io.github.techouse/qs-kotlin
|
|
1110
|
+
:alt: Maven Central version
|
|
1111
|
+
.. |spm| image:: https://img.shields.io/github/v/release/techouse/qs-swift?logo=swift&label=SwiftPM
|
|
1112
|
+
:target: https://swiftpackageindex.com/techouse/qs-swift
|
|
1113
|
+
:alt: Swift Package Manager version
|
|
1114
|
+
.. |nuget| image:: https://img.shields.io/nuget/v/QsNet?logo=dotnet&label=NuGet
|
|
1115
|
+
:target: https://www.nuget.org/packages/QsNet
|
|
1116
|
+
:alt: NuGet version
|
|
1117
|
+
.. |npm| image:: https://img.shields.io/npm/v/qs?logo=javascript&label=npm
|
|
1118
|
+
:target: https://www.npmjs.com/package/qs
|
|
1119
|
+
:alt: npm version
|
|
@@ -1,39 +1,12 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: qs-codec
|
|
3
|
-
Version: 1.2.1
|
|
4
|
-
Summary: A query string encoding and decoding library for Python. Ported from qs for JavaScript.
|
|
5
|
-
Project-URL: Homepage, https://techouse.github.io/qs_codec/
|
|
6
|
-
Project-URL: Documentation, https://techouse.github.io/qs_codec/
|
|
7
|
-
Project-URL: Source, https://github.com/techouse/qs_codec
|
|
8
|
-
Project-URL: Changelog, https://github.com/techouse/qs_codec/blob/master/CHANGELOG.md
|
|
9
|
-
Project-URL: Sponsor, https://github.com/sponsors/techouse
|
|
10
|
-
Project-URL: PayPal, https://paypal.me/ktusar
|
|
11
|
-
Author-email: Klemen Tusar <techouse@gmail.com>
|
|
12
|
-
License: BSD-3-Clause
|
|
13
|
-
License-File: LICENSE
|
|
14
|
-
Keywords: codec,qs,query,query-string,querystring,url
|
|
15
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
16
|
-
Classifier: Environment :: Web Environment
|
|
17
|
-
Classifier: Intended Audience :: Developers
|
|
18
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
19
|
-
Classifier: Operating System :: OS Independent
|
|
20
|
-
Classifier: Programming Language :: Python
|
|
21
|
-
Classifier: Programming Language :: Python :: 3
|
|
22
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
23
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
24
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
25
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
26
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
27
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
28
|
-
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
29
|
-
Classifier: Topic :: Internet :: WWW/HTTP
|
|
30
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
31
|
-
Requires-Python: >=3.9
|
|
32
|
-
Description-Content-Type: text/x-rst
|
|
33
|
-
|
|
34
1
|
qs-codec
|
|
35
2
|
========
|
|
36
3
|
|
|
4
|
+
|
|
5
|
+
.. image:: https://raw.githubusercontent.com/techouse/qs_codec/main/logo.png
|
|
6
|
+
:alt: qs-codec
|
|
7
|
+
:width: 256
|
|
8
|
+
:align: center
|
|
9
|
+
|
|
37
10
|
A query string encoding and decoding library for Python.
|
|
38
11
|
|
|
39
12
|
Ported from `qs <https://www.npmjs.com/package/qs>`__ for JavaScript.
|
|
@@ -42,6 +15,19 @@ Ported from `qs <https://www.npmjs.com/package/qs>`__ for JavaScript.
|
|
|
42
15
|
|Test| |CodeQL| |Publish| |Docs| |codecov| |Codacy| |Black| |flake8| |mypy| |pylint| |isort| |bandit|
|
|
43
16
|
|License| |Contributor Covenant| |GitHub Sponsors| |GitHub Repo stars|
|
|
44
17
|
|
|
18
|
+
Highlights
|
|
19
|
+
----------
|
|
20
|
+
|
|
21
|
+
- Nested dictionaries & lists: ``foo[bar][baz]=qux`` ⇄ ``{'foo': {'bar': {'baz': 'qux'}}}``.
|
|
22
|
+
- Multiple list formats: INDICES (``a[0]=x``), BRACKETS (``a[]=x``), REPEAT (``a=x&a=y``), COMMA (``a=x,y``) with optional comma round-trip.
|
|
23
|
+
- Dot-notation: parse/encode keys like ``a.b=c`` as nested; option to **encode dots in keys** when using dot notation.
|
|
24
|
+
- Charset handling: UTF-8 (default) and Latin-1; optional **charset sentinel** (``utf8=✓``) to auto-detect encoding.
|
|
25
|
+
- Pluggable hooks: custom ``encoder``/``decoder`` callables; options to sort keys, filter output, and control percent-encoding (keys-only, values-only).
|
|
26
|
+
- Nulls & empties: ``strict_null_handling`` and ``skip_nulls``; support for empty lists/arrays when desired.
|
|
27
|
+
- Dates: ``serialize_date`` for ISO 8601 or custom (e.g., UNIX timestamp).
|
|
28
|
+
- Safety limits: configurable nesting depth, parameter limit, and list index limit; optional strict-depth errors; duplicate-key strategies (combine/first/last).
|
|
29
|
+
- Extras: numeric entity decoding (e.g. ``☺`` → ☺), alternate delimiters/regex, and query-prefix helpers.
|
|
30
|
+
|
|
45
31
|
Usage
|
|
46
32
|
-----
|
|
47
33
|
|
|
@@ -1009,6 +995,25 @@ The default `format <https://techouse.github.io/qs_codec/qs_codec.models.html#qs
|
|
|
1009
995
|
|
|
1010
996
|
--------------
|
|
1011
997
|
|
|
998
|
+
Other ports
|
|
999
|
+
-----------
|
|
1000
|
+
|
|
1001
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1002
|
+
| Port | Repository | Package |
|
|
1003
|
+
+============================+===============================================================+=================+
|
|
1004
|
+
| Dart | `techouse/qs <https://github.com/techouse/qs>`__ | |pubdev| |
|
|
1005
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1006
|
+
| Kotlin / JVM + Android AAR | `techouse/qs-kotlin <https://github.com/techouse/qs-kotlin>`__| |maven-central| |
|
|
1007
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1008
|
+
| Swift / Objective-C | `techouse/qs-swift <https://github.com/techouse/qs-swift>`__ | |spm| |
|
|
1009
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1010
|
+
| .NET / C# | `techouse/qs-net <https://github.com/techouse/qs-net>`__ | |nuget| |
|
|
1011
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1012
|
+
| Node.js (original) | `ljharb/qs <https://github.com/ljharb/qs>`__ | |npm| |
|
|
1013
|
+
+----------------------------+---------------------------------------------------------------+-----------------+
|
|
1014
|
+
|
|
1015
|
+
--------------
|
|
1016
|
+
|
|
1012
1017
|
Special thanks to the authors of
|
|
1013
1018
|
`qs <https://www.npmjs.com/package/qs>`__ for JavaScript: - `Jordan
|
|
1014
1019
|
Harband <https://github.com/ljharb>`__ - `TJ
|
|
@@ -1054,3 +1059,18 @@ Holowaychuk <https://github.com/visionmedia/node-querystring>`__
|
|
|
1054
1059
|
.. |bandit| image:: https://img.shields.io/badge/security-bandit-blue.svg
|
|
1055
1060
|
:target: https://github.com/PyCQA/bandit
|
|
1056
1061
|
:alt: Security Status
|
|
1062
|
+
.. |pubdev| image:: https://img.shields.io/pub/v/qs_dart?logo=dart&label=pub.dev
|
|
1063
|
+
:target: https://pub.dev/packages/qs_dart
|
|
1064
|
+
:alt: pub.dev version
|
|
1065
|
+
.. |maven-central| image:: https://img.shields.io/maven-central/v/io.github.techouse/qs-kotlin?logo=kotlin&label=Maven%20Central
|
|
1066
|
+
:target: https://central.sonatype.com/artifact/io.github.techouse/qs-kotlin
|
|
1067
|
+
:alt: Maven Central version
|
|
1068
|
+
.. |spm| image:: https://img.shields.io/github/v/release/techouse/qs-swift?logo=swift&label=SwiftPM
|
|
1069
|
+
:target: https://swiftpackageindex.com/techouse/qs-swift
|
|
1070
|
+
:alt: Swift Package Manager version
|
|
1071
|
+
.. |nuget| image:: https://img.shields.io/nuget/v/QsNet?logo=dotnet&label=NuGet
|
|
1072
|
+
:target: https://www.nuget.org/packages/QsNet
|
|
1073
|
+
:alt: NuGet version
|
|
1074
|
+
.. |npm| image:: https://img.shields.io/npm/v/qs?logo=javascript&label=npm
|
|
1075
|
+
:target: https://www.npmjs.com/package/qs
|
|
1076
|
+
:alt: npm version
|
|
@@ -5,19 +5,17 @@ build-backend = "hatchling.build"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "qs-codec"
|
|
7
7
|
description = "A query string encoding and decoding library for Python. Ported from qs for JavaScript."
|
|
8
|
-
readme = "README.rst"
|
|
9
|
-
license =
|
|
8
|
+
readme = { file = "README.rst", content-type = "text/x-rst" }
|
|
9
|
+
license = "BSD-3-Clause"
|
|
10
|
+
license-files = ["LICENSE"]
|
|
10
11
|
requires-python = ">=3.9"
|
|
11
12
|
authors = [
|
|
12
13
|
{ name = "Klemen Tusar", email = "techouse@gmail.com" },
|
|
13
14
|
]
|
|
14
15
|
keywords = [
|
|
15
|
-
"qs",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"query",
|
|
19
|
-
"querystring",
|
|
20
|
-
"query-string",
|
|
16
|
+
"qs", "codec", "url", "query", "querystring", "query-string",
|
|
17
|
+
"urlencode", "urldecode", "form-urlencoded", "percent-encoding",
|
|
18
|
+
"rfc3986", "arrays", "nested", "brackets"
|
|
21
19
|
]
|
|
22
20
|
classifiers = [
|
|
23
21
|
"Development Status :: 5 - Production/Stable",
|
|
@@ -36,17 +34,30 @@ classifiers = [
|
|
|
36
34
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
37
35
|
"Topic :: Internet :: WWW/HTTP",
|
|
38
36
|
"Topic :: Software Development :: Libraries",
|
|
37
|
+
"Typing :: Typed",
|
|
39
38
|
]
|
|
40
39
|
dynamic = ["version"]
|
|
41
40
|
|
|
42
41
|
[project.urls]
|
|
43
42
|
Homepage = "https://techouse.github.io/qs_codec/"
|
|
44
43
|
Documentation = "https://techouse.github.io/qs_codec/"
|
|
45
|
-
|
|
44
|
+
Repository = "https://github.com/techouse/qs_codec.git"
|
|
45
|
+
Issues = "https://github.com/techouse/qs_codec/issues"
|
|
46
46
|
Changelog = "https://github.com/techouse/qs_codec/blob/master/CHANGELOG.md"
|
|
47
47
|
Sponsor = "https://github.com/sponsors/techouse"
|
|
48
48
|
PayPal = "https://paypal.me/ktusar"
|
|
49
49
|
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
dev = [
|
|
52
|
+
"pytest>=8.3.5",
|
|
53
|
+
"pytest-cov>=6.0.0",
|
|
54
|
+
"mypy>=1.15.0",
|
|
55
|
+
"toml>=0.10.2",
|
|
56
|
+
"tox",
|
|
57
|
+
"black",
|
|
58
|
+
"isort"
|
|
59
|
+
]
|
|
60
|
+
|
|
50
61
|
[tool.hatch.version]
|
|
51
62
|
path = "src/qs_codec/__init__.py"
|
|
52
63
|
|
|
@@ -63,6 +74,7 @@ include = [
|
|
|
63
74
|
|
|
64
75
|
[tool.hatch.build.targets.wheel]
|
|
65
76
|
packages = ["src/qs_codec"]
|
|
77
|
+
include = ["src/qs_codec/py.typed"]
|
|
66
78
|
|
|
67
79
|
[tool.black]
|
|
68
80
|
line-length = 120
|
|
@@ -91,7 +103,7 @@ exclude = '''
|
|
|
91
103
|
line_length = 120
|
|
92
104
|
profile = "black"
|
|
93
105
|
lines_after_imports = 2
|
|
94
|
-
known_first_party = "
|
|
106
|
+
known_first_party = "qs_codec"
|
|
95
107
|
skip_gitignore = true
|
|
96
108
|
|
|
97
109
|
[tool.pytest.ini_options]
|
|
@@ -14,7 +14,7 @@ The package root re-exports the most commonly used functions and enums so you ca
|
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
16
|
# Package version (PEP 440). Bump in lockstep with distribution metadata.
|
|
17
|
-
__version__ = "1.2.
|
|
17
|
+
__version__ = "1.2.3"
|
|
18
18
|
|
|
19
19
|
from .decode import decode, load, loads
|
|
20
20
|
from .encode import dumps, encode
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|