ssc_codegen 0.19.1__tar.gz → 0.19.2__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.1 → ssc_codegen-0.19.2}/PKG-INFO +1 -1
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/pyproject.toml +1 -1
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_bs4.py +16 -16
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/.gitignore +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/LICENSE +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/README.md +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/__init__.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/_logging.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/__init__.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/array.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/base.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/cast.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/control.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/extract.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/helpers.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/jsondef.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/module.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/predicate_containers.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/predicate_ops.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/regex.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/selectors.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/string.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/struct.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/transform.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/typedef.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/types.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/base.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/go_goquery.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/helpers.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/js_pure.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_lxml.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_parsel.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_slax.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/document_utils.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/exceptions.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/health.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/kdl/__init__.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/kdl/parser.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/__init__.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/_kdl_lang.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/base.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/errors.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/format_errors.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/metadata.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/navigation.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/path.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/rule_keywords.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/rules.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/rules_struct.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/type_rules.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/types.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/main.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parser.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/__init__.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/curl.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/http.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/spec.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/pseudo_selectors.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/regex_utils.py +0 -0
- {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/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.2
|
|
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
|
|
@@ -297,25 +297,25 @@ def rest_utilities(node) -> list[str]:
|
|
|
297
297
|
"_T = TypeVar('_T')",
|
|
298
298
|
"_E = TypeVar('_E')",
|
|
299
299
|
"\n",
|
|
300
|
-
"@dataclass(frozen=True
|
|
300
|
+
"@dataclass(frozen=True)",
|
|
301
301
|
"class Ok(Generic[_T]):",
|
|
302
|
-
" status: int",
|
|
303
|
-
" headers: Mapping[str, str]",
|
|
304
|
-
" value: _T",
|
|
302
|
+
" status: int = 0",
|
|
303
|
+
" headers: Mapping[str, str] = field(default_factory=dict)",
|
|
304
|
+
" value: _T = None # type: ignore[assignment]",
|
|
305
305
|
" is_ok: Literal[True] = True",
|
|
306
306
|
"\n",
|
|
307
|
-
"@dataclass(frozen=True
|
|
307
|
+
"@dataclass(frozen=True)",
|
|
308
308
|
"class Err(Generic[_E]):",
|
|
309
|
-
" status: int",
|
|
310
|
-
" headers: Mapping[str, str]",
|
|
311
|
-
" value: _E",
|
|
309
|
+
" status: int = 0",
|
|
310
|
+
" headers: Mapping[str, str] = field(default_factory=dict)",
|
|
311
|
+
" value: _E = None # type: ignore[assignment]",
|
|
312
312
|
" is_ok: Literal[False] = False",
|
|
313
313
|
"\n",
|
|
314
|
-
"@dataclass(frozen=True
|
|
314
|
+
"@dataclass(frozen=True)",
|
|
315
315
|
"class UnknownErr(Err[Any]):",
|
|
316
316
|
" pass",
|
|
317
317
|
"\n",
|
|
318
|
-
"@dataclass(frozen=True
|
|
318
|
+
"@dataclass(frozen=True)",
|
|
319
319
|
"class TransportErr(Err[None]):",
|
|
320
320
|
" status: Literal[0] = 0",
|
|
321
321
|
" cause: str = ''",
|
|
@@ -425,7 +425,7 @@ def _rest_err_union_type(struct: Struct) -> str:
|
|
|
425
425
|
if cls_name not in seen:
|
|
426
426
|
seen.add(cls_name)
|
|
427
427
|
variants.append(cls_name)
|
|
428
|
-
return "
|
|
428
|
+
return "Union[" + ", ".join([*variants, "UnknownErr", "None"]) + "]"
|
|
429
429
|
|
|
430
430
|
|
|
431
431
|
def _emit_dispatch_err_py(node: Struct, ctx: ConverterContext) -> list[str]:
|
|
@@ -508,7 +508,7 @@ def pre_struct(node: Struct, ctx: ConverterContext):
|
|
|
508
508
|
continue
|
|
509
509
|
seen.add(cls_name)
|
|
510
510
|
value_type = _err_value_type(err, node)
|
|
511
|
-
lines.append("@dataclass(frozen=True
|
|
511
|
+
lines.append("@dataclass(frozen=True)")
|
|
512
512
|
lines.append(f"class {cls_name}(Err[{value_type}]):")
|
|
513
513
|
lines.append(f" status: Literal[{err.status}] = {err.status}")
|
|
514
514
|
lines.append("")
|
|
@@ -1660,14 +1660,14 @@ def _ph_to_py_annotation(ph: PlaceholderSpec) -> tuple[str, str]:
|
|
|
1660
1660
|
"""Return (annotation, default_suffix). Suffix is '' or ' = None'."""
|
|
1661
1661
|
anno = _PY_PRIM_ANNO[ph.type_name]
|
|
1662
1662
|
if ph.is_array:
|
|
1663
|
-
anno = f"
|
|
1663
|
+
anno = f"List[{anno}]"
|
|
1664
1664
|
if ph.is_optional:
|
|
1665
|
-
return f"{anno}
|
|
1665
|
+
return f"Optional[{anno}]", " = None"
|
|
1666
1666
|
return anno, ""
|
|
1667
1667
|
|
|
1668
1668
|
|
|
1669
1669
|
def _render_signature_params(placeholders: list[PlaceholderSpec]) -> str:
|
|
1670
|
-
"""Build keyword-only parameters clause: ', *, a: int, b: str
|
|
1670
|
+
"""Build keyword-only parameters clause: ', *, a: int, b: Optional[str] = None'."""
|
|
1671
1671
|
if not placeholders:
|
|
1672
1672
|
return ""
|
|
1673
1673
|
required = [p for p in placeholders if not p.is_optional]
|
|
@@ -1708,7 +1708,7 @@ def _resolve_response_type(node: RequestConfig) -> str:
|
|
|
1708
1708
|
seen.add(cls_name)
|
|
1709
1709
|
err_variants.append(cls_name)
|
|
1710
1710
|
parts = [f"Ok[{payload}]", *err_variants, "UnknownErr", "TransportErr"]
|
|
1711
|
-
return "
|
|
1711
|
+
return "Union[" + ", ".join(parts) + "]"
|
|
1712
1712
|
|
|
1713
1713
|
|
|
1714
1714
|
def _build_rest_method(
|
|
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
|