ssc_codegen 0.25.0__tar.gz → 0.25.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.25.0 → ssc_codegen-0.25.2}/PKG-INFO +2 -2
  2. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/README.md +1 -1
  3. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/pyproject.toml +1 -1
  4. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/linting.py +2 -1
  5. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/module_handler.py +10 -3
  6. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/main.py +10 -4
  7. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/.gitignore +0 -0
  8. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/LICENSE +0 -0
  9. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/__init__.py +0 -0
  10. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/_logging.py +0 -0
  11. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/__init__.py +0 -0
  12. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/array.py +0 -0
  13. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/base.py +0 -0
  14. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/cast.py +0 -0
  15. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/control.py +0 -0
  16. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/extract.py +0 -0
  17. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/helpers.py +0 -0
  18. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/jsondef.py +0 -0
  19. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/module.py +0 -0
  20. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/predicate_containers.py +0 -0
  21. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/predicate_ops.py +0 -0
  22. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/regex.py +0 -0
  23. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/selectors.py +0 -0
  24. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/string.py +0 -0
  25. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/struct.py +0 -0
  26. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/transform.py +0 -0
  27. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/typedef.py +0 -0
  28. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/ast/types.py +0 -0
  29. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/base.py +0 -0
  30. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/helpers.py +0 -0
  31. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/js_pure.py +0 -0
  32. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/py_bs4.py +0 -0
  33. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/py_helpers.py +0 -0
  34. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/py_lxml.py +0 -0
  35. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/py_parsel.py +0 -0
  36. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/py_render.py +0 -0
  37. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/py_slax.py +0 -0
  38. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/converters/request_spec.py +0 -0
  39. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/__init__.py +0 -0
  40. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/adapter.py +0 -0
  41. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/contexts.py +0 -0
  42. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/expressions.py +0 -0
  43. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/format.py +0 -0
  44. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/predicates.py +0 -0
  45. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/reader.py +0 -0
  46. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/struct_parser.py +0 -0
  47. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/core/type_checking.py +0 -0
  48. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/document_utils.py +0 -0
  49. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/exceptions.py +0 -0
  50. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/health.py +0 -0
  51. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/kdl/__init__.py +0 -0
  52. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/kdl/dict_reader.py +0 -0
  53. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/kdl/parser.py +0 -0
  54. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/kdl/reader.py +0 -0
  55. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/parsers/__init__.py +0 -0
  56. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/parsers/curl.py +0 -0
  57. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/parsers/http.py +0 -0
  58. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/pseudo_selectors.py +0 -0
  59. {ssc_codegen-0.25.0 → ssc_codegen-0.25.2}/ssc_codegen/regex_utils.py +0 -0
  60. {ssc_codegen-0.25.0 → ssc_codegen-0.25.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.25.0
3
+ Version: 0.25.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
@@ -57,7 +57,7 @@ uv tool install ssc_codegen
57
57
  `books.kdl`:
58
58
 
59
59
  ```kdl
60
- struct Book type=list {
60
+ (list)struct Book {
61
61
  @split-doc { css-all ".product-card" }
62
62
 
63
63
  title { css ".title"; text }
@@ -25,7 +25,7 @@ uv tool install ssc_codegen
25
25
  `books.kdl`:
26
26
 
27
27
  ```kdl
28
- struct Book type=list {
28
+ (list)struct Book {
29
29
  @split-doc { css-all ".product-card" }
30
30
 
31
31
  title { css ".title"; text }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ssc_codegen"
3
- version = "0.25.0"
3
+ version = "0.25.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"
@@ -680,7 +680,8 @@ def lint_struct_node(
680
680
  )
681
681
  return
682
682
 
683
- struct_type = lint.get_prop(node, "type") or "item"
683
+ raw = node.type_annotation
684
+ struct_type = raw[1:-1] if raw else (lint.get_prop(node, "type") or "item")
684
685
  if struct_type not in _VALID_STRUCT_TYPES:
685
686
  lint.error(
686
687
  node,
@@ -47,9 +47,16 @@ def handle_struct(
47
47
  node: KdlNode, module: Module, ctx: ParseContext, lint: LintContext
48
48
  ) -> Struct:
49
49
  lint_struct_node(node, module, ctx, lint)
50
- type_ = node.properties.get(
51
- "type", KdlArg(value="item", span=node.span, is_identifier=True)
52
- ).value
50
+ raw = node.type_annotation
51
+ type_ = (
52
+ raw[1:-1]
53
+ if raw
54
+ else str(
55
+ node.properties.get(
56
+ "type", KdlArg(value="item", span=node.span, is_identifier=True)
57
+ ).value
58
+ )
59
+ )
53
60
  keep_order = node.properties.get(
54
61
  "keep-order", KdlArg(value=False, span=node.span, is_identifier=False)
55
62
  ).value
@@ -264,7 +264,9 @@ def generate(
264
264
  out_file = output / kdl_file.with_suffix(ext).name
265
265
  logger.debug("processing: %s -> %s", kdl_file, out_file)
266
266
  try:
267
- ast, err = parse_module(kdl_file.read_text(), source_path=kdl_file)
267
+ ast, err = parse_module(
268
+ kdl_file.read_text(encoding="utf-8"), source_path=kdl_file
269
+ )
268
270
  if skip_lint:
269
271
  pass
270
272
  else:
@@ -368,7 +370,9 @@ def check(
368
370
  total_errors = 0
369
371
 
370
372
  for kdl_file in kdl_files:
371
- _, errs = parse_module(kdl_file.read_text(), source_path=kdl_file)
373
+ _, errs = parse_module(
374
+ kdl_file.read_text(encoding="utf-8"), source_path=kdl_file
375
+ )
372
376
  all_results.extend(errs)
373
377
 
374
378
  if errs:
@@ -488,7 +492,7 @@ def run(
488
492
  # Build AST
489
493
  try:
490
494
  module_ast, errs = parse_module(
491
- kdl_path.read_text(), source_path=kdl_path
495
+ kdl_path.read_text(encoding="utf-8"), source_path=kdl_path
492
496
  )
493
497
  if errs:
494
498
  for e in format_diagnostics(errs, fmt=fmt.value):
@@ -649,7 +653,9 @@ def health(
649
653
 
650
654
  # Build AST
651
655
  try:
652
- module_ast, _ = parse_module(kdl_path.read_text(), source_path=kdl_path)
656
+ module_ast, _ = parse_module(
657
+ kdl_path.read_text(encoding="utf-8"), source_path=kdl_path
658
+ )
653
659
  if css_to_xpath:
654
660
  from ssc_codegen.document_utils import convert_css_to_xpath_module
655
661
 
File without changes
File without changes