Skip to content

Commit cc9a68d

Browse files
feat(aegis-server, aegis-core): move provider implementations to aegis-server
1 parent a0f2865 commit cc9a68d

File tree

8 files changed

+71
-82
lines changed

8 files changed

+71
-82
lines changed

aegis-core/aegis_core/ast/features/__init__.py

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,17 @@
11
from dataclasses import dataclass, field
22

33
from beet import Context
4-
from bolt import (
5-
AstAttribute,
6-
AstClassName,
7-
AstFormatString,
8-
AstFunctionSignature,
9-
AstFunctionSignatureArgument,
10-
AstIdentifier,
11-
AstImportedItem,
12-
AstTargetAttribute,
13-
AstTargetIdentifier,
14-
AstValue,
15-
)
16-
from mecha import AstNode, AstResourceLocation, AstItemSlot
4+
5+
from mecha import AstNode
176

187
from .provider import *
19-
from .resource_location import *
20-
from .variable import *
21-
from .generic import *
22-
23-
def get_default_providers() -> dict[type[AstNode], type[BaseFeatureProvider]]:
24-
return {
25-
# Bolt Specific
26-
AstIdentifier: VariableFeatureProvider,
27-
AstAttribute: VariableFeatureProvider,
28-
AstTargetAttribute: VariableFeatureProvider,
29-
AstTargetIdentifier: VariableFeatureProvider,
30-
AstImportedItem: VariableFeatureProvider,
31-
AstClassName: ClassNameProvider,
32-
AstFunctionSignature: FunctionSignatureProvider,
33-
AstFunctionSignatureArgument: FunctionSignatureArgProvider,
34-
AstValue: ValueProvider,
35-
AstFormatString: FormatStringProvider,
36-
# Mecha Specific
37-
AstResourceLocation: ResourceLocationFeatureProvider,
38-
AstItemSlot: ItemSlotProvider,
39-
}
408

419

4210
@dataclass
4311
class AegisFeatureProviders:
4412
ctx: Context
4513
_providers: dict[type[AstNode], type[BaseFeatureProvider]] = field(
46-
init=False, default_factory=get_default_providers
14+
init=False, default_factory=dict
4715
)
4816

4917
def attach(self, node_type: type[AstNode], provider: type[BaseFeatureProvider]):
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from aegis_core.ast.features import AegisFeatureProviders
2+
from aegis_core.ast.features.provider import BaseFeatureProvider
3+
from beet import Context
4+
from bolt import (
5+
AstAttribute,
6+
AstClassName,
7+
AstFormatString,
8+
AstFunctionSignature,
9+
AstFunctionSignatureArgument,
10+
AstIdentifier,
11+
AstImportedItem,
12+
AstTargetAttribute,
13+
AstTargetIdentifier,
14+
AstValue,
15+
)
16+
from mecha import AstItemSlot, AstNode, AstResourceLocation
17+
18+
from .resource_location import *
19+
from .variable import *
20+
from .generic import *
21+
22+
__all__ = [
23+
"register_providers"
24+
]
25+
26+
PROVIDERS: dict[type[AstNode], type[BaseFeatureProvider]] = {
27+
# Bolt Specific
28+
AstIdentifier: VariableFeatureProvider,
29+
AstAttribute: VariableFeatureProvider,
30+
AstTargetAttribute: VariableFeatureProvider,
31+
AstTargetIdentifier: VariableFeatureProvider,
32+
AstImportedItem: VariableFeatureProvider,
33+
AstClassName: ClassNameProvider,
34+
AstFunctionSignature: FunctionSignatureProvider,
35+
AstFunctionSignatureArgument: FunctionSignatureArgProvider,
36+
AstValue: ValueProvider,
37+
AstFormatString: FormatStringProvider,
38+
# Mecha Specific
39+
AstResourceLocation: ResourceLocationFeatureProvider,
40+
AstItemSlot: ItemSlotProvider,
41+
}
42+
43+
44+
def register_providers(ctx: Context):
45+
providers = ctx.inject(AegisFeatureProviders)
46+
47+
for node, provider in PROVIDERS.items():
48+
providers.attach(node, provider)
49+

aegis-core/aegis_core/ast/features/generic.py renamed to aegis-server/aegis_server/providers/generic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import re
33
from types import NoneType
44
from typing import ClassVar
5+
from aegis_core.ast.features.provider import BaseFeatureProvider
56
from aegis_core.ast.helpers import offset_location
67
from aegis_core.ast.metadata import VariableMetadata, retrieve_metadata
78
from aegis_core.semantics import TokenModifier, TokenType
@@ -15,7 +16,6 @@
1516
from mecha import AstNode
1617
from mecha.ast import AstItemSlot
1718
from tokenstream import SourceLocation
18-
from .provider import BaseFeatureProvider
1919

2020

2121
__all__ = [

aegis-core/aegis_core/ast/features/resource_location.py renamed to aegis-server/aegis_server/providers/resource_location.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,16 @@
66
import re
77
from typing import cast
88

9+
from aegis_core.ast.features.provider import BaseFeatureProvider
10+
from aegis_core.ast.helpers import node_location_to_range
11+
from aegis_core.ast.metadata import ResourceLocationMetadata, retrieve_metadata
12+
from aegis_core.indexing.project_index import AegisProjectIndex
913
import lsprotocol.types as lsp
1014
from beet import File, NamespaceFile
1115
from mecha import AstResourceLocation
1216

1317
from aegis_core.registry import AegisGameRegistries
1418

15-
from ...ast.helpers import node_location_to_range
16-
from ...ast.metadata import ResourceLocationMetadata, retrieve_metadata
17-
from ...indexing.project_index import AegisProjectIndex
18-
from .provider import BaseFeatureProvider
19-
20-
2119
def add_registry_items(
2220
registries: AegisGameRegistries,
2321
represents: str,

aegis-core/aegis_core/ast/features/variable.py renamed to aegis-server/aegis_server/providers/variable.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from functools import reduce
22
import inspect
3-
from typing import Any, Literal, get_origin
4-
from aegis_core.ast.features.provider import SemanticsParams
3+
from typing import Any, get_origin
4+
from aegis_core.ast.features.provider import BaseFeatureProvider
55
from aegis_core.ast.helpers import offset_location
6+
from aegis_core.ast.metadata import VariableMetadata, attach_metadata, retrieve_metadata
7+
from aegis_core.reflection import UNKNOWN_TYPE, FunctionInfo, TypeInfo, get_annotation_description, get_function_description, get_type_info
68
from aegis_core.semantics import TokenModifier, TokenType
79
import lsprotocol.types as lsp
810
from bolt import (
@@ -11,22 +13,11 @@
1113
AstImportedItem,
1214
AstTargetAttribute,
1315
AstTargetIdentifier,
14-
Runtime,
1516
Variable,
1617
)
1718
from mecha import AstNode
18-
from tokenstream import set_location
19-
20-
from ...reflection import (
21-
UNKNOWN_TYPE,
22-
FunctionInfo,
23-
TypeInfo,
24-
get_annotation_description,
25-
get_function_description,
26-
get_type_info,
27-
)
28-
from ..metadata import VariableMetadata, attach_metadata, retrieve_metadata
29-
from . import BaseFeatureProvider
19+
20+
3021

3122
__all__ = ["VariableFeatureProvider"]
3223

aegis-server/aegis_server/server/features/completion.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import builtins
22

3-
from aegis_core.ast.features.variable import add_raw_definition, add_variable_definition
3+
from aegis_server.providers.variable import add_raw_definition, add_variable_definition
44
from bolt import Runtime, UndefinedIdentifier
55
from lsprotocol import types as lsp
66
from mecha import (

aegis-server/aegis_server/server/features/semantics.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,6 @@ def command(self, node: AstCommand):
108108
pos=node.location.pos + name_length,
109109
colno=node.location.colno + name_length,
110110
)
111-
# if node.location.lineno == node.arguments[0].location.lineno:
112-
# command_name_offset = (
113-
# node.arguments[0].location.pos - node.location.pos - 1
114-
# )
115-
# end_location = SourceLocation(
116-
# lineno=node.location.lineno,
117-
# pos=node.location.pos + command_name_offset,
118-
# colno=node.location.colno + command_name_offset,
119-
# )
120111
else:
121112
return
122113

@@ -190,17 +181,6 @@ def node(self, node: AstNode):
190181
f"An error occured running provider {provider}\n{e}\n{tb}"
191182
)
192183

193-
# @rule(AstAssignment)
194-
# def assignment(self, assignment: AstAssignment):
195-
# self.generic_identifier(assignment.target)
196-
197-
# if assignment.type_annotation != None:
198-
# self.nodes.append((assignment.type_annotation, TOKEN_TYPES["class"], 0))
199-
200-
# @rule(AstExpressionUnary)
201-
# def expression(self, expression: AstExpressionUnary):
202-
# if expression.operator == "not" or expression.operator == "is":
203-
# self.nodes.append((expression, TOKEN_TYPES["operator"], TOKEN_MODIFIERS["declaration"]))
204184

205185
def walk(self, root: AstNode):
206186
self.nodes = []

aegis-server/aegis_server/server/shadows/project_builder.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from contextlib import ExitStack
44
from copy import deepcopy
55

6+
from aegis_server.providers import register_providers
67
from beet import (
78
LATEST_MINECRAFT_VERSION,
89
Context,
@@ -89,6 +90,10 @@ def initialize(self, ls: LanguageServer) -> LanguageServerContext:
8990

9091
pipelined_plugin.append(item)
9192

93+
94+
logging.debug("Configuring Context")
95+
configure_ctx(ctx)
96+
9297
with change_directory(tmpdir):
9398
for plugin in pipelined_plugin:
9499
logging.debug(f"Running pipeline {plugin}")
@@ -108,9 +113,6 @@ def initialize(self, ls: LanguageServer) -> LanguageServerContext:
108113

109114
mc = ctx.inject(Mecha)
110115

111-
logging.debug("Configuring mecha")
112-
configure_mecha(mc)
113-
114116
for pack in ctx.packs:
115117
logging.debug("Enqueuing files in database")
116118
# Add file to the compilation database
@@ -133,7 +135,8 @@ def initialize(self, ls: LanguageServer) -> LanguageServerContext:
133135
return ctx
134136

135137

136-
def configure_mecha(mc: Mecha):
138+
def configure_ctx(ctx: LanguageServerContext):
137139
# mc.steps = mc.steps[: mc.steps.index(mc.lint) + 1]
138140

141+
register_providers(ctx)
139142
apply_patches()

0 commit comments

Comments
 (0)