This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/master by this push:
     new c9f9d2c  Optimize json schema validation in providers_manager (#12420)
c9f9d2c is described below

commit c9f9d2cea807681008e6a280646a1ffc22c70f84
Author: Kamil BreguĊ‚a <[email protected]>
AuthorDate: Wed Nov 18 07:07:53 2020 +0100

    Optimize json schema validation in providers_manager (#12420)
---
 airflow/providers_manager.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/airflow/providers_manager.py b/airflow/providers_manager.py
index cf5b1d9..e09b5d8 100644
--- a/airflow/providers_manager.py
+++ b/airflow/providers_manager.py
@@ -21,7 +21,6 @@ import json
 import logging
 import pkgutil
 import traceback
-from typing import Dict
 
 import jsonschema
 import yaml
@@ -36,8 +35,11 @@ except ImportError:
 log = logging.getLogger(__name__)
 
 
-def _load_schema() -> Dict:
-    return json.loads(importlib_resources.read_text('airflow', 
'provider.yaml.schema.json'))
+def _create_validator():
+    schema = json.loads(importlib_resources.read_text('airflow', 
'provider.yaml.schema.json'))
+    cls = jsonschema.validators.validator_for(schema)
+    validator = cls(schema)
+    return validator
 
 
 class ProvidersManager:
@@ -50,7 +52,7 @@ class ProvidersManager:
         except ImportError as e:
             log.warning("No providers are present or error when importing 
them! :%s", e)
             return
-        self._schema = _load_schema()
+        self._validator = _create_validator()
         self.__find_all_providers(providers.__path__)
 
     def __find_all_providers(self, paths: str):
@@ -67,7 +69,7 @@ class ProvidersManager:
             try:
                 provider = importlib_resources.read_text(imported_module, 
'provider.yaml')
                 provider_info = yaml.safe_load(provider)
-                jsonschema.validate(provider_info, schema=self._schema)
+                self._validator.validate(provider_info)
                 self._provider_directory[provider_info['package-name']] = 
provider_info
             except FileNotFoundError:
                 # This is OK - this is not a provider package

Reply via email to