Regenerate Pipfile.lock against Python 3.13 - #183
Open
caglarpir wants to merge 1 commit into
Open
Conversation
Pipfile.lock had drifted: the default and develop sections pinned different versions of urllib3, protobuf and click, so Dependabot's per-section bumps left the develop side vulnerable even after the runtime side was patched. Regenerating resolves both sections from the same solve. Notable changes: - resolves all remaining Python security advisories (urllib3 2.5.0 -> 2.7.0, protobuf 6.31.1 -> 6.33.6, requests -> 2.34.2, idna -> 3.19, pytest -> 9.1.1, pygments -> 2.21.0, jaraco.context -> 6.1.2) - drops 8 backport packages no longer needed on 3.13 (tomli, typing-extensions, exceptiongroup, importlib-metadata, zipp, pytz, tzdata, backports.tarfile) - 74 -> 67 packages, 36 version changes, no prereleases - no remaining version conflicts between default and develop Also corrects the now-stale comment on the python-version pin: the scipy/OpenBLAS problem it described is resolved by this refresh (scipy 1.18.1 ships cp314 wheels). The pin stays so CI cannot drift onto an interpreter the lockfile was never resolved against.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refreshes the whole lockfile from a single resolve, clearing the remaining Python security advisories and the section drift that was preventing Dependabot from fully fixing them.
Why a full regenerate rather than more per-package bumps
Pipfile.lockhad drifted so thatdefaultanddeveloppinned different versions of the same package:Dependabot bumps one section at a time, so the runtime side got patched while a contributor running
pipenv install --devstill received the vulnerable versions — and the alerts never cleared. Five of the nine open advisories were this, not a missing bump. Regenerating resolves both sections from one solve, and the new lock has no version conflicts between sections.What changed
allow_prereleases)tomli,typing-extensions,exceptiongroup,importlib-metadata,zipp,pytz,tzdata,backports.tarfileAlso corrects the comment I left on the
python-versionpin, which is now stale — the scipy/OpenBLAS problem it described is fixed by this refresh. The pin stays, but for the durable reason: CI should not drift onto an interpreter the lockfile has never been resolved against.How this was verified
Beyond the repo suite (17 tests, only 4 of which touch a third-party library), I built a differential harness: 22 probes exercising each dependency directly and through the SDK, driven from a recorded 1.4 MB vector tile so results are reproducible. The same harness runs against the old and new locks and the outputs are diffed — any offline difference is attributable to the dependency change alone. Determinism was confirmed by three runs under different
PYTHONHASHSEEDproducing byte-identical output.Probes cover: mercantile tile math; shapely geometry ops; haversine; geojson; turfpy (and via it numpy/scipy); pandas; protobuf → mapbox-vector-tile → vt2geojson tile decoding; requests/urllib3 session construction; dateutil; plus the SDK’s URL builders,
extract_properties, thefilter.pipelinechain, format utils, GeoJSON models, an import sweep of all 20 modules, and exception paths. Three live probes hit the real API.Result: one behavioural difference across all 22 probes.
That is pandas 3.0’s new default string dtype. It does not affect this project: the SDK never imports pandas — it appears only in
tests/test_interface.py:53, via.tolist(), which is unchanged. Everything else is identical.Test plan
Locally, on Python 3.13, against the regenerated lock:
pytest— 17 passedpython -m build— sdist + wheel builtflake8 src/mapillary --select=E9,F63,F7,F82— 0I also checked all 67 pins against PyPI: every one is either a pure-Python wheel or ships cp314 manylinux wheels, with
turfpy==0.0.7the only sdist-only dependency (pure Python, no build step). So Python 3.14 is now unblocked — worth a separate PR once this settles, not folded in here.CI on this PR is the cross-check that the lock resolves on Linux, since it was generated on macOS.