Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -79,19 +79,19 @@ def _create_config(self) -> TVimConfig:
name="g:coderunner_by_file_ext",
getter=TVimByFileExtConfigValueGetter(),
validator=TDispatchersValidator(),
allowed_values_description="Dict[str, str] value",
allowed_values_description="dict[str, str]",
),
by_file_type_field=TConfigField(
name="g:coderunner_by_file_type",
getter=TVimByFileTypeConfigValueGetter(),
validator=TDispatchersValidator(),
allowed_values_description="Dict[str, str] value",
allowed_values_description="dict[str, str]",
),
by_glob_field=TConfigField(
name="g:coderunner_by_glob",
getter=TVimByGlobConfigValueGetter(),
validator=TDispatchersValidator(),
allowed_values_description="Dict[str, str] value",
allowed_values_description="dict[str, str]",
),
dispatchers_order_field=TConfigField(
name="g:coderunner_runners_order",
Expand Down
2 changes: 1 addition & 1 deletion python_coderunner/src/config/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from .basic import TBasicConfig
from .config_field import TConfigField
from .exceptions import ConfigFieldNotFoundError, ConfigFieldValidationError
from .exceptions import ConfigFieldUndefinedValueError, ConfigFieldValidationError
from .interface import EDispatchersTypes, IConfig
from .vim_config import TVimConfig
4 changes: 2 additions & 2 deletions python_coderunner/src/config/basic.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import TypeVar

from .config_field import TConfigField
from .exceptions import ConfigFieldNotFoundError, ConfigFieldValidationError
from .exceptions import ConfigFieldUndefinedValueError, ConfigFieldValidationError
from .interface import EDispatchersTypes, IConfig

ValueType = TypeVar("ValueType")
Expand Down Expand Up @@ -41,7 +41,7 @@ def _get_field_value(self, field: TConfigField[ValueType]) -> ValueType:
"""
try:
return field.get()
except (ConfigFieldNotFoundError, ConfigFieldValidationError) as e:
except (ConfigFieldUndefinedValueError, ConfigFieldValidationError) as e:
raise ValueError(str(e)) from e

def get_by_file_ext(self) -> dict[str, str]:
Expand Down
4 changes: 2 additions & 2 deletions python_coderunner/src/config/config_field.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Any, Generic, TypeVar

from .exceptions import ConfigFieldNotFoundError, ConfigFieldValidationError
from .exceptions import ConfigFieldUndefinedValueError, ConfigFieldValidationError
from .getter import IConfigValueGetter, UndefinedValueError
from .validator import IValidator, ValidationError

Expand Down Expand Up @@ -32,7 +32,7 @@ def get(self) -> ValueType:
try:
raw_value: Any = self._getter()
except UndefinedValueError as e:
raise ConfigFieldNotFoundError.from_undefined_value_error(e, self._allowed_values_description)
raise ConfigFieldUndefinedValueError.from_undefined_value_error(e, self._allowed_values_description)

try:
return self._validator(raw_value)
Expand Down
2 changes: 1 addition & 1 deletion python_coderunner/src/config/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from .validator import ValidationError


class ConfigFieldNotFoundError(UndefinedValueError):
class ConfigFieldUndefinedValueError(UndefinedValueError):
@classmethod
def from_undefined_value_error(cls, e: UndefinedValueError, allowed_values: str) -> Self:
return cls(f"{e} Allowed values: {allowed_values}.")
Expand Down
27 changes: 27 additions & 0 deletions python_coderunner/src/project_info_extractor/base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import os
from abc import abstractmethod
from typing import Iterable

from ..file_info_extractor import IFileInfoExtractor
from .interface import IProjectInfoExtractor


class TBaseProjectInfoExtractor(IProjectInfoExtractor):
def __init__(self, file_info_extractor: IFileInfoExtractor):
self._file_info_extractor: IFileInfoExtractor = file_info_extractor

@abstractmethod
def get_workspace_root(self) -> str:
raise NotImplementedError

def get_all_files_filter_by_exts(self, exts: set[str]) -> Iterable[str]:
for root, _, files in os.walk(self.get_workspace_root()):
for file in files:
if self._file_info_extractor.get_file_ext(file) in exts:
yield os.path.join(root, file)

def get_all_files_filter_by_file_type(self, file_types: set[str]) -> Iterable[str]:
for root, _, files in os.walk(self.get_workspace_root()):
for file in files:
if self._file_info_extractor.get_file_type(file) in file_types:
yield os.path.join(root, file)
18 changes: 4 additions & 14 deletions python_coderunner/src/project_info_extractor/interface.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,16 @@
import os
from abc import ABC, abstractmethod
from typing import Iterable

from ..file_info_extractor import IFileInfoExtractor


class IProjectInfoExtractor(ABC):
def __init__(self, file_info_extractor: IFileInfoExtractor):
self._file_info_extractor: IFileInfoExtractor = file_info_extractor

@abstractmethod
def get_workspace_root(self) -> str:
raise NotImplementedError

@abstractmethod
def get_all_files_filter_by_exts(self, exts: set[str]) -> Iterable[str]:
for root, _, files in os.walk(self.get_workspace_root()):
for file in files:
if self._file_info_extractor.get_file_ext(file) in exts:
yield os.path.join(root, file)
raise NotImplementedError

@abstractmethod
def get_all_files_filter_by_file_type(self, file_types: set[str]) -> Iterable[str]:
for root, _, files in os.walk(self.get_workspace_root()):
for file in files:
if self._file_info_extractor.get_file_type(file) in file_types:
yield os.path.join(root, file)
raise NotImplementedError
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import vim

from .interface import IProjectInfoExtractor
from .base import TBaseProjectInfoExtractor


class TVimProjectInfoExtractor(IProjectInfoExtractor):
class TVimProjectInfoExtractor(TBaseProjectInfoExtractor):
def get_workspace_root(self) -> str:
return vim.eval("getcwd()")
6 changes: 3 additions & 3 deletions python_coderunner/tests/unit/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,19 +61,19 @@ def fixture_vim_config() -> IConfig:
name="g:coderunner_by_file_ext",
getter=TVimByFileExtConfigValueGetter(),
validator=TDispatchersValidator(),
allowed_values_description="Dict[str, str] value",
allowed_values_description="dict[str, str]",
),
by_file_type_field=TConfigField(
name="g:coderunner_by_file_type",
getter=TVimByFileTypeConfigValueGetter(),
validator=TDispatchersValidator(),
allowed_values_description="Dict[str, str] value",
allowed_values_description="dict[str, str]",
),
by_glob_field=TConfigField(
name="g:coderunner_by_glob",
getter=TVimByGlobConfigValueGetter(),
validator=TDispatchersValidator(),
allowed_values_description="Dict[str, str] value",
allowed_values_description="dict[str, str]",
),
dispatchers_order_field=TConfigField(
name="g:coderunner_runners_order",
Expand Down