ssc_codegen 0.36.2__tar.gz → 0.36.3__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 (88) hide show
  1. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/PKG-INFO +1 -1
  2. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/pyproject.toml +1 -1
  3. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/visitor.py +13 -3
  4. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/.gitignore +0 -0
  5. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/LICENSE +0 -0
  6. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/README.md +0 -0
  7. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/__init__.py +0 -0
  8. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/_logging.py +0 -0
  9. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/__init__.py +0 -0
  10. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/array.py +0 -0
  11. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/base.py +0 -0
  12. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/cast.py +0 -0
  13. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/control.py +0 -0
  14. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/extract.py +0 -0
  15. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/function.py +0 -0
  16. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/helpers.py +0 -0
  17. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/jsondef.py +0 -0
  18. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/module.py +0 -0
  19. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/predicate_containers.py +0 -0
  20. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/predicate_ops.py +0 -0
  21. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/regex.py +0 -0
  22. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/rest.py +0 -0
  23. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/selectors.py +0 -0
  24. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/string.py +0 -0
  25. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/struct.py +0 -0
  26. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/typedef.py +0 -0
  27. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/ast/types.py +0 -0
  28. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/__init__.py +0 -0
  29. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/contexts.py +0 -0
  30. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/expressions.py +0 -0
  31. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/format.py +0 -0
  32. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/linter.py +0 -0
  33. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/module_handler.py +0 -0
  34. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/predicates.py +0 -0
  35. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/reader.py +0 -0
  36. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/rest_artifacts.py +0 -0
  37. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/struct_parser.py +0 -0
  38. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/core/type_checking.py +0 -0
  39. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/exceptions.py +0 -0
  40. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/explore.py +0 -0
  41. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/generation/__init__.py +0 -0
  42. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/generation/builder.py +0 -0
  43. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/generation/runtime.py +0 -0
  44. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/health.py +0 -0
  45. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/main.py +0 -0
  46. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/naming.py +0 -0
  47. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/parsers/__init__.py +0 -0
  48. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/parsers/curl.py +0 -0
  49. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/parsers/http.py +0 -0
  50. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/regex_utils.py +0 -0
  51. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/request_spec.py +0 -0
  52. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/__init__.py +0 -0
  53. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/__init__.py +0 -0
  54. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/http_libs/__init__.py +0 -0
  55. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/http_libs/base.py +0 -0
  56. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/http_libs/nethttp.py +0 -0
  57. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/literals.py +0 -0
  58. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/regex.py +0 -0
  59. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/rest.py +0 -0
  60. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/golang/runtime.py +0 -0
  61. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/javascript/__init__.py +0 -0
  62. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/javascript/http_libs/__init__.py +0 -0
  63. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/javascript/http_libs/axios.py +0 -0
  64. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/javascript/http_libs/base.py +0 -0
  65. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/javascript/http_libs/fetch.py +0 -0
  66. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/javascript/rest.py +0 -0
  67. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/javascript/visitor.py +0 -0
  68. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/profile.py +0 -0
  69. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/__init__.py +0 -0
  70. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/html_libs/__init__.py +0 -0
  71. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/html_libs/base.py +0 -0
  72. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/html_libs/bs4.py +0 -0
  73. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/html_libs/lxml.py +0 -0
  74. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/html_libs/parsel.py +0 -0
  75. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/html_libs/slax.py +0 -0
  76. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/http_libs/__init__.py +0 -0
  77. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/http_libs/aiohttp.py +0 -0
  78. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/http_libs/base.py +0 -0
  79. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/http_libs/httpx.py +0 -0
  80. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/http_libs/requests.py +0 -0
  81. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/rest.py +0 -0
  82. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/python/visitor.py +0 -0
  83. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/resolver.py +0 -0
  84. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/targets/spec.py +0 -0
  85. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/traversal/__init__.py +0 -0
  86. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/traversal/context.py +0 -0
  87. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/traversal/utils.py +0 -0
  88. {ssc_codegen-0.36.2 → ssc_codegen-0.36.3}/ssc_codegen/traversal/walker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ssc_codegen
3
- Version: 0.36.2
3
+ Version: 0.36.3
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.36.2"
3
+ version = "0.36.3"
4
4
  description = "Python-dsl code converter to html parser for web scraping "
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -230,15 +230,17 @@ def _gofmt(source: str) -> str:
230
230
  if not gofmt:
231
231
  return source
232
232
  try:
233
+ # Pass UTF-8 explicitly — Windows text-mode defaults to the OEM
234
+ # codepage (cp1251/cp437), corrupting non-ASCII bytes in @doc
235
+ # comments and source strings.
233
236
  proc = subprocess.run(
234
237
  [gofmt],
235
- input=source,
238
+ input=source.encode("utf-8"),
236
239
  capture_output=True,
237
- text=True,
238
240
  timeout=10,
239
241
  )
240
242
  if proc.returncode == 0 and proc.stdout:
241
- return proc.stdout
243
+ return proc.stdout.decode("utf-8")
242
244
  except (subprocess.SubprocessError, OSError):
243
245
  pass
244
246
  return source
@@ -1357,6 +1359,14 @@ class GoVisitor(BaseWalker):
1357
1359
  if at and at.base == VT.STRING and not at.is_array:
1358
1360
  idx = f"len({ctx.prv})-{abs(i)}" if i < 0 else str(i)
1359
1361
  return [f"{ctx.indent}{ctx.nxt} := string({ctx.prv}[{idx}])"]
1362
+ if at and at.base == VT.DOCUMENT:
1363
+ # *goquery.Selection is not indexable in Go — use .Eq().
1364
+ # Negative index → Length() + i (i is negative, e.g. -1 → last).
1365
+ if i < 0:
1366
+ idx = f"{ctx.prv}.Length() + {i}"
1367
+ else:
1368
+ idx = str(i)
1369
+ return [f"{ctx.indent}{ctx.nxt} := {ctx.prv}.Eq({idx})"]
1360
1370
  if i < 0:
1361
1371
  return [f"{ctx.indent}{ctx.nxt} := {ctx.prv}[len({ctx.prv})+{i}]"]
1362
1372
  return [f"{ctx.indent}{ctx.nxt} := {ctx.prv}[{i}]"]
File without changes
File without changes
File without changes