load_workbook slow on files with many custom properties
`load_workbook` takes a long time (~20 seconds) to read a file with many custom properties (~10k). The following test exposes the issue: ```python def test_write_and_read_custom_doc_props(datadir, tmp_path): """Writes custom properties into a file, save the file into a temporary path and then re-read and assert that the custom properties are the ones that were written before.""" # Read workbook and assert that it doesn't have any custom property datadir.join("reader").chdir() wb = load_workbook('example_vba_and_no_custom_doc_props.xlsm') assert len(wb.custom_doc_props) == 0 # Write custom properties n_properties = 100 custom_props = {f"PropName{i}": i for i in range(n_properties)} for name, value in custom_props.items(): wb.custom_doc_props.append(IntProperty(name=name, value=value)) tmp_path_xlsx = tmp_path.with_suffix('.xlsx') wb.save(tmp_path_xlsx) # Load workbook and validate custom properties wb = load_workbook(tmp_path_xlsx) for prop in wb.custom_doc_props: assert prop.value == custom_props[prop.name] ``` If `n_properties` is set to 100, we don't notice any slowdown, but if we increase it to 10000 it takes seconds to run. The following change in the method `append` of `CustomPropertyList` makes the code run 4 to 5 times faster: ```python def append(self, prop): if prop.name in self.names: raise ValueError(f"Property with name {prop.name} already exists") self.props.append(prop) ```
issue