aboutsummaryrefslogtreecommitdiff
path: root/pw_package/py/pw_package/package_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'pw_package/py/pw_package/package_manager.py')
-rw-r--r--pw_package/py/pw_package/package_manager.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/pw_package/py/pw_package/package_manager.py b/pw_package/py/pw_package/package_manager.py
index 6221798ec..5b2232bed 100644
--- a/pw_package/py/pw_package/package_manager.py
+++ b/pw_package/py/pw_package/package_manager.py
@@ -21,6 +21,8 @@ import pathlib
import shutil
from typing import Dict, List, Optional, Sequence, Tuple
+from pw_env_setup import config_file
+
_LOG: logging.Logger = logging.getLogger(__name__)
@@ -94,10 +96,10 @@ class Packages:
available: Tuple[str, ...]
-class UpstreamOnlyPackageError(Exception):
+class MiddlewareOnlyPackageError(Exception):
def __init__(self, pkg_name):
super().__init__(
- f'Package {pkg_name} is an upstream-only package--it should be '
+ f'Package {pkg_name} is a middleware-only package--it should be '
'imported as a submodule and not a package'
)
@@ -109,6 +111,12 @@ class PackageManager:
self._pkg_root = root
os.makedirs(root, exist_ok=True)
+ config = config_file.load().get('pw', {}).get('pw_package', {})
+ self._allow_middleware_only_packages = config.get(
+ 'allow_middleware_only_packages',
+ False,
+ )
+
def install(self, package: str, force: bool = False) -> None:
"""Install the named package.
@@ -121,11 +129,11 @@ class PackageManager:
pkg = _PACKAGES[package]
if not pkg.allow_use_in_downstream:
- if os.environ.get('PW_ROOT') != os.environ.get('PW_PROJECT_ROOT'):
+ if not self._allow_middleware_only_packages:
if force:
- _LOG.warning(str(UpstreamOnlyPackageError(pkg.name)))
+ _LOG.warning(str(MiddlewareOnlyPackageError(pkg.name)))
else:
- raise UpstreamOnlyPackageError(pkg.name)
+ raise MiddlewareOnlyPackageError(pkg.name)
if force:
self.remove(package)