Просмотр исходного кода

refactor: allow passing extra package name to _check_dependency_is_installed() function

trgiangdo 1 месяц назад
Родитель
Сommit
6c6281c4d8
3 измененных файлов с 20 добавлено и 15 удалено
  1. 18 11
      taipy/core/common/_check_dependencies.py
  2. 1 2
      taipy/core/data/aws_s3.py
  3. 1 2
      taipy/core/data/mongo.py

+ 18 - 11
taipy/core/common/_check_dependencies.py

@@ -8,26 +8,33 @@
 # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 # specific language governing permissions and limitations under the License.
+
 from importlib import util
+from typing import Optional
 
 
-def _check_dependency_is_installed(module_name: str, package_name: str) -> None:
+def _check_dependency_is_installed(
+    module_name: str, package_name: str, extra_taipy_package_name: str, taipy_sublibrary: Optional[str] = None
+) -> None:
     """
-        Check if a package is installed.
+    Check if an extra package for taipy is installed.
+
+    Args:
+        module_name: Name of the taipy module importing the package.
+        package_name: Name of the package.
+        extra_taipy_package_name: Name of the extra taipy package.
+        taipy_sublibrary: Optional name of the taipy sublibrary.
 
-        Args:
-            module_name: Name of the taipy module importing the package.
-            package_name: Name of the package.
-    .
+    Raises:
+        RuntimeError: If the package is not installed.
     """
-    extras = {
-        "boto3": "s3",
-        "pymongo": "mongo",
-    }
+    if taipy_sublibrary is None:
+        taipy_sublibrary = "taipy"
+
     if not util.find_spec(package_name):
         raise RuntimeError(
             f"Cannot use {module_name} as {package_name} package is not installed. Please install it  "
-            f"using `pip install taipy[{extras.get(package_name)}]`."
+            f"using `pip install {taipy_sublibrary}[{extra_taipy_package_name}]`."
         )
 
 

+ 1 - 2
taipy/core/data/aws_s3.py

@@ -69,7 +69,6 @@ class S3ObjectDataNode(DataNode):
     __AWS_S3_GET_OBJECT_PARAMETERS = "aws_s3_get_object_parameters"
     __AWS_S3_PUT_OBJECT_PARAMETERS = "aws_s3_put_object_parameters"
 
-
     _REQUIRED_PROPERTIES: List[str] = [
         __AWS_ACCESS_KEY_ID,
         __AWS_SECRET_ACCESS_KEY,
@@ -93,7 +92,7 @@ class S3ObjectDataNode(DataNode):
         editor_expiration_date: Optional[datetime] = None,
         properties: Optional[Dict] = None,
     ) -> None:
-        _check_dependency_is_installed("S3 Data Node", "boto3")
+        _check_dependency_is_installed("S3 Data Node", "boto3", "s3")
         if properties is None:
             properties = {}
         required = self._REQUIRED_PROPERTIES

+ 1 - 2
taipy/core/data/mongo.py

@@ -84,7 +84,7 @@ class MongoCollectionDataNode(DataNode):
         editor_expiration_date: Optional[datetime] = None,
         properties: Dict = None,
     ) -> None:
-        _check_dependency_is_installed("Mongo Data Node", "pymongo")
+        _check_dependency_is_installed("Mongo Data Node", "pymongo", "mongo")
         if properties is None:
             properties = {}
         required = self._REQUIRED_PROPERTIES
@@ -269,4 +269,3 @@ class MongoCollectionDataNode(DataNode):
             The document dictionary.
         """
         return document_object.__dict__
-