MCPcopy
hub / github.com/pyodide/pyodide / calculate_diff

Function calculate_diff

tools/create_lockfile_diff.py:163–210  ·  view source on GitHub ↗

Calculate the differences between two Pyodide lockfiles. Returns a tuple of three lists: - Added packages - Removed packages - Changed packages (with old and new versions)

(
    old_lockfile_path: Path, new_lockfile_path: Path
)

Source from the content-addressed store, hash-verified

161
162
163def calculate_diff(
164 old_lockfile_path: Path, new_lockfile_path: Path
165) -> tuple[list[PackageDiff], list[PackageDiff], list[PackageDiff]]:
166 """
167 Calculate the differences between two Pyodide lockfiles.
168
169 Returns a tuple of three lists:
170 - Added packages
171 - Removed packages
172 - Changed packages (with old and new versions)
173 """
174 old_lockfile = PyodideLockSpec.from_json(Path(old_lockfile_path))
175 new_lockfile = PyodideLockSpec.from_json(Path(new_lockfile_path))
176
177 old_packages = {
178 pkg.name: pkg
179 for pkg in old_lockfile.packages.values()
180 if is_normal_python_package(pkg)
181 }
182 new_packages = {
183 pkg.name: pkg
184 for pkg in new_lockfile.packages.values()
185 if is_normal_python_package(pkg)
186 }
187
188 added = [
189 PackageDiff(name=pkg.name, old_version=None, new_version=pkg.version)
190 for name, pkg in new_packages.items()
191 if name not in old_packages
192 ]
193
194 removed = [
195 PackageDiff(name=pkg.name, old_version=pkg.version, new_version=None)
196 for name, pkg in old_packages.items()
197 if name not in new_packages
198 ]
199
200 changed = [
201 PackageDiff(
202 name=name,
203 old_version=old_packages[name].version,
204 new_version=new_packages[name].version,
205 )
206 for name in set(old_packages) & set(new_packages)
207 if old_packages[name].version != new_packages[name].version
208 ]
209
210 return added, removed, changed
211
212
213def main():

Callers 2

test_calculate_diffFunction · 0.90
mainFunction · 0.85

Calls 5

is_normal_python_packageFunction · 0.85
PackageDiffClass · 0.85
setFunction · 0.85
itemsMethod · 0.80
valuesMethod · 0.45

Tested by 1

test_calculate_diffFunction · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…