biotite icon indicating copy to clipboard operation
biotite copied to clipboard

Avoid deserialization of PDBx data in `__contains__()`

Open padix-key opened this issue 4 months ago • 0 comments

Currently the CIF and BinaryCIF container classes use the default mixin implementation of __contains__(). However, this default implementation uses

try:
    self[key]:
except KeyError:
    return False
return True

Hence, calling __contains__() actually gets the value, e.g. checking if a category name is in a CIF/BCIF block would automatically deserialize the category data. This counteracts the lazy deserialization behavior.

This PR explicitly implements __contains__() for all the mentioned container classes, checking only if a key is present and thus avoid the automatic deserialization.

padix-key avatar Oct 18 '24 09:10 padix-key