Chain links official documentation bmesh operators example - Ask explanation

Hi,
In this example (here), we can see this part of code:

# Spin and deal with geometry on side 'a'
edges_start_a = bm.edges[:]
geom_start_a = bm.verts[:] + edges_start_a
ret = bmesh.ops.spin(
    bm,
    geom=geom_start_a,
    angle=math.radians(180.0),
    steps=8,
    axis=(1.0, 0.0, 0.0),
    cent=(0.0, 1.0, 0.0))

Anybody may explain why authors added bm.verts[:] to geom_start_a

edges_start_a = bm.edges[:]
# here just after -> WHY?
geom_start_a = bm.verts[:] + edges_start_a

It seems to work with edges_start_a …

thank you

Sorry,

Oops!

In fact, it absolutely does not give the same result.
Otherwise the “edges” are not included in the movement. See the pictures …

Pasted image 20240321172030

versus

Pasted image 20240321172105

Oops again … not the same …

This also allows recovery of the last shape formed in the variable “edges_end_a” with if isinstance ... bmesh.types.BMEdge :

edges_end_a = [ele for ele in ret["geom_last"]
               if isinstance(ele, bmesh.types.BMEdge)]