what about
```
if len(set(r.metadata.tag for r in readers)) > 1:
   raise ValueError(....)
```

and using directly readers instead of copying them in ```all_readers```?