nadata 0.1.0__py3-none-any.whl

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 (86) hide show
  1. nadata/__init__.py +15 -0
  2. nadata/api.py +894 -0
  3. nadata/cli.py +445 -0
  4. nadata/console.py +486 -0
  5. nadata/core/__init__.py +0 -0
  6. nadata/core/database/__init__.py +38 -0
  7. nadata/core/database/builtins.py +87 -0
  8. nadata/core/database/database.py +958 -0
  9. nadata/core/database/dumper.py +285 -0
  10. nadata/core/database/entity_id.py +142 -0
  11. nadata/core/database/instance.py +706 -0
  12. nadata/core/database/network_index.py +1142 -0
  13. nadata/core/database/page_manager.py +175 -0
  14. nadata/core/database/persistence/__init__.py +28 -0
  15. nadata/core/database/persistence/binary_cells.py +1141 -0
  16. nadata/core/database/persistence/compaction.py +97 -0
  17. nadata/core/database/persistence/dumper.py +798 -0
  18. nadata/core/database/persistence/lazy_instances.py +1537 -0
  19. nadata/core/database/persistence/loader.py +424 -0
  20. nadata/core/database/persistence/record_store.py +228 -0
  21. nadata/core/database/persistence/serialization.py +605 -0
  22. nadata/core/database/query_engine.py +222 -0
  23. nadata/core/database/queryset.py +508 -0
  24. nadata/core/database/reconciliation.py +287 -0
  25. nadata/core/database/slotted_page.py +190 -0
  26. nadata/core/database/spatial_index.py +1080 -0
  27. nadata/core/expressions/__init__.py +44 -0
  28. nadata/core/expressions/autograd.py +2909 -0
  29. nadata/core/expressions/builtins.py +4673 -0
  30. nadata/core/expressions/expression.py +2658 -0
  31. nadata/core/expressions/io_builtins.py +972 -0
  32. nadata/core/expressions/scope.py +336 -0
  33. nadata/core/expressions/statement.py +953 -0
  34. nadata/core/struct/__init__.py +14 -0
  35. nadata/core/struct/struct.py +218 -0
  36. nadata/core/struct/struct_attribute.py +100 -0
  37. nadata/core/struct/struct_method.py +324 -0
  38. nadata/core/types/__init__.py +33 -0
  39. nadata/core/types/bits/__init__.py +0 -0
  40. nadata/core/types/bits/bits.py +686 -0
  41. nadata/core/types/home_types/__init__.py +19 -0
  42. nadata/core/types/home_types/color.py +102 -0
  43. nadata/core/types/home_types/coordinate.py +1008 -0
  44. nadata/core/types/home_types/datetime.py +362 -0
  45. nadata/core/types/home_types/geogrid.py +92 -0
  46. nadata/core/types/home_types/geometry.py +1223 -0
  47. nadata/core/types/home_types/graph.py +0 -0
  48. nadata/core/types/home_types/planet.py +359 -0
  49. nadata/core/types/home_types/sea_level.py +98 -0
  50. nadata/core/types/home_types/vec.py +0 -0
  51. nadata/core/types/types.py +1345 -0
  52. nadata/core/values/__init__.py +14 -0
  53. nadata/core/values/values.py +1568 -0
  54. nadata/parser/__init__.py +0 -0
  55. nadata/parser/expressions/__init__.py +6 -0
  56. nadata/parser/expressions/dependencies.py +318 -0
  57. nadata/parser/expressions/expression_parser.py +993 -0
  58. nadata/parser/expressions/splitter.py +98 -0
  59. nadata/parser/expressions/statement_parser.py +1425 -0
  60. nadata/parser/expressions/tokenizer.py +402 -0
  61. nadata/parser/expressions/type_parser.py +187 -0
  62. nadata/parser/nadata_loader/__init__.py +8 -0
  63. nadata/parser/nadata_loader/loader.py +951 -0
  64. nadata/parser/nastruct_parser/__init__.py +0 -0
  65. nadata/parser/nastruct_parser/declaration.py +105 -0
  66. nadata/parser/nastruct_parser/imports.py +164 -0
  67. nadata/parser/nastruct_parser/nastruct_parser.py +209 -0
  68. nadata/parser/nastruct_parser/parse_attributes.py +149 -0
  69. nadata/parser/nastruct_parser/parse_callables.py +436 -0
  70. nadata/parser/nastruct_parser/parse_expression.py +59 -0
  71. nadata/parser/nastruct_parser/parse_structs.py +206 -0
  72. nadata/parser/nastruct_parser/parser_state.py +84 -0
  73. nadata/parser/nastruct_parser/resolver.py +1412 -0
  74. nadata/parser/nastruct_parser/struct_body_state.py +50 -0
  75. nadata/parser/nastruct_parser/tmp_structs.py +156 -0
  76. nadata/parser/utils/__init__.py +20 -0
  77. nadata/parser/utils/brackets.py +252 -0
  78. nadata/parser/utils/comments_remove.py +149 -0
  79. nadata/parser/utils/identifiers.py +121 -0
  80. nadata/session.py +868 -0
  81. nadata-0.1.0.dist-info/METADATA +191 -0
  82. nadata-0.1.0.dist-info/RECORD +86 -0
  83. nadata-0.1.0.dist-info/WHEEL +5 -0
  84. nadata-0.1.0.dist-info/entry_points.txt +2 -0
  85. nadata-0.1.0.dist-info/licenses/LICENSE +21 -0
  86. nadata-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,98 @@
