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,84 @@
1
+ """
2
+ Shared parser state for .nastruct schema parsing.
3
+
4
+ Provides the NaStructParserState class holding all cross-file parsing
5
+ context: the target database, the intermediate representation being built,
6
+ and the dependency bookkeeping used by the resolution phase.
7
+ """
8
+
9
+ # Import Modules
10
+ from __future__ import annotations
11
+ from typing import Any, Optional
12
+
13
+ from nadata.core.database.database import NaDataDatabase
14
+ from nadata.parser.nastruct_parser.tmp_structs import (
15
+ TmpStruct,
16
+ TmpFunction,
17
+ )
18
+
19
+
20
+ class NaStructParserState:
21
+ """
22
+ Shared state of a .nastruct parsing session.
23
+
24
+ Holds everything the parsing functions need across files and items:
25
+ the database under construction and the intermediate representation
26
+ of the structs and functions discovered so far.
27
+
28
+ Attributes:
29
+ database (NaDataDatabase): Database being populated by the parser.
30
+ tmp_structs (dict[str, TmpStruct]): Intermediate struct declarations
31
+ by name, awaiting type resolution.
32
+ tmp_functions (dict[str, TmpFunction]): Intermediate standalone
33
+ function declarations by name, awaiting type resolution.
34
+ """
35
+
36
+ def __init__(
37
+ self,
38
+ database: Optional[NaDataDatabase] = None
39
+ ) -> None:
40
+ """
41
+ Initializes the NaStructParserState instance.
42
+
43
+ Args:
44
+ database (Optional[NaDataDatabase], optional): Database to populate.
45
+ Defaults to None (a fresh NaDataDatabase is created).
46
+ """
47
+
48
+ # Database where we will register the structs and functions
49
+ self.database: NaDataDatabase = (
50
+ database if database is not None else NaDataDatabase()
51
+ )
52
+
53
+ # Intermediate representation awaiting resolution
54
+ self.tmp_structs: dict[str, TmpStruct] = {}
55
+ self.tmp_functions: dict[str, TmpFunction] = {}
56
+
57
+ # When True (session schema re-merge), re-declared structs /
58
+ # attributes / methods / functions replace instead of raising
59
+ self.merge: bool = False
60
+
61
+ # Structs re-declared in the current merge -> member names that
62
+ # the re-declarations explicitly carry (union across parses);
63
+ # members absent from the set were removed from the schema
64
+ self.redeclared_members: dict[str, set[str]] = {}
65
+
66
+ def to_ir_dict(self) -> dict[str, Any]:
67
+ """
68
+ Converts the intermediate representation to a plain JSON serializable dict.
69
+
70
+ Returns:
71
+ dict[str, Any]: Dict with 'structs' and 'functions' keys mapping
72
+ names to their serialized representations.
73
+ """
74
+
75
+ return {
76
+ "structs": {
77
+ name: tmp_struct.to_dict()
78
+ for name, tmp_struct in self.tmp_structs.items()
79
+ },
80
+ "functions": {
81
+ name: tmp_function.to_dict()
82
+ for name, tmp_function in self.tmp_functions.items()
83
+ },
84
+ }