Skip to content

Regression in i-adding array.array to std::vector in PyROOT #18768

Open
@lwpiotr

Description

@lwpiotr

Check duplicate issues.

  • Checked for duplicates

Description

In (Py)ROOT 6.30.06 one can properly += (iadd) an array.array to an std.vector. In the current master, this operation changes the type from (in my test case) cppyy.gbl.std.vector to cppyy.gbl.__gnu_cxx.__normal_iterator<unsigned short*,vector >, which is not compatible with the standard vector.

+= with nested list of arrays was the only way known to me to assign values to a nested std::vector with ROOT 6.30.06. It seems that now .assign(nested pure list) works. So, detecting the user's ROTO version, I can easily make my code work (however dirty the hack with the ROTO version is). Still, I wanted to report the regression and also the fact, that += nested list doesn't work (while the assign() does).

Reproducer

import ROOT
import array
d = ROOT.vector("unsigned short")()
a = array.array('H', [0, 1])
d+=a
print(type(d))

ROOT version

heads/master@v6-37-01-6541-g9a9e7697e4

Installation method

Self compilation

Operating system

Fedora 42

Additional context

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions