-
Notifications
You must be signed in to change notification settings - Fork 489
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
Date dictionaries are initially empty #1824
Comments
Hi @dsoprea
I agree w/ you on this. It's 100% dict-like object.
However this one is something I have a different angle on. Could you specify what made you think that the dictionary would be populated w/ holidays? Originally I'm mostly interested on documentation improvement related to this part:
Thanks for your help! |
A dictionary is thought of as a static type (a static one not an immutable one, to be clear). By nature of returning a dictionary, you assume that there are no other steps to be taken for it to have data. Especially when the dataset is already specific and thought of as being fairly static. If you tell me that you're going to essentially give me a "dictionary of holidays" but what you give me will always be an empty dictionary of holidays due to undocumented behavior then I'd consider that a broken design. I don't think we're thinking of performance the right way. You've already overloaded the concept of dictionaries and are doing some lazy-loading. If, however, the developer is calling |
I thought we both agreed it's not a dict but a dict-like object. It seem that your whole case is built upon this misleading comment that needs to be fixed. Also I beg to disagree on your "undocumented behavior" comment. I believe your ideas would be helpful to consider while implementing holidays v1. Maybe even As you can see this project could use external contributor's help. Please let us know if you're willing to help with that. |
You can just initialize |
@KJhellico Thanks. That's really useful. |
Marking this as resolved. |
The documentation very states that "holidays.<country>()" returns a dictionary in multiple places:
https://github.com/vacanza/python-holidays/blob/fde28db1d17e05e0853585936b8b8f85e9e38d34/README.rst?plain=1#L106
This is misleading. It's a dictionary-like object.
It's also initially empty, which is unexpected when you just refer to it as a dictionary:
Here, we had to do a membership check first (either via indexing or
get()
). Population appears to be lazy-loaded and isn't triggered by just printing the dictionary (__dict__
).If you don't want to change/fix this, then at least don't aggressively imply that the data will be there and ready as soon as you instantiate the class. It's confusing and this proper handling is not documented.
The text was updated successfully, but these errors were encountered: