ssc_codegen 0.22.0__tar.gz → 0.23.0__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 (82) hide show
  1. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/PKG-INFO +4 -7
  2. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/README.md +3 -3
  3. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/pyproject.toml +8 -14
  4. ssc_codegen-0.23.0/ssc_codegen/__init__.py +1 -0
  5. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/__init__.py +1 -0
  6. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/base.py +1 -1
  7. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/jsondef.py +1 -1
  8. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/typedef.py +1 -1
  9. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/base.py +2 -2
  10. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/js_pure.py +339 -488
  11. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_bs4.py +398 -514
  12. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_helpers.py +215 -64
  13. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_lxml.py +132 -190
  14. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_parsel.py +97 -134
  15. ssc_codegen-0.23.0/ssc_codegen/converters/py_render.py +231 -0
  16. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_slax.py +99 -136
  17. ssc_codegen-0.22.0/ssc_codegen/parsers/spec.py → ssc_codegen-0.23.0/ssc_codegen/converters/request_spec.py +296 -513
  18. ssc_codegen-0.23.0/ssc_codegen/core/__init__.py +10 -0
  19. ssc_codegen-0.23.0/ssc_codegen/core/adapter.py +25 -0
  20. ssc_codegen-0.23.0/ssc_codegen/core/contexts.py +235 -0
  21. ssc_codegen-0.23.0/ssc_codegen/core/expressions.py +1038 -0
  22. ssc_codegen-0.23.0/ssc_codegen/core/format.py +361 -0
  23. ssc_codegen-0.23.0/ssc_codegen/core/linting.py +1101 -0
  24. ssc_codegen-0.23.0/ssc_codegen/core/module_handler.py +290 -0
  25. ssc_codegen-0.23.0/ssc_codegen/core/predicates.py +610 -0
  26. ssc_codegen-0.23.0/ssc_codegen/core/reader.py +133 -0
  27. ssc_codegen-0.23.0/ssc_codegen/core/struct_parser.py +269 -0
  28. ssc_codegen-0.23.0/ssc_codegen/core/type_checking.py +401 -0
  29. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/document_utils.py +13 -6
  30. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/kdl/__init__.py +23 -0
  31. ssc_codegen-0.23.0/ssc_codegen/kdl/dict_reader.py +56 -0
  32. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/kdl/parser.py +9 -7
  33. ssc_codegen-0.23.0/ssc_codegen/kdl/reader.py +419 -0
  34. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/main.py +95 -280
  35. ssc_codegen-0.23.0/ssc_codegen/parsers/__init__.py +7 -0
  36. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/parsers/curl.py +11 -11
  37. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/parsers/http.py +15 -13
  38. ssc_codegen-0.22.0/ssc_codegen/__init__.py +0 -27
  39. ssc_codegen-0.22.0/ssc_codegen/converters/go_goquery.py +0 -1885
  40. ssc_codegen-0.22.0/ssc_codegen/linter/__init__.py +0 -26
  41. ssc_codegen-0.22.0/ssc_codegen/linter/_kdl_lang.py +0 -435
  42. ssc_codegen-0.22.0/ssc_codegen/linter/base.py +0 -822
  43. ssc_codegen-0.22.0/ssc_codegen/linter/errors.py +0 -78
  44. ssc_codegen-0.22.0/ssc_codegen/linter/format_errors.py +0 -285
  45. ssc_codegen-0.22.0/ssc_codegen/linter/metadata.py +0 -18
  46. ssc_codegen-0.22.0/ssc_codegen/linter/navigation.py +0 -262
  47. ssc_codegen-0.22.0/ssc_codegen/linter/path.py +0 -36
  48. ssc_codegen-0.22.0/ssc_codegen/linter/rule_keywords.py +0 -321
  49. ssc_codegen-0.22.0/ssc_codegen/linter/rules.py +0 -848
  50. ssc_codegen-0.22.0/ssc_codegen/linter/rules_struct.py +0 -972
  51. ssc_codegen-0.22.0/ssc_codegen/linter/type_rules.py +0 -523
  52. ssc_codegen-0.22.0/ssc_codegen/linter/types.py +0 -188
  53. ssc_codegen-0.22.0/ssc_codegen/openapi/__init__.py +0 -87
  54. ssc_codegen-0.22.0/ssc_codegen/openapi/converter.py +0 -684
  55. ssc_codegen-0.22.0/ssc_codegen/openapi/emitter.py +0 -128
  56. ssc_codegen-0.22.0/ssc_codegen/openapi/parser.py +0 -143
  57. ssc_codegen-0.22.0/ssc_codegen/parser.py +0 -2467
  58. ssc_codegen-0.22.0/ssc_codegen/parsers/__init__.py +0 -27
  59. ssc_codegen-0.22.0/ssc_codegen/repl.py +0 -778
  60. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/.gitignore +0 -0
  61. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/LICENSE +0 -0
  62. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/_logging.py +0 -0
  63. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/array.py +0 -0
  64. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/cast.py +0 -0
  65. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/control.py +0 -0
  66. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/extract.py +0 -0
  67. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/helpers.py +0 -0
  68. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/module.py +0 -0
  69. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/predicate_containers.py +0 -0
  70. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/predicate_ops.py +0 -0
  71. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/regex.py +0 -0
  72. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/selectors.py +0 -0
  73. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/string.py +0 -0
  74. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/struct.py +0 -0
  75. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/transform.py +0 -0
  76. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/types.py +0 -0
  77. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/helpers.py +0 -0
  78. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/exceptions.py +0 -0
  79. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/health.py +0 -0
  80. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/pseudo_selectors.py +0 -0
  81. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/regex_utils.py +0 -0
  82. {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/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.22.0
3
+ Version: 0.23.0
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
@@ -28,9 +28,6 @@ Requires-Dist: pyyaml>=6.0
28
28
  Requires-Dist: soupsieve>=2.6
29
29
  Requires-Dist: typer>=0.15.1
30
30
  Requires-Dist: typing-extensions; python_version < '3.11'
31
- Provides-Extra: repl
32
- Requires-Dist: httpx>=0.28.1; extra == 'repl'
33
- Requires-Dist: ipython>=8.39.0; extra == 'repl'
34
31
  Description-Content-Type: text/markdown
35
32
 
36
33
  # ssc-codegen
@@ -86,11 +83,11 @@ ssc-gen generate schema.kdl -t py-bs4 -o ./output
86
83
  # all .kdl files in a directory
87
84
  ssc-gen generate examples/ -t js-pure -o ./output
88
85
 
89
- # with custom package name (for Go and other targets)
90
- ssc-gen generate schema.kdl -t go-goquery -o ./parsers --package scraper
86
+ # with custom package name
87
+ ssc-gen generate schema.kdl -t py-bs4 -o ./parsers --package scraper
91
88
  ```
92
89
 
93
- Targets: `py-bs4`, `py-lxml`, `py-parsel`, `py-slax`, `js-pure`, `go-goquery`
90
+ Targets: `py-bs4`, `py-lxml`, `py-parsel`, `py-slax`, `js-pure`
94
91
 
95
92
  ### Lint schemas
96
93
 
@@ -51,11 +51,11 @@ ssc-gen generate schema.kdl -t py-bs4 -o ./output
51
51
  # all .kdl files in a directory
52
52
  ssc-gen generate examples/ -t js-pure -o ./output
53
53
 
54
- # with custom package name (for Go and other targets)
55
- ssc-gen generate schema.kdl -t go-goquery -o ./parsers --package scraper
54
+ # with custom package name
55
+ ssc-gen generate schema.kdl -t py-bs4 -o ./parsers --package scraper
56
56
  ```
57
57
 
58
- Targets: `py-bs4`, `py-lxml`, `py-parsel`, `py-slax`, `js-pure`, `go-goquery`
58
+ Targets: `py-bs4`, `py-lxml`, `py-parsel`, `py-slax`, `js-pure`
59
59
 
60
60
  ### Lint schemas
61
61
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ssc_codegen"
3
- version = "0.22.0"
3
+ version = "0.23.0"
4
4
  description = "Python-dsl code converter to html parser for web scraping "
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -42,12 +42,6 @@ Examples = "https://github.com/vypivshiy/selector_schema_codegen/examples"
42
42
  [project.scripts]
43
43
  ssc-gen = 'ssc_codegen.main:main'
44
44
 
45
- [project.optional-dependencies]
46
- repl = [
47
- "httpx>=0.28.1",
48
- "ipython>=8.39.0",
49
- ]
50
-
51
45
  [build-system]
52
46
  requires = ["hatchling"]
53
47
  build-backend = "hatchling.build"
@@ -81,21 +75,21 @@ exclude = ["__init__.py"]
81
75
 
82
76
  [tool.mypy]
83
77
  python_version = "3.10"
84
- pretty = true
85
- ignore_missing_imports = true
86
- disallow_untyped_defs = true
87
78
  show_error_codes = true
88
- no_implicit_optional = true
89
- mypy_path = 'ssc_codegen'
90
79
  exclude = [
91
- "converters/.*\\.py$", # to tired typing
92
- "examples/.*\\.py$"
80
+ "ssc_codegen/ast" # ignore built-in ast and project ast
81
+
93
82
  ]
94
83
  [[tool.mypy.overrides]]
95
84
  module="tests.*"
96
85
  disallow_untyped_defs = false
97
86
 
98
87
 
88
+ [[tool.mypy.overrides]]
89
+ module = ["colorama", "lxml", "lxml.*"]
90
+ ignore_missing_imports = true
91
+
92
+
99
93
  [tool.coverage.report]
100
94
  exclude_also = [
101
95
  'def __repr__',
@@ -0,0 +1 @@
1
+ from ssc_codegen.core.reader import parse_module
@@ -1,3 +1,4 @@
1
+ # mypy: ignore-errors
1
2
  """
2
3
  AST nodes for the KDL Schema DSL.
3
4
 
@@ -1,5 +1,5 @@
1
1
  from __future__ import annotations
2
- from dataclasses import dataclass, field, fields
2
+ from dataclasses import dataclass, field
3
3
  from typing import TYPE_CHECKING
4
4
 
5
5
  from .types import VariableType
@@ -10,7 +10,7 @@ class JsonDefField(Node):
10
10
  Single field in a JSON mapping definition.
11
11
 
12
12
  type_name — primitive ("str", "int", "float", "bool") or ref name.
13
- is_optional — True when field declared with ? suffix or @optional arg.
13
+ is_optional — True when field declared with ? suffix.
14
14
  is_array — True when field declared with (array) prefix.
15
15
  ref_name — set when type_name references another JsonDef.
16
16
  alias — original JSON key when it differs from name.
@@ -37,5 +37,5 @@ class TypeDef(Node):
37
37
  struct_type: StructType = StructType.ITEM
38
38
 
39
39
  @property
40
- def fields(self) -> List[TypeDefField]:
40
+ def fields(self) -> list[TypeDefField]:
41
41
  return self.body
@@ -102,8 +102,8 @@ class BaseConverter:
102
102
  self._pre_callbacks[node_type] = fn
103
103
  if post_callback:
104
104
  if isinstance(post_callback, str):
105
- self._post_callbacks[node_type] = (
106
- lambda _, _2: post_callback
105
+ self._post_callbacks[node_type] = lambda _, _2: (
106
+ post_callback
107
107
  ) # type: ignore
108
108
  else:
109
109
  self._post_callbacks[node_type] = post_callback