Upgrading to Python 3.15: what should I check first?
Python 3.15 makes UTF-8 the default file encoding, removes some APIs and changes tarfile behavior. A short checklist for testing the upgrade.
Deep dives, practical guides, and incident analyses from engineers who build Safeguard. No fluff, no vendor FUD — just what you need to ship secure software.
Python 3.15 makes UTF-8 the default file encoding, removes some APIs and changes tarfile behavior. A short checklist for testing the upgrade.
Python 3.10 is end of life as of 2026-10-01 and gets no more security fixes. Choose 3.13 or 3.14 for the move, then follow these five steps.
PyPI limits single files to 100 MB and whole projects to 10 GB by default. See the errors, why yanking does not free space, and how to request an increase.
PyPI never lets a distribution filename be reused, even after delete. Why the upload error appears, what the three causes are, and how to release a fix.
GitHub push rulesets can refuse pushes by file path, extension or size across a whole fork network. What they catch, what they miss, and where they apply.
Purl qualifiers add detail such as checksums, download URLs and version ranges. Learn which common keys exist and how to keep them minimal.
A Debian purl uses type deb, the vendor as namespace, and arch and distro qualifiers. Learn the rules and why source packages need arch=source.
Prefer pkg:oci with a sha256 digest for container images, and use repository_url and tag as qualifiers. Here is how oci and docker purls differ.
pull_request_target is safe only if it never runs code from a pull request. Learn the pwn request pattern and how to split workflows with workflow_run.
Weekly insights on software supply chain security, delivered to your inbox.
Your first fix PR is minutes away.
No sales call required, even your agent can complete the purchase over MCP.