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.
Files changed (60) hide show
  1. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/PKG-INFO +1 -1
  2. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/pyproject.toml +1 -1
  3. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_bs4.py +16 -16
  4. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/.gitignore +0 -0
  5. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/LICENSE +0 -0
  6. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/README.md +0 -0
  7. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/__init__.py +0 -0
  8. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/_logging.py +0 -0
  9. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/__init__.py +0 -0
  10. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/array.py +0 -0
  11. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/base.py +0 -0
  12. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/cast.py +0 -0
  13. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/control.py +0 -0
  14. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/extract.py +0 -0
  15. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/helpers.py +0 -0
  16. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/jsondef.py +0 -0
  17. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/module.py +0 -0
  18. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/predicate_containers.py +0 -0
  19. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/predicate_ops.py +0 -0
  20. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/regex.py +0 -0
  21. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/selectors.py +0 -0
  22. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/string.py +0 -0
  23. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/struct.py +0 -0
  24. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/transform.py +0 -0
  25. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/typedef.py +0 -0
  26. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/ast/types.py +0 -0
  27. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/base.py +0 -0
  28. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/go_goquery.py +0 -0
  29. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/helpers.py +0 -0
  30. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/js_pure.py +0 -0
  31. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_lxml.py +0 -0
  32. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_parsel.py +0 -0
  33. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/converters/py_slax.py +0 -0
  34. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/document_utils.py +0 -0
  35. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/exceptions.py +0 -0
  36. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/health.py +0 -0
  37. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/kdl/__init__.py +0 -0
  38. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/kdl/parser.py +0 -0
  39. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/__init__.py +0 -0
  40. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/_kdl_lang.py +0 -0
  41. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/base.py +0 -0
  42. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/errors.py +0 -0
  43. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/format_errors.py +0 -0
  44. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/metadata.py +0 -0
  45. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/navigation.py +0 -0
  46. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/path.py +0 -0
  47. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/rule_keywords.py +0 -0
  48. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/rules.py +0 -0
  49. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/rules_struct.py +0 -0
  50. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/type_rules.py +0 -0
  51. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/linter/types.py +0 -0
  52. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/main.py +0 -0
  53. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parser.py +0 -0
  54. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/__init__.py +0 -0
  55. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/curl.py +0 -0
  56. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/http.py +0 -0
  57. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/parsers/spec.py +0 -0
  58. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/pseudo_selectors.py +0 -0
  59. {ssc_codegen-0.19.1 → ssc_codegen-0.19.2}/ssc_codegen/regex_utils.py +0 -0
  60. {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.1
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ssc_codegen"
3
- version = "0.19.1"
3
+ version = "0.19.2"
4
4
  description = "Python-dsl code converter to html parser for web scraping "
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -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, kw_only=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, kw_only=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, kw_only=True)",
314
+ "@dataclass(frozen=True)",
315
315
  "class UnknownErr(Err[Any]):",
316
316
  " pass",
317
317
  "\n",
318
- "@dataclass(frozen=True, kw_only=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 " | ".join([*variants, "UnknownErr", "None"])
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, kw_only=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"list[{anno}]"
1663
+ anno = f"List[{anno}]"
1664
1664
  if ph.is_optional:
1665
- return f"{anno} | None", " = None"
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 | None = None'."""
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 " | ".join(parts)
1711
+ return "Union[" + ", ".join(parts) + "]"
1712
1712
 
1713
1713
 
1714
1714
  def _build_rest_method(
File without changes
File without changes
File without changes