mirror of
https://github.com/esphome/esphome.git
synced 2025-09-08 14:22:21 +01:00
Fix-esphome-validation-line-number (#3815)
This commit is contained in:
committed by
GitHub
parent
b2db524366
commit
1444cddda9
@@ -165,15 +165,19 @@ class Config(OrderedDict, fv.FinalValidateConfig):
|
||||
return err
|
||||
return None
|
||||
|
||||
def get_deepest_document_range_for_path(self, path):
|
||||
# type: (ConfigPath) -> Optional[ESPHomeDataBase]
|
||||
def get_deepest_document_range_for_path(self, path, get_key=False):
|
||||
# type: (ConfigPath, bool) -> Optional[ESPHomeDataBase]
|
||||
data = self
|
||||
doc_range = None
|
||||
for item_index in path:
|
||||
for index, path_item in enumerate(path):
|
||||
try:
|
||||
if item_index in data:
|
||||
doc_range = [x for x in data.keys() if x == item_index][0].esp_range
|
||||
data = data[item_index]
|
||||
if path_item in data:
|
||||
key_data = [x for x in data.keys() if x == path_item][0]
|
||||
if isinstance(key_data, ESPHomeDataBase):
|
||||
doc_range = key_data.esp_range
|
||||
if get_key and index == len(path) - 1:
|
||||
return doc_range
|
||||
data = data[path_item]
|
||||
except (KeyError, IndexError, TypeError, AttributeError):
|
||||
return doc_range
|
||||
if isinstance(data, core.ID):
|
||||
@@ -281,7 +285,7 @@ class ConfigValidationStep(abc.ABC):
|
||||
class LoadValidationStep(ConfigValidationStep):
|
||||
"""Load step, this step is called once for each domain config fragment.
|
||||
|
||||
Responsibilties:
|
||||
Responsibilities:
|
||||
- Load component code
|
||||
- Ensure all AUTO_LOADs are added
|
||||
- Set output paths of result
|
||||
@@ -738,6 +742,10 @@ def validate_config(config, command_line_substitutions) -> Config:
|
||||
result.add_validation_step(LoadValidationStep(key, config[key]))
|
||||
result.run_validation_steps()
|
||||
|
||||
if result.errors:
|
||||
# do not try to validate further as we don't know what the target is
|
||||
return result
|
||||
|
||||
for domain, conf in config.items():
|
||||
result.add_validation_step(LoadValidationStep(domain, conf))
|
||||
result.add_validation_step(IDPassValidationStep())
|
||||
|
Reference in New Issue
Block a user