Open mwtoews opened 2 months ago
This does have a breaking change, where previously the obj.text
attribute was bytes
, and now changed to str
. For instance:
Before:
>>> pth = example_data_path / "unstructured/headu.githds"
>>> obj = flopy.utils.binaryfile.HeadUFile(pth)
>>> obj.text
b'headu'
After:
>>> obj = flopy.utils.binaryfile.HeadUFile(pth)
>>> obj.text
'headu'
>>> obj.text_bytes
b' HEADU'
if this is a deal-breaker, then obj.text
can be kept as the modified bytes (possibly raising a deprecation message if accessed), and the str
version of the attribute instead stored at obj.text_str
.
Also, I should note that this PR does not change FormattedHeadFile, since further refactoring may be needed.
Attention: Patch coverage is 63.15789%
with 7 lines
in your changes missing coverage. Please review.
Project coverage is 70.8%. Comparing base (
e2a85a3
) to head (fb14357
).
Thanks @langevin-usgs for the info, I'll create and add a mixed text example to test, e.g. head/drawdown. The text parameter can be changed to optional, which would default to read the first text header, and warn if more than one found.
Confirmed I can create the mixed-text file with older MF versions, and testing current and ancient versions of flopy I can see this feature has never worked. I'll superseded this PR with a fix after a few other related refactors that use the .headers
data frame property.
This PR ignores the
text=
parameter fromHeadFile
,HeadUFile
andUcnFile
, since this should be read from the file and is constant for all records. This PR adds these attributes:obj.text_bytes
, the 16-byte char bytes obtained from the fileobj.text
, astr
version of this field, .e.g., used byflopy.export
for NetCDF variable namesThere are instances where other binary files can be attempted to be read (e.g. "mt3d_test/mf96mt3d/P01/case1b/MT3D001.UCN" with HeadFile), but these are now caught with exceptions raised. Warnings are raised if the text records are inconsistent, which shouldn't happen (unless I've misunderstood something!)