mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Fixed a "ValueError: Invalid simple block" when uninstalling a package with a custom name and external source // Resolve #3816
This commit is contained in:
@ -27,6 +27,7 @@ PlatformIO Core 5
|
||||
- Added new `check_prune_system_threshold <https://docs.platformio.org/page/core/userguide/cmd_settings.html#check-prune-system-threshold>`__ setting
|
||||
- Disabled automatic removal of unnecessary development platform packages (`issue #3708 <https://github.com/platformio/platformio-core/issues/3708>`_, `issue #3770 <https://github.com/platformio/platformio-core/issues/3770>`_)
|
||||
- Fixed an issue when unnecessary packages were removed in ``update --dry-run`` mode (`issue #3809 <https://github.com/platformio/platformio-core/issues/3809>`_)
|
||||
- Fixed a "ValueError: Invalid simple block" when uninstalling a package with a custom name and external source (`issue #3816 <https://github.com/platformio/platformio-core/issues/3816>`_)
|
||||
|
||||
* **PlatformIO Home**
|
||||
|
||||
|
@ -112,16 +112,11 @@ class LibraryPackageManager(BasePackageManager): # pylint: disable=too-many-anc
|
||||
)
|
||||
|
||||
def _install_dependency(self, dependency, silent=False):
|
||||
if set(["name", "version"]) <= set(dependency.keys()) and any(
|
||||
c in dependency["version"] for c in (":", "/", "@")
|
||||
):
|
||||
spec = PackageSpec("%s=%s" % (dependency["name"], dependency["version"]))
|
||||
else:
|
||||
spec = PackageSpec(
|
||||
owner=dependency.get("owner"),
|
||||
name=dependency.get("name"),
|
||||
requirements=dependency.get("version"),
|
||||
)
|
||||
spec = PackageSpec(
|
||||
owner=dependency.get("owner"),
|
||||
name=dependency.get("name"),
|
||||
requirements=dependency.get("version"),
|
||||
)
|
||||
search_filters = {
|
||||
key: value
|
||||
for key, value in dependency.items()
|
||||
@ -143,11 +138,12 @@ class LibraryPackageManager(BasePackageManager): # pylint: disable=too-many-anc
|
||||
if not silent:
|
||||
self.print_message("Removing dependencies...", fg="yellow")
|
||||
for dependency in manifest.get("dependencies"):
|
||||
pkg = self.get_package(
|
||||
PackageSpec(
|
||||
name=dependency.get("name"), requirements=dependency.get("version")
|
||||
)
|
||||
spec = PackageSpec(
|
||||
owner=dependency.get("owner"),
|
||||
name=dependency.get("name"),
|
||||
requirements=dependency.get("version"),
|
||||
)
|
||||
pkg = self.get_package(spec)
|
||||
if not pkg:
|
||||
continue
|
||||
self._uninstall(pkg, silent=silent)
|
||||
|
@ -107,16 +107,21 @@ class PackageSpec(object): # pylint: disable=too-many-instance-attributes
|
||||
def __init__( # pylint: disable=redefined-builtin,too-many-arguments
|
||||
self, raw=None, owner=None, id=None, name=None, requirements=None, url=None
|
||||
):
|
||||
self._requirements = None
|
||||
self.owner = owner
|
||||
self.id = id
|
||||
self.name = name
|
||||
self._requirements = None
|
||||
self.url = url
|
||||
self.raw = raw
|
||||
if requirements:
|
||||
self.requirements = requirements
|
||||
try:
|
||||
self.requirements = requirements
|
||||
except ValueError as exc:
|
||||
if not self.name or self.url or self.raw:
|
||||
raise exc
|
||||
self.raw = "%s=%s" % (self.name, requirements)
|
||||
self._name_is_custom = False
|
||||
self._parse(raw)
|
||||
self._parse(self.raw)
|
||||
|
||||
def __eq__(self, other):
|
||||
return all(
|
||||
|
@ -18,11 +18,10 @@ from platformio.package.meta import PackageSpec
|
||||
|
||||
class PlatformPackagesMixin(object):
|
||||
def get_package_spec(self, name, version=None):
|
||||
version = version or self.packages[name].get("version")
|
||||
if version and any(c in version for c in (":", "/", "@")):
|
||||
return PackageSpec("%s=%s" % (name, version))
|
||||
return PackageSpec(
|
||||
owner=self.packages[name].get("owner"), name=name, requirements=version
|
||||
owner=self.packages[name].get("owner"),
|
||||
name=name,
|
||||
requirements=version or self.packages[name].get("version"),
|
||||
)
|
||||
|
||||
def get_package(self, name, spec=None):
|
||||
|
@ -169,6 +169,15 @@ def test_spec_vcs_urls():
|
||||
url="git+git@github.com:platformio/platformio-core.git",
|
||||
requirements="^1.2.3,!=5",
|
||||
)
|
||||
assert PackageSpec(
|
||||
owner="platformio",
|
||||
name="external-repo",
|
||||
requirements="https://github.com/platformio/platformio-core",
|
||||
) == PackageSpec(
|
||||
owner="platformio",
|
||||
name="external-repo",
|
||||
url="git+https://github.com/platformio/platformio-core",
|
||||
)
|
||||
|
||||
|
||||
def test_spec_as_dict():
|
||||
|
Reference in New Issue
Block a user