1
+ """
2
+ Depth-aware token splitting utilities.
3
+
4
+ Provides helpers to locate or split token streams on separators appearing at
5
+ bracket depth zero, used for declaration parsing and parameter list parsing.
6
+ """
7
+
8
+ # Import Modules
9
+ from __future__ import annotations
10
+
11
+ from nadata.parser.expressions.tokenizer import Token, TokenType
12
+
13
+
14
+ def find_top_level(
15
+ tokens: list[Token],
16
+ value: str
17
+ ) -> int:
18
+ """
19
+ Finds the index of the first token with the given value at bracket depth zero.
20
+
21
+ Args:
22
+ tokens (list[Token]): Token stream to search (terminated by EOF).
23
+ value (str): Token value to search for (e.g. '=' or ':').
24
+
25
+ Returns:
26
+ int: Index of the first matching top-level token, or -1 if none.
27
+ """
28
+
29
+ depth: int = 0
30
+
31
+ # Single left-to-right scan tracking bracket depth
32
+ for index, token in enumerate(tokens):
33
+
34
+ # Stop at the EOF sentinel
35
+ if token.token_type == TokenType.EOF:
36
+ break
37
+
38
+ # Track bracket nesting
39
+ if token.value in "([{":
40
+ depth += 1
41
+
42
+ elif token.value in ")]}":
43
+ depth -= 1
44
+
45
+ # Separator found at depth zero
46
+ elif depth == 0 and token.value == value:
47
+ return index
48
+
49
+ return -1
50
+
51
+
52
+ def split_top_level(
53
+ tokens: list[Token],
54
+ separator: str
55
+ ) -> list[list[Token]]:
56
+ """
57
+ Splits a token stream on separators appearing at bracket depth zero.
58
+
59
+ Args:
60
+ tokens (list[Token]): Token stream to split (terminated by EOF).
61
+ separator (str): Separator token value (e.g. ',').
62
+
63
+ Returns:
64
+ list[list[Token]]: Token segments between separators, in order. The
65
+ EOF token is excluded; a trailing separator yields a final
66
+ empty segment.
67
+ """
68
+
69
+ segments: list[list[Token]] = []
70
+
71
+ current: list[Token] = []
72
+ depth: int = 0
73
+
74
+ # Single left-to-right scan tracking bracket depth
75
+ for token in tokens:
76
+
77
+ # Stop at the EOF sentinel
78
+ if token.token_type == TokenType.EOF:
79
+ break
80
+
81
+ # Track bracket nesting
82
+ if token.value in "([{":
83
+ depth += 1
84
+
85
+ elif token.value in ")]}":
86
+ depth -= 1
87
+
88
+ # Separator found at depth zero: close the current segment
89
+ if depth == 0 and token.value == separator:
90
+ segments.append(current)
91
+ current = []
92
+ continue
93
+
94
+ current.append(token)
95
+
96
+ segments.append(current)
97
+
98
+ return segments