Pin a resolved version for a package requirement. Args: package_name: Name of the package requirement: Original requirement (e.g., "~1.23800.0") resolved_version: Resolved version (e.g., "1.23800.240113") package_type: Type of package
(
self,
package_name: str,
requirement: str,
resolved_version: str,
package_type: str = "tool",
metadata: Optional[dict[str, Any]] = None,
)
| 121 | return entry.get("resolved_version") |
| 122 | |
| 123 | def pin_version( |
| 124 | self, |
| 125 | package_name: str, |
| 126 | requirement: str, |
| 127 | resolved_version: str, |
| 128 | package_type: str = "tool", |
| 129 | metadata: Optional[dict[str, Any]] = None, |
| 130 | ) -> bool: |
| 131 | """ |
| 132 | Pin a resolved version for a package requirement. |
| 133 | |
| 134 | Args: |
| 135 | package_name: Name of the package |
| 136 | requirement: Original requirement (e.g., "~1.23800.0") |
| 137 | resolved_version: Resolved version (e.g., "1.23800.240113") |
| 138 | package_type: Type of package |
| 139 | metadata: Optional additional metadata |
| 140 | |
| 141 | Returns: |
| 142 | True if pinning succeeded |
| 143 | """ |
| 144 | data = self._load() |
| 145 | packages = data.get("packages", {}) |
| 146 | |
| 147 | key = f"{package_type}/{package_name}" |
| 148 | entry: dict[str, Any] = { |
| 149 | "requirement": requirement, |
| 150 | "resolved_version": resolved_version, |
| 151 | "pinned_at": datetime.now().isoformat(), |
| 152 | } |
| 153 | |
| 154 | if metadata: |
| 155 | entry["metadata"] = metadata |
| 156 | |
| 157 | packages[key] = entry |
| 158 | data["packages"] = packages |
| 159 | |
| 160 | return self._save() |
| 161 | |
| 162 | def clear_pins(self) -> bool: |
| 163 | """ |