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.
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/PKG-INFO +4 -7
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/README.md +3 -3
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/pyproject.toml +8 -14
- ssc_codegen-0.23.0/ssc_codegen/__init__.py +1 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/__init__.py +1 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/base.py +1 -1
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/jsondef.py +1 -1
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/typedef.py +1 -1
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/base.py +2 -2
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/js_pure.py +339 -488
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_bs4.py +398 -514
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_helpers.py +215 -64
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_lxml.py +132 -190
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_parsel.py +97 -134
- ssc_codegen-0.23.0/ssc_codegen/converters/py_render.py +231 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/py_slax.py +99 -136
- ssc_codegen-0.22.0/ssc_codegen/parsers/spec.py → ssc_codegen-0.23.0/ssc_codegen/converters/request_spec.py +296 -513
- ssc_codegen-0.23.0/ssc_codegen/core/__init__.py +10 -0
- ssc_codegen-0.23.0/ssc_codegen/core/adapter.py +25 -0
- ssc_codegen-0.23.0/ssc_codegen/core/contexts.py +235 -0
- ssc_codegen-0.23.0/ssc_codegen/core/expressions.py +1038 -0
- ssc_codegen-0.23.0/ssc_codegen/core/format.py +361 -0
- ssc_codegen-0.23.0/ssc_codegen/core/linting.py +1101 -0
- ssc_codegen-0.23.0/ssc_codegen/core/module_handler.py +290 -0
- ssc_codegen-0.23.0/ssc_codegen/core/predicates.py +610 -0
- ssc_codegen-0.23.0/ssc_codegen/core/reader.py +133 -0
- ssc_codegen-0.23.0/ssc_codegen/core/struct_parser.py +269 -0
- ssc_codegen-0.23.0/ssc_codegen/core/type_checking.py +401 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/document_utils.py +13 -6
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/kdl/__init__.py +23 -0
- ssc_codegen-0.23.0/ssc_codegen/kdl/dict_reader.py +56 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/kdl/parser.py +9 -7
- ssc_codegen-0.23.0/ssc_codegen/kdl/reader.py +419 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/main.py +95 -280
- ssc_codegen-0.23.0/ssc_codegen/parsers/__init__.py +7 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/parsers/curl.py +11 -11
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/parsers/http.py +15 -13
- ssc_codegen-0.22.0/ssc_codegen/__init__.py +0 -27
- ssc_codegen-0.22.0/ssc_codegen/converters/go_goquery.py +0 -1885
- ssc_codegen-0.22.0/ssc_codegen/linter/__init__.py +0 -26
- ssc_codegen-0.22.0/ssc_codegen/linter/_kdl_lang.py +0 -435
- ssc_codegen-0.22.0/ssc_codegen/linter/base.py +0 -822
- ssc_codegen-0.22.0/ssc_codegen/linter/errors.py +0 -78
- ssc_codegen-0.22.0/ssc_codegen/linter/format_errors.py +0 -285
- ssc_codegen-0.22.0/ssc_codegen/linter/metadata.py +0 -18
- ssc_codegen-0.22.0/ssc_codegen/linter/navigation.py +0 -262
- ssc_codegen-0.22.0/ssc_codegen/linter/path.py +0 -36
- ssc_codegen-0.22.0/ssc_codegen/linter/rule_keywords.py +0 -321
- ssc_codegen-0.22.0/ssc_codegen/linter/rules.py +0 -848
- ssc_codegen-0.22.0/ssc_codegen/linter/rules_struct.py +0 -972
- ssc_codegen-0.22.0/ssc_codegen/linter/type_rules.py +0 -523
- ssc_codegen-0.22.0/ssc_codegen/linter/types.py +0 -188
- ssc_codegen-0.22.0/ssc_codegen/openapi/__init__.py +0 -87
- ssc_codegen-0.22.0/ssc_codegen/openapi/converter.py +0 -684
- ssc_codegen-0.22.0/ssc_codegen/openapi/emitter.py +0 -128
- ssc_codegen-0.22.0/ssc_codegen/openapi/parser.py +0 -143
- ssc_codegen-0.22.0/ssc_codegen/parser.py +0 -2467
- ssc_codegen-0.22.0/ssc_codegen/parsers/__init__.py +0 -27
- ssc_codegen-0.22.0/ssc_codegen/repl.py +0 -778
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/.gitignore +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/LICENSE +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/_logging.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/array.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/cast.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/control.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/extract.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/helpers.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/module.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/predicate_containers.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/predicate_ops.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/regex.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/selectors.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/string.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/struct.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/transform.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/ast/types.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/converters/helpers.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/exceptions.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/health.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/pseudo_selectors.py +0 -0
- {ssc_codegen-0.22.0 → ssc_codegen-0.23.0}/ssc_codegen/regex_utils.py +0 -0
- {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.
|
|
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
|
|
90
|
-
ssc-gen generate schema.kdl -t
|
|
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
|
|
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
|
|
55
|
-
ssc-gen generate schema.kdl -t
|
|
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
|
|
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.
|
|
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
|
-
"
|
|
92
|
-
|
|
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
|
|
@@ -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
|
|
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.
|
|
@@ -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
|
-
|
|
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
|