-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix inefficient and sometimes inaccurate build process #451
Conversation
Codecov Report
@@ Coverage Diff @@
## dev #451 +/- ##
==========================================
+ Coverage 81.03% 81.30% +0.27%
==========================================
Files 36 36
Lines 7365 7425 +60
Branches 1617 1618 +1
==========================================
+ Hits 5968 6037 +69
+ Misses 1024 1016 -8
+ Partials 373 372 -1
Continue to review full report at Codecov.
|
Wow, looks like a lot of work. Much appreciated! |
There is one related condition that I want to improve: |
Motivation
Fix #337 and fix NeurodataWithoutBorders/pynwb#1313
This moves the setting of reference builders to the end of the build process, similar to how in h5tools.py, the writing of references is done at the end of the writing process. This ensures that all reference targets are built when they are encountered while traversing the build hierarchy, NOT when they are the target of a reference, which can lead to inefficient and sometimes inaccurate builds, especially with DynamicTables.
Now
BuildManager.build(...)
which must have the new argumentroot=True
when building the root container in the hierarchy.This also adds a few missing tests for the setting of datasets of references, compound datasets with references, and untyped datasets with references.
This also handles the rare case when a Container data type does not match the data type described in the spec.
This also fixes a floating point precision issue with
TestCase.assertContainerEqual(...)
Checklist
flake8
from the source directory.