Add updates for us_hi to Juneteenth and Independence Day.#322
Conversation
|
I can see the test failed for what I wrote at 8a563bc#diff-94f4b4978b56fca05919c1fc71fdecc2e5b3807a729f77d4807ef2c0a17f0cabR736 My intent was that if the user polls for holidays for us_hi and specifies observed, Juneteenth should NOT appear. Appreciate guidance on how to rectify! |
There was a problem hiding this comment.
I have left comments.
The main fact here is that Juneteeth is a federal observed holiday. Setting it to informal for a subregion of the overall us does not make sense in the way that we have set up this gem. It's formal at the federal level.
You alluded to this in your comment:
To fix this, do I need to list every single state, or can I just make an entry for Hawaii that lists it as "informal"?
The answer is 'yes, you need to do every state'. If you wanted to do this for Hawaii then you would need to do it for every state.
As this stands now I will not merge it because of the overall implications. This PR will not fix your issues. Let me know how you would like to proceed.
EDIT: I will say that 'doing it for every state' is not impossible but it is fraught. There will need to be documentation on how every state does it. I'm not opposed to it as we can update as necessary but we need to be careful about blanket changes.
My default position right now is that we will not merge this unless you present an MR to do every state with documentation. But let's talk about that! 😃
| - given: | ||
| date: ['2020-7-3', '2021-7-5', '2026-7-3'] | ||
| regions: ["us_va"] | ||
| regions: ["us_va, us_hi"] |
There was a problem hiding this comment.
This should not be a single string. It should instead look like regions: ["us_va", "us_hi"]
| regions: [us_hi] | ||
| mday: 19 | ||
| observed: to_weekday_if_weekend(date) | ||
| type: informal |
There was a problem hiding this comment.
Adding informal here will not give you what you want. The us_hi region inherits from us. The national formal Juneteeth will come through no matter what if us you use us when you make the call.
The only way to really fix this is to remove 'juneteeth' from the overall us region and then re-add it to every region/state that formally observes it. Unfortunately there is no cleaner fix to this but that's not really a 'gem' problem...that's a USA problem. Some states treat it as formal, others don't. Politics!
Let me know how you want to proceed. I think that the 'correct' answer here is that the federal holiday takes precedence, so setting informal is really not an option. It's formal at the federal level. But I'm interested in hearing your feedback.
There was a problem hiding this comment.
Hi @ppeble by the way, I really wanted to somehow solve this often-faced blocker, that when some sub-group of a country is having special holiday rule - you have to:
- for this holiday remove country region and instead type in ALL sub-regions BUT one
- for that one sub-region create another special rule.
I was thinking that we can somehow create a rule:
- if there are some special rules for a region inside a country-wide holiday, we could put in a special set of rules right inside yaml config
- name: Juneteenth National Independence Day
regions: [us]
mday: 19
observed: to_weekday_if_weekend(date)
year_ranges:
from: 2021
exempt_regions:
us_hi:
type: informal
us_tx:
observed: to_weekday_if_sunday(date)
so basically an ability to define a set of rules for children regions.
|
Thank you for the comments and feedback! I think the issue is that even though Juneteenth is a federal holiday and as such all federal employees are subject to it, employees in various states are not. For instance, in Hawaii, schools and banks are open on Juneteenth, but the US Postal Service does not deliver mail and federal employees are on vacation. It's a weird situation with two layers of government declaring different things, and the federal one does not always filter down to the same result at the state level. That, I think, is the core issue: A federal holiday should not be assumed to mean a state holiday is observed. The Wikipedia article gets into this at https://en.wikipedia.org/wiki/Juneteenth#State_and_local_holiday
There is a parallel for this: Columbus Day is a federal holiday as per:
But it is not observed strictly as such by all states in the US; see https://en.wikipedia.org/wiki/Columbus_Day#Nonobservance for a list of states which do not observe it. In some states instead there is "Indigenous Peoples' Day" or in Hawaii "Discoverer's Day" (https://en.wikipedia.org/wiki/Indigenous_Peoples%27_Day_(United_States)#Observance_by_jurisdiction). See https://github.com/holidays/definitions/blob/master/us.yaml#L264-L272 for how this is currently handled in the definitions list. So there is a precedence for a federal holiday that is not observed in every single state in the definitions already. The path forward with the current definitions is likely to split up Juneteenth like Columbus Day and have it list per state instead of nation-wide. Alternatively, the other option would be to create some sort of a |
|
@pkarjala This is an excellent write-up and I am absolutely willing to discuss changes to behavior for this. Let me chew on this a bit and get back to you. |
|
Sounds good. Another thought as posed by #322 (comment) is that it could be configured so that there are sub-rules inside of national holidays that override the parent holiday when present by specifying the region where the hoilday is different. To my mind this could become a mess of parent/child dependency checks, but it might also be easier to read instead of separate rules. |
This creates the following additions:
I believe I wrote the tests correctly, but appreciate double-checking and guidance!