Change registry mechanism to avoid circular imports #365
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
closes #288
Rationale
In the ticket #288, it appeared that simply importing any given calendar would import all the library because of the "auto-registration" of calendars into the ISO registry.
You just need to run the following code and inspect the last lines of the output to witness it:
I've attached the
trace-master.log
here, which is an extract of the output when running against current master (v5.0.3).trace-master.log
Improvements
This current PR has a very different output. As you can see in the
trace-288.log
which corresponds to the same code executed on this very branch.trace-288.log
Here's an array showing the main differences:
Important Note The API of the registry module hasn't changed, as all tests show no regression. However, it's expected to change, in order to return plain built-in
dict
objects instead ofOrderedDict
objects. A deprecation warning has been added to the Changelog and the code.