ssc_codegen 0.19.3__tar.gz → 0.19.4__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.
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/PKG-INFO +1 -1
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/pyproject.toml +1 -1
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/parsers/spec.py +22 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/.gitignore +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/LICENSE +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/README.md +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/__init__.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/_logging.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/__init__.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/array.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/base.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/cast.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/control.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/extract.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/helpers.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/jsondef.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/module.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/predicate_containers.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/predicate_ops.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/regex.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/selectors.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/string.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/struct.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/transform.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/typedef.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/ast/types.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/base.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/go_goquery.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/helpers.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/js_pure.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/py_bs4.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/py_lxml.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/py_parsel.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/converters/py_slax.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/document_utils.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/exceptions.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/health.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/kdl/__init__.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/kdl/parser.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/__init__.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/_kdl_lang.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/base.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/errors.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/format_errors.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/metadata.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/navigation.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/path.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/rule_keywords.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/rules.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/rules_struct.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/type_rules.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/linter/types.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/main.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/parser.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/parsers/__init__.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/parsers/curl.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/parsers/http.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/pseudo_selectors.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/regex_utils.py +0 -0
- {ssc_codegen-0.19.3 → ssc_codegen-0.19.4}/ssc_codegen/selector_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssc_codegen
|
|
3
|
-
Version: 0.19.
|
|
3
|
+
Version: 0.19.4
|
|
4
4
|
Summary: Python-dsl code converter to html parser for web scraping
|
|
5
5
|
Project-URL: Documentation, https://github.com/vypivshiy/selector_schema_codegen#readme
|
|
6
6
|
Project-URL: Issues, https://github.com/vypivshiy/selector_schema_codegen/issues
|
|
@@ -146,6 +146,9 @@ def parse_to_spec(payload: str) -> RequestSpec:
|
|
|
146
146
|
body = kwargs[
|
|
147
147
|
"data"
|
|
148
148
|
] # dict with original values (may have placeholders)
|
|
149
|
+
elif "application/x-www-form-urlencoded" in content_type:
|
|
150
|
+
body_kind = "form"
|
|
151
|
+
body = _parse_urlencoded_body(raw_body)
|
|
149
152
|
else:
|
|
150
153
|
body_kind = "raw"
|
|
151
154
|
body = raw_body
|
|
@@ -180,6 +183,25 @@ def _curl_raw_body(payload: str) -> str:
|
|
|
180
183
|
return ""
|
|
181
184
|
|
|
182
185
|
|
|
186
|
+
def _parse_urlencoded_body(raw: str) -> dict[str, str]:
|
|
187
|
+
"""Split an application/x-www-form-urlencoded body into a dict.
|
|
188
|
+
|
|
189
|
+
Preserves ``{{placeholders}}`` intact; URL-decodes everything else so the
|
|
190
|
+
target HTTP client can re-encode without double-encoding.
|
|
191
|
+
"""
|
|
192
|
+
from urllib.parse import unquote_plus
|
|
193
|
+
|
|
194
|
+
out: dict[str, str] = {}
|
|
195
|
+
if not raw:
|
|
196
|
+
return out
|
|
197
|
+
for pair in raw.split("&"):
|
|
198
|
+
if not pair:
|
|
199
|
+
continue
|
|
200
|
+
key, sep, value = pair.partition("=")
|
|
201
|
+
out[unquote_plus(key)] = unquote_plus(value) if sep else ""
|
|
202
|
+
return out
|
|
203
|
+
|
|
204
|
+
|
|
183
205
|
def _http_raw_body(payload: str) -> str:
|
|
184
206
|
lines = payload.strip().splitlines()
|
|
185
207
|
i = 1
|
|
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
|
|
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
|