Skip to content

Commit da95aa7

Browse files
committed
Add extension activators, in which default service implementations can be registered. Fix wrong function call in prepare_envs
1 parent c8d34f6 commit da95aa7

17 files changed

Lines changed: 306 additions & 126 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from fine_python_ast import ast_provider, iast_provider
2+
from finecode_extension_api import extension
3+
from finecode_extension_api.interfaces import iserviceregistry
4+
5+
6+
class Activator(extension.ExtensionActivator):
7+
def __init__(self, registry: iserviceregistry.IServiceRegistry) -> None:
8+
self.registry = registry
9+
10+
def activate(self) -> None:
11+
self.registry.register_impl(
12+
iast_provider.IPythonSingleAstProvider, ast_provider.PythonSingleAstProvider
13+
)

extensions/fine_python_ast/pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ readme = "README.md"
77
requires-python = ">=3.11, <= 3.14"
88
dependencies = ["finecode_extension_api~=0.4.0a0"]
99

10+
[project.entry-points."finecode.activator"]
11+
fine_python_ast = "fine_python_ast.activator:Activator"
12+
1013
[dependency-groups]
1114
dev_workspace = ["finecode~=0.4.0a0", "finecode_dev_common_preset~=0.3.0a0"]
1215

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from fine_python_mypy import ast_provider, iast_provider
2+
from finecode_extension_api import extension
3+
from finecode_extension_api.interfaces import iserviceregistry
4+
5+
6+
class Activator(extension.ExtensionActivator):
7+
def __init__(self, registry: iserviceregistry.IServiceRegistry) -> None:
8+
self.registry = registry
9+
10+
def activate(self) -> None:
11+
self.registry.register_impl(
12+
iast_provider.IMypySingleAstProvider, ast_provider.MypySingleAstProvider
13+
)

extensions/fine_python_mypy/pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ readme = "README.md"
77
requires-python = ">=3.11, <= 3.14"
88
dependencies = ["finecode_extension_api~=0.4.0a0", "mypy (>=1.15, <2.0)"]
99

10+
[project.entry-points."finecode.activator"]
11+
fine_python_mypy = "fine_python_mypy.activator:Activator"
12+
1013
[dependency-groups]
1114
dev_workspace = ["finecode~=0.4.0a0", "finecode_dev_common_preset~=0.3.0a0"]
1215

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from fine_python_package_info import (
2+
ipypackagelayoutinfoprovider,
3+
py_package_layout_info_provider,
4+
py_src_artifact_file_classifier,
5+
)
6+
from finecode_extension_api import extension
7+
from finecode_extension_api.interfaces import iserviceregistry, isrcartifactfileclassifier
8+
9+
10+
class Activator(extension.ExtensionActivator):
11+
def __init__(self, registry: iserviceregistry.IServiceRegistry) -> None:
12+
self.registry = registry
13+
14+
def activate(self) -> None:
15+
self.registry.register_impl(
16+
ipypackagelayoutinfoprovider.IPyPackageLayoutInfoProvider,
17+
py_package_layout_info_provider.PyPackageLayoutInfoProvider,
18+
)
19+
self.registry.register_impl(
20+
isrcartifactfileclassifier.ISrcArtifactFileClassifier,
21+
py_src_artifact_file_classifier.PySrcArtifactFileClassifier,
22+
)

extensions/fine_python_package_info/pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ dependencies = [
1212
"build==1.4.*",
1313
]
1414

15+
[project.entry-points."finecode.activator"]
16+
fine_python_package_info = "fine_python_package_info.activator:Activator"
17+
1518
[dependency-groups]
1619
dev_workspace = ["finecode~=0.4.0a0", "finecode_dev_common_preset~=0.3.0a0"]
1720

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from .lint_files_handler import PyreflyLintFilesHandler, PyreflyLintFilesHandlerConfig
2+
from .pyrefly_lsp_service import PyreflyLspService
23

34
__all__ = [
45
"PyreflyLintFilesHandler",
56
"PyreflyLintFilesHandlerConfig",
7+
"PyreflyLspService",
68
]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from finecode_extension_api import extension
2+
from finecode_extension_api.interfaces import iserviceregistry
3+
4+
from fine_python_pyrefly.pyrefly_lsp_service import PyreflyLspService
5+
6+
7+
class Activator(extension.ExtensionActivator):
8+
def __init__(self, registry: iserviceregistry.IServiceRegistry) -> None:
9+
self.registry = registry
10+
11+
def activate(self) -> None:
12+
self.registry.register_impl(
13+
PyreflyLspService,
14+
PyreflyLspService,
15+
)

extensions/fine_python_pyrefly/pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ readme = "README.md"
77
requires-python = ">=3.11, <= 3.14"
88
dependencies = ["finecode_extension_api~=0.4.0a0", "pyrefly (>=0.30.0,<1.0.0)"]
99

10+
[project.entry-points."finecode.activator"]
11+
fine_python_pyrefly = "fine_python_pyrefly.activator:Activator"
12+
1013
[dependency-groups]
1114
dev_workspace = ["finecode~=0.4.0a0", "finecode_dev_common_preset~=0.3.0a0"]
1215

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import typing
2+
3+
4+
class ExtensionActivator(typing.Protocol):
5+
"""Protocol for extension activation."""
6+
7+
def activate(self) -> None:
8+
"""Called when extension is loaded."""
9+
...

0 commit comments

Comments
 (0)