Extensions: lock the repositories before overwriting their manifests
[blender-addons-contrib.git] / bl_pkg / bl_extension_local.py
blobb28386226932230daf3d6bf87cfb81478f39c5ba
1 # SPDX-FileCopyrightText: 2023 Blender Foundation
3 # SPDX-License-Identifier: GPL-2.0-or-later
5 """
6 High level API for managing an extension local site-packages and wheels.
8 NOTE: this is a standalone module.
9 """
11 __all__ = (
12 "sync",
16 import os
17 import sys
19 from .wheel_manager import WheelSource
21 from typing import (
22 List,
26 def sync(
28 local_dir: str,
29 wheel_list: List[WheelSource],
30 ) -> None:
31 from . import wheel_manager
32 local_dir_site_packages = os.path.join(
33 local_dir,
34 "lib",
35 "python{:d}.{:d}".format(sys.version_info.major, sys.version_info.minor),
36 "site-packages",
39 wheel_manager.apply_action(
40 local_dir=local_dir,
41 local_dir_site_packages=local_dir_site_packages,
42 wheel_list=wheel_list,
44 if os.path.exists(local_dir_site_packages):
45 if local_dir_site_packages not in sys.path:
46 sys.path.append(local_dir_site_packages)