Urgent.News

What's breaking now, across thousands of outlets.

Tech

A git tag is not a release: requests v2.16.1 declares 2.16.0

In psf/requests, the tag v2.16.1 points at code whose __version__.py says 2.16.0 . The tag v2.16.0 says the same, and the code differs between them. Check it in 30 seconds, nothing to install: curl -sO https://raw.githubusercontent.com/luizfnsilva/closure_drift/v1.1.0/closure_drift.py git clone -q https://github.com/psf/requests && cd requests python3 ../closure_drift.py --compare v2.16.0 v2.16.1…

The git tag v2.16.1 in the py project requests points to code with a __version__.py file that states 2.16.0. The tag v2.16.0 also points to the same code version. However, the two tags differ in two paths of the code. Despite both tags declaring the same version number, the code differs between them. This discrepancy raises the question of whether the tags should be considered as two different things or if it is just a labeling issue.

A closer examination using git commands reveals that the two paths differ in a fix to how urllib3's version is parsed and a restored module. The tag was created before the version was updated, which is a common occurrence among popular PyPI projects. In fact, 29 out of the 100 most-downloaded PyPI projects with a public repository have at least one version label that points to two different code states.

It's important to note that a git tag does not necessarily indicate a release. The tool used to analyze the tags cannot determine which commit of a package on PyPI was built from. There have been instances where a tag was created but never published, and where the package on PyPI was built from a commit after the tag. Tools like closure_drift 1.1.0 allow users to specify which versions were released by comparing a list of versions provided from release notes or a registry.

Only tags on the list are compared, and any tags left off will not be included in the analysis. The tool is a read-only analysis of git and does not label any tags as unpublished. The source code, method, and findings are available at https://github.com/luizfnsilva/closure_drift (DOI 10.5281/zenodo.23271569).

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Managing Agent Worktrees in Git

Running parallel AI coding agents across shared repositories via Git worktrees prevents duplicate cloning, but it exposes critical operational edge cases.

  • Agents working in shared Git repositories risk corrupting history with destructive commands.
  • Git worktrees share object database and reflogs, causing hidden state changes during rollbacks.
  • Orchestrator should generate deterministic branch names and treat worktrees as disposable cattle.

JumpToTech — Weekend Kubernetes Production Lab

Restaurant Company: Deploy, Configure, Scale & Troubleshoot Goal You are the DevOps Engineer responsible for deploying the Restaurant Company application into Kubernetes.

  • DevOps Engineers deploy Restaurant Company app into Kubernetes
  • Verify Kubernetes environment with kubectl get nodes
  • Create ConfigMap, Secret, Deployment, and Service files

Word never stores the list numbers you see — a DOCX converter has to run a numbering engine

A law firm sent me a 60-page contract to convert, and by section 7 every cross-reference was off by one. The text said "as set out in clause 6.3" while the heading it pointed to read "6.4".

  • List numbers in DOCX files are not stored, only computed at render time.
  • Word's numbering engine handles formatting, start values, and overrides.
  • Accurate conversion requires implementing ECMA-376 sequence resolution rules.

More from Saturday 10 October →