revised_holidays 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ruby.yml +25 -0
  3. data/CHANGELOG.md +446 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE +21 -0
  7. data/Makefile +45 -0
  8. data/README.md +337 -0
  9. data/Rakefile +109 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +6 -0
  12. data/definitions/.github/workflows/ruby.yml +25 -0
  13. data/definitions/.gitignore +5 -0
  14. data/definitions/CHANGELOG.md +352 -0
  15. data/definitions/Gemfile +6 -0
  16. data/definitions/LICENSE +21 -0
  17. data/definitions/METHODS.yml +26 -0
  18. data/definitions/Makefile +9 -0
  19. data/definitions/README.md +22 -0
  20. data/definitions/ar.yaml +268 -0
  21. data/definitions/at.yaml +116 -0
  22. data/definitions/au.yaml +907 -0
  23. data/definitions/be_fr.yaml +153 -0
  24. data/definitions/be_nl.yaml +153 -0
  25. data/definitions/bg.yaml +186 -0
  26. data/definitions/br.yaml +178 -0
  27. data/definitions/ca.yaml +969 -0
  28. data/definitions/ch.yaml +277 -0
  29. data/definitions/cl.yaml +294 -0
  30. data/definitions/co.yaml +437 -0
  31. data/definitions/cr.yaml +100 -0
  32. data/definitions/cz.yaml +137 -0
  33. data/definitions/de.yaml +401 -0
  34. data/definitions/dk.yaml +220 -0
  35. data/definitions/doc/CONTRIBUTING.md +44 -0
  36. data/definitions/doc/MAINTAINERS.md +39 -0
  37. data/definitions/doc/SYNTAX.md +435 -0
  38. data/definitions/doc/architecture/README.md +15 -0
  39. data/definitions/doc/architecture/adr-001.md +86 -0
  40. data/definitions/doc/architecture/adr-002.md +64 -0
  41. data/definitions/ecbtarget.yaml +74 -0
  42. data/definitions/ee.yaml +123 -0
  43. data/definitions/es.yaml +495 -0
  44. data/definitions/federalreserve.yaml +389 -0
  45. data/definitions/federalreservebanks.yaml +821 -0
  46. data/definitions/fedex.yaml +102 -0
  47. data/definitions/fi.yaml +234 -0
  48. data/definitions/fr.yaml +157 -0
  49. data/definitions/gb.yaml +565 -0
  50. data/definitions/ge.yaml +158 -0
  51. data/definitions/gr.yaml +158 -0
  52. data/definitions/hk.yaml +287 -0
  53. data/definitions/hr.yaml +171 -0
  54. data/definitions/hu.yaml +156 -0
  55. data/definitions/ie.yaml +172 -0
  56. data/definitions/index.yaml +80 -0
  57. data/definitions/is.yaml +247 -0
  58. data/definitions/it.yaml +246 -0
  59. data/definitions/jp.yaml +761 -0
  60. data/definitions/ke.yaml +107 -0
  61. data/definitions/kr.yaml +166 -0
  62. data/definitions/kz.yaml +128 -0
  63. data/definitions/li.yaml +154 -0
  64. data/definitions/lib/validation/custom_method_validator.rb +38 -0
  65. data/definitions/lib/validation/definition_validator.rb +35 -0
  66. data/definitions/lib/validation/error.rb +11 -0
  67. data/definitions/lib/validation/month_validator.rb +58 -0
  68. data/definitions/lib/validation/run.rb +66 -0
  69. data/definitions/lib/validation/test_validator.rb +83 -0
  70. data/definitions/lt.yaml +198 -0
  71. data/definitions/lu.yaml +123 -0
  72. data/definitions/lv.yaml +229 -0
  73. data/definitions/ma.yaml +96 -0
  74. data/definitions/mt_en.yaml +131 -0
  75. data/definitions/mt_mt.yaml +131 -0
  76. data/definitions/mx.yaml +160 -0
  77. data/definitions/my.yaml +79 -0
  78. data/definitions/nerc.yaml +94 -0
  79. data/definitions/ng.yaml +97 -0
  80. data/definitions/nl.yaml +127 -0
  81. data/definitions/no.yaml +169 -0
  82. data/definitions/northamericainformal.yaml +105 -0
  83. data/definitions/nyse.yaml +137 -0
  84. data/definitions/nz.yaml +346 -0
  85. data/definitions/pe.yaml +208 -0
  86. data/definitions/ph.yaml +130 -0
  87. data/definitions/pl.yaml +796 -0
  88. data/definitions/pt.yaml +187 -0
  89. data/definitions/ro.yaml +240 -0
  90. data/definitions/rs_cyrl.yaml +129 -0
  91. data/definitions/rs_la.yaml +129 -0
  92. data/definitions/ru.yaml +108 -0
  93. data/definitions/se.yaml +238 -0
  94. data/definitions/sg.yaml +89 -0
  95. data/definitions/si.yaml +162 -0
  96. data/definitions/sk.yaml +154 -0
  97. data/definitions/spec/coverage_report.rb +7 -0
  98. data/definitions/spec/data/invalid/months/malformed/bad.yaml +15 -0
  99. data/definitions/spec/data/invalid/months/missing/no_months.yaml +9 -0
  100. data/definitions/spec/data/valid/simple.yaml +15 -0
  101. data/definitions/spec/spec_helper.rb +7 -0
  102. data/definitions/spec/validation/custom_method_validator_spec.rb +60 -0
  103. data/definitions/spec/validation/definition_validator_spec.rb +43 -0
  104. data/definitions/spec/validation/month_validator_spec.rb +175 -0
  105. data/definitions/spec/validation/test_validator_spec.rb +169 -0
  106. data/definitions/th.yaml +111 -0
  107. data/definitions/tn.yaml +83 -0
  108. data/definitions/tr.yaml +174 -0
  109. data/definitions/ua.yaml +161 -0
  110. data/definitions/unitednations.yaml +189 -0
  111. data/definitions/ups.yaml +102 -0
  112. data/definitions/us.yaml +965 -0
  113. data/definitions/ve.yaml +118 -0
  114. data/definitions/vi.yaml +54 -0
  115. data/definitions/za.yaml +139 -0
  116. data/doc/CONTRIBUTING.md +72 -0
  117. data/doc/MAINTAINERS.md +81 -0
  118. data/doc/REFERENCES +19 -0
  119. data/lib/generated_definitions/MANIFEST +83 -0
  120. data/lib/generated_definitions/REGIONS.rb +6 -0
  121. data/lib/generated_definitions/ar.rb +60 -0
  122. data/lib/generated_definitions/at.rb +37 -0
  123. data/lib/generated_definitions/au.rb +177 -0
  124. data/lib/generated_definitions/be.rb +42 -0
  125. data/lib/generated_definitions/be_fr.rb +36 -0
  126. data/lib/generated_definitions/be_nl.rb +36 -0
  127. data/lib/generated_definitions/bg.rb +53 -0
  128. data/lib/generated_definitions/br.rb +37 -0
  129. data/lib/generated_definitions/ca.rb +88 -0
  130. data/lib/generated_definitions/ch.rb +95 -0
  131. data/lib/generated_definitions/cl.rb +71 -0
  132. data/lib/generated_definitions/co.rb +121 -0
  133. data/lib/generated_definitions/cr.rb +35 -0
  134. data/lib/generated_definitions/cz.rb +37 -0
  135. data/lib/generated_definitions/de.rb +65 -0
  136. data/lib/generated_definitions/dk.rb +48 -0
  137. data/lib/generated_definitions/ecbtarget.rb +30 -0
  138. data/lib/generated_definitions/ee.rb +36 -0
  139. data/lib/generated_definitions/el.rb +38 -0
  140. data/lib/generated_definitions/es.rb +56 -0
  141. data/lib/generated_definitions/europe.rb +638 -0
  142. data/lib/generated_definitions/federalreserve.rb +35 -0
  143. data/lib/generated_definitions/federalreservebanks.rb +35 -0
  144. data/lib/generated_definitions/fedex.rb +36 -0
  145. data/lib/generated_definitions/fi.rb +61 -0
  146. data/lib/generated_definitions/fr.rb +39 -0
  147. data/lib/generated_definitions/gb.rb +51 -0
  148. data/lib/generated_definitions/ge.rb +41 -0
  149. data/lib/generated_definitions/gr.rb +38 -0
  150. data/lib/generated_definitions/hk.rb +106 -0
  151. data/lib/generated_definitions/hr.rb +40 -0
  152. data/lib/generated_definitions/hu.rb +35 -0
  153. data/lib/generated_definitions/ie.rb +33 -0
  154. data/lib/generated_definitions/is.rb +60 -0
  155. data/lib/generated_definitions/it.rb +45 -0
  156. data/lib/generated_definitions/jp.rb +166 -0
  157. data/lib/generated_definitions/ke.rb +34 -0
  158. data/lib/generated_definitions/kr.rb +40 -0
  159. data/lib/generated_definitions/kz.rb +38 -0
  160. data/lib/generated_definitions/li.rb +44 -0
  161. data/lib/generated_definitions/lt.rb +38 -0
  162. data/lib/generated_definitions/lu.rb +35 -0
  163. data/lib/generated_definitions/lv.rb +56 -0
  164. data/lib/generated_definitions/ma.rb +33 -0
  165. data/lib/generated_definitions/mt_en.rb +38 -0
  166. data/lib/generated_definitions/mt_mt.rb +38 -0
  167. data/lib/generated_definitions/mx.rb +54 -0
  168. data/lib/generated_definitions/my.rb +30 -0
  169. data/lib/generated_definitions/nerc.rb +30 -0
  170. data/lib/generated_definitions/ng.rb +33 -0
  171. data/lib/generated_definitions/nl.rb +37 -0
  172. data/lib/generated_definitions/no.rb +40 -0
  173. data/lib/generated_definitions/northamerica.rb +229 -0
  174. data/lib/generated_definitions/nyse.rb +34 -0
  175. data/lib/generated_definitions/nz.rb +105 -0
  176. data/lib/generated_definitions/pe.rb +43 -0
  177. data/lib/generated_definitions/ph.rb +50 -0
  178. data/lib/generated_definitions/pl.rb +73 -0
  179. data/lib/generated_definitions/pt.rb +40 -0
  180. data/lib/generated_definitions/ro.rb +39 -0
  181. data/lib/generated_definitions/rs_cyrl.rb +39 -0
  182. data/lib/generated_definitions/rs_la.rb +39 -0
  183. data/lib/generated_definitions/ru.rb +37 -0
  184. data/lib/generated_definitions/scandinavia.rb +166 -0
  185. data/lib/generated_definitions/se.rb +53 -0
  186. data/lib/generated_definitions/sg.rb +31 -0
  187. data/lib/generated_definitions/si.rb +39 -0
  188. data/lib/generated_definitions/sk.rb +39 -0
  189. data/lib/generated_definitions/southamerica.rb +248 -0
  190. data/lib/generated_definitions/th.rb +36 -0
  191. data/lib/generated_definitions/tn.rb +32 -0
  192. data/lib/generated_definitions/tr.rb +64 -0
  193. data/lib/generated_definitions/ua.rb +37 -0
  194. data/lib/generated_definitions/unitednations.rb +81 -0
  195. data/lib/generated_definitions/ups.rb +36 -0
  196. data/lib/generated_definitions/us.rb +153 -0
  197. data/lib/generated_definitions/ve.rb +36 -0
  198. data/lib/generated_definitions/vi.rb +29 -0
  199. data/lib/generated_definitions/za.rb +36 -0
  200. data/lib/holidays/core_extensions/date.rb +57 -0
  201. data/lib/holidays/core_extensions/time.rb +23 -0
  202. data/lib/holidays/date_calculator/day_of_month.rb +68 -0
  203. data/lib/holidays/date_calculator/easter.rb +91 -0
  204. data/lib/holidays/date_calculator/lunar_date.rb +371 -0
  205. data/lib/holidays/date_calculator/weekend_modifier.rb +80 -0
  206. data/lib/holidays/definition/context/function_processor.rb +91 -0
  207. data/lib/holidays/definition/context/generator.rb +209 -0
  208. data/lib/holidays/definition/context/load.rb +29 -0
  209. data/lib/holidays/definition/context/merger.rb +22 -0
  210. data/lib/holidays/definition/decorator/custom_method_proc.rb +28 -0
  211. data/lib/holidays/definition/decorator/custom_method_source.rb +30 -0
  212. data/lib/holidays/definition/decorator/test.rb +37 -0
  213. data/lib/holidays/definition/entity/custom_method.rb +11 -0
  214. data/lib/holidays/definition/entity/test.rb +11 -0
  215. data/lib/holidays/definition/generator/module.rb +54 -0
  216. data/lib/holidays/definition/generator/regions.rb +55 -0
  217. data/lib/holidays/definition/generator/test.rb +51 -0
  218. data/lib/holidays/definition/parser/custom_method.rb +67 -0
  219. data/lib/holidays/definition/parser/test.rb +86 -0
  220. data/lib/holidays/definition/repository/cache.rb +47 -0
  221. data/lib/holidays/definition/repository/custom_methods.rb +27 -0
  222. data/lib/holidays/definition/repository/holidays_by_month.rb +57 -0
  223. data/lib/holidays/definition/repository/proc_result_cache.rb +51 -0
  224. data/lib/holidays/definition/repository/regions.rb +46 -0
  225. data/lib/holidays/definition/validator/custom_method.rb +31 -0
  226. data/lib/holidays/definition/validator/region.rb +36 -0
  227. data/lib/holidays/definition/validator/test.rb +71 -0
  228. data/lib/holidays/errors.rb +11 -0
  229. data/lib/holidays/factory/date_calculator.rb +42 -0
  230. data/lib/holidays/factory/definition.rb +143 -0
  231. data/lib/holidays/factory/finder.rb +70 -0
  232. data/lib/holidays/finder/context/between.rb +45 -0
  233. data/lib/holidays/finder/context/dates_driver_builder.rb +64 -0
  234. data/lib/holidays/finder/context/next_holiday.rb +57 -0
  235. data/lib/holidays/finder/context/parse_options.rb +104 -0
  236. data/lib/holidays/finder/context/search.rb +111 -0
  237. data/lib/holidays/finder/context/year_holiday.rb +57 -0
  238. data/lib/holidays/finder/rules/in_region.rb +31 -0
  239. data/lib/holidays/finder/rules/year_range.rb +58 -0
  240. data/lib/holidays/load_all_definitions.rb +56 -0
  241. data/lib/holidays/version.rb +3 -0
  242. data/lib/holidays.rb +130 -0
  243. data/lib/revised_holidays.rb +1 -0
  244. data/revised_holidays.gemspec +31 -0
  245. data/test/coverage_report.rb +26 -0
  246. data/test/data/test_custom_govt_holiday_defs.yaml +5 -0
  247. data/test/data/test_custom_informal_holidays_defs.yaml +11 -0
  248. data/test/data/test_custom_year_range_holiday_defs.yaml +31 -0
  249. data/test/data/test_invalid_region.rb +15 -0
  250. data/test/data/test_multiple_custom_holiday_defs.yaml +12 -0
  251. data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
  252. data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
  253. data/test/data/test_region.rb +15 -0
  254. data/test/data/test_single_custom_holiday_defs.yaml +12 -0
  255. data/test/data/test_single_custom_holiday_with_custom_procs.yaml +28 -0
  256. data/test/defs/test_defs_ar.rb +69 -0
  257. data/test/defs/test_defs_at.rb +31 -0
  258. data/test/defs/test_defs_au.rb +233 -0
  259. data/test/defs/test_defs_be_fr.rb +45 -0
  260. data/test/defs/test_defs_be_nl.rb +45 -0
  261. data/test/defs/test_defs_bg.rb +41 -0
  262. data/test/defs/test_defs_br.rb +49 -0
  263. data/test/defs/test_defs_ca.rb +289 -0
  264. data/test/defs/test_defs_ch.rb +51 -0
  265. data/test/defs/test_defs_cl.rb +69 -0
  266. data/test/defs/test_defs_co.rb +113 -0
  267. data/test/defs/test_defs_cr.rb +29 -0
  268. data/test/defs/test_defs_cz.rb +37 -0
  269. data/test/defs/test_defs_de.rb +89 -0
  270. data/test/defs/test_defs_dk.rb +47 -0
  271. data/test/defs/test_defs_ecbtarget.rb +27 -0
  272. data/test/defs/test_defs_ee.rb +41 -0
  273. data/test/defs/test_defs_es.rb +137 -0
  274. data/test/defs/test_defs_europe.rb +1522 -0
  275. data/test/defs/test_defs_fed_ex.rb +24 -0
  276. data/test/defs/test_defs_federalreserve.rb +119 -0
  277. data/test/defs/test_defs_federalreservebanks.rb +251 -0
  278. data/test/defs/test_defs_fedex.rb +31 -0
  279. data/test/defs/test_defs_fi.rb +59 -0
  280. data/test/defs/test_defs_fr.rb +43 -0
  281. data/test/defs/test_defs_gb.rb +159 -0
  282. data/test/defs/test_defs_ge.rb +53 -0
  283. data/test/defs/test_defs_gr.rb +41 -0
  284. data/test/defs/test_defs_hk.rb +59 -0
  285. data/test/defs/test_defs_hr.rb +45 -0
  286. data/test/defs/test_defs_hu.rb +47 -0
  287. data/test/defs/test_defs_ie.rb +53 -0
  288. data/test/defs/test_defs_is.rb +51 -0
  289. data/test/defs/test_defs_it.rb +55 -0
  290. data/test/defs/test_defs_jp.rb +159 -0
  291. data/test/defs/test_defs_ke.rb +31 -0
  292. data/test/defs/test_defs_kr.rb +37 -0
  293. data/test/defs/test_defs_kz.rb +39 -0
  294. data/test/defs/test_defs_li.rb +35 -0
  295. data/test/defs/test_defs_lt.rb +65 -0
  296. data/test/defs/test_defs_lu.rb +35 -0
  297. data/test/defs/test_defs_lv.rb +98 -0
  298. data/test/defs/test_defs_ma.rb +29 -0
  299. data/test/defs/test_defs_mt_en.rb +41 -0
  300. data/test/defs/test_defs_mt_mt.rb +41 -0
  301. data/test/defs/test_defs_mx.rb +49 -0
  302. data/test/defs/test_defs_my.rb +23 -0
  303. data/test/defs/test_defs_nerc.rb +29 -0
  304. data/test/defs/test_defs_ng.rb +29 -0
  305. data/test/defs/test_defs_nl.rb +33 -0
  306. data/test/defs/test_defs_no.rb +43 -0
  307. data/test/defs/test_defs_northamerica.rb +667 -0
  308. data/test/defs/test_defs_nyse.rb +46 -0
  309. data/test/defs/test_defs_nz.rb +67 -0
  310. data/test/defs/test_defs_pe.rb +47 -0
  311. data/test/defs/test_defs_ph.rb +29 -0
  312. data/test/defs/test_defs_pl.rb +229 -0
  313. data/test/defs/test_defs_pt.rb +47 -0
  314. data/test/defs/test_defs_ro.rb +65 -0
  315. data/test/defs/test_defs_rs_cyrl.rb +46 -0
  316. data/test/defs/test_defs_rs_la.rb +46 -0
  317. data/test/defs/test_defs_ru.rb +34 -0
  318. data/test/defs/test_defs_scandinavia.rb +215 -0
  319. data/test/defs/test_defs_se.rb +59 -0
  320. data/test/defs/test_defs_sg.rb +25 -0
  321. data/test/defs/test_defs_si.rb +105 -0
  322. data/test/defs/test_defs_sk.rb +41 -0
  323. data/test/defs/test_defs_southamerica.rb +327 -0
  324. data/test/defs/test_defs_th.rb +33 -0
  325. data/test/defs/test_defs_tn.rb +27 -0
  326. data/test/defs/test_defs_tr.rb +60 -0
  327. data/test/defs/test_defs_ua.rb +41 -0
  328. data/test/defs/test_defs_unitednations.rb +11 -0
  329. data/test/defs/test_defs_ups.rb +31 -0
  330. data/test/defs/test_defs_us.rb +387 -0
  331. data/test/defs/test_defs_ve.rb +35 -0
  332. data/test/defs/test_defs_vi.rb +22 -0
  333. data/test/defs/test_defs_za.rb +35 -0
  334. data/test/holidays/core_extensions/test_date.rb +122 -0
  335. data/test/holidays/core_extensions/test_date_time.rb +60 -0
  336. data/test/holidays/date_calculator/test_day_of_month.rb +27 -0
  337. data/test/holidays/date_calculator/test_easter_gregorian.rb +30 -0
  338. data/test/holidays/date_calculator/test_easter_julian.rb +36 -0
  339. data/test/holidays/date_calculator/test_lunar_date.rb +89 -0
  340. data/test/holidays/date_calculator/test_weekend_modifier.rb +54 -0
  341. data/test/holidays/definition/context/test_function_processor.rb +199 -0
  342. data/test/holidays/definition/context/test_generator.rb +226 -0
  343. data/test/holidays/definition/context/test_load.rb +37 -0
  344. data/test/holidays/definition/context/test_merger.rb +25 -0
  345. data/test/holidays/definition/decorator/test_custom_method_proc.rb +113 -0
  346. data/test/holidays/definition/decorator/test_custom_method_source.rb +96 -0
  347. data/test/holidays/definition/decorator/test_test.rb +123 -0
  348. data/test/holidays/definition/generator/test_module.rb +268 -0
  349. data/test/holidays/definition/generator/test_regions.rb +97 -0
  350. data/test/holidays/definition/generator/test_test.rb +113 -0
  351. data/test/holidays/definition/parser/test_custom_method.rb +79 -0
  352. data/test/holidays/definition/parser/test_test.rb +142 -0
  353. data/test/holidays/definition/repository/test_cache.rb +123 -0
  354. data/test/holidays/definition/repository/test_custom_methods.rb +43 -0
  355. data/test/holidays/definition/repository/test_holidays_by_month.rb +275 -0
  356. data/test/holidays/definition/repository/test_proc_result_cache.rb +91 -0
  357. data/test/holidays/definition/repository/test_regions.rb +104 -0
  358. data/test/holidays/definition/validator/test_custom_method.rb +94 -0
  359. data/test/holidays/definition/validator/test_region.rb +54 -0
  360. data/test/holidays/definition/validator/test_test.rb +60 -0
  361. data/test/holidays/finder/context/test_between.rb +172 -0
  362. data/test/holidays/finder/context/test_dates_driver_builder.rb +91 -0
  363. data/test/holidays/finder/context/test_next_holiday.rb +156 -0
  364. data/test/holidays/finder/context/test_parse_options.rb +141 -0
  365. data/test/holidays/finder/context/test_search.rb +232 -0
  366. data/test/holidays/finder/context/test_year_holiday.rb +202 -0
  367. data/test/holidays/finder/rules/test_in_region.rb +42 -0
  368. data/test/holidays/finder/rules/test_year_range.rb +166 -0
  369. data/test/integration/README.md +9 -0
  370. data/test/integration/test_all_regions.rb +49 -0
  371. data/test/integration/test_any_holidays_during_work_week.rb +90 -0
  372. data/test/integration/test_available_regions.rb +23 -0
  373. data/test/integration/test_custom_holidays.rb +41 -0
  374. data/test/integration/test_custom_informal_holidays.rb +15 -0
  375. data/test/integration/test_custom_year_range_holidays.rb +35 -0
  376. data/test/integration/test_holidays.rb +243 -0
  377. data/test/integration/test_holidays_between.rb +87 -0
  378. data/test/integration/test_multiple_regions.rb +71 -0
  379. data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
  380. data/test/integration/test_nonstandard_regions.rb +25 -0
  381. data/test/test_helper.rb +37 -0
  382. metadata +649 -0
@@ -0,0 +1,401 @@
1
+ # German holiday definitions for the Ruby Holiday gem.
2
+ #
3
+ # Updated: 2019-02-10
4
+ #
5
+ # Changes 2016-11-27:
6
+ # - Change de_sn_aux, de_th_aux to de_sn_sorbian (because it only is celebrated in Sorbian regions in Sachsen) and de_th_eichsfeld, to reflect region of Eichsfeld
7
+ # - Change de_sn_aux to de_by_augsburg to reflect only City of Augsburg
8
+ #
9
+ # Changes 2017-06-08:
10
+ # - Add Berlin, Bremen, Hamburg, Niedersachsen, Schleswig-Holstein
11
+ # - Change de_th_eichsfeld to de_th_cath because it affects the catholic communities Eichsfeld, Unstrut-Hainich-Kreis and Wartburgkreis
12
+ # - Merge Fronleichnam entry
13
+ # - Add de_by_cath for catholic communities in Bavaria; Maria Himmelfahrt is not a Bavaria-wide holiday
14
+ # - Mariä Himmelfahrt is celebrated in the community of Augsburg (de_by_augsburg)
15
+ # - Enhance tests
16
+ #
17
+ # Changes 2017-09-25:
18
+ # - Correct definition for Reformation Day
19
+ #
20
+ # Changes 2018-09-10:
21
+ # - Reformation Day has been added as a new holiday in Bremen, Hamburg, Lower Saxony and Schleswig-Holstein, starting in 2018.
22
+ #
23
+ # Change 2019-02-10:
24
+ # - Changing usage of 'year_ranges.after' to 'year_ranges.from', see https://github.com/holidays/definitions/issues/117
25
+ #
26
+ # Change 2023-04-17:
27
+ # - Historical data for Tag der Deutschen Einheit
28
+ #
29
+ # Sources:
30
+ # - http://en.wikipedia.org/wiki/Holidays_in_Germany
31
+ # - http://www.timeanddate.com/calendar/index.html?country=8
32
+ # - http://www.germany.info/relaunch/welcome/travel/holidays.html
33
+ # - https://www.statistik.bayern.de/statistik/bevoelkerungsstand/00141.php
34
+ # - http://www.thueringen.de/mam/th3/tim/verwaltungsrecht/fronleichnam_gemeindeschluesselzahlen.pdf
35
+ ---
36
+ months:
37
+ 0:
38
+ - name: Karfreitag
39
+ regions: [de]
40
+ function: easter(year)
41
+ function_modifier: -2
42
+ - name: Ostersonntag
43
+ regions: [de]
44
+ function: easter(year)
45
+ type: informal
46
+ - name: Ostermontag
47
+ regions: [de]
48
+ function: easter(year)
49
+ function_modifier: 1
50
+ - name: Christi Himmelfahrt
51
+ regions: [de]
52
+ function: easter(year)
53
+ function_modifier: 39
54
+ - name: Pfingstsonntag
55
+ regions: [de]
56
+ function: easter(year)
57
+ function_modifier: 49
58
+ type: informal
59
+ - name: Pfingstmontag
60
+ regions: [de]
61
+ function: easter(year)
62
+ function_modifier: 50
63
+ - name: Fronleichnam
64
+ regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn_sorbian, de_th_cath]
65
+ function: easter(year)
66
+ function_modifier: 60
67
+ - name: Weiberfastnacht
68
+ regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn]
69
+ function: easter(year)
70
+ function_modifier: -52
71
+ type: informal
72
+ - name: Rosenmontag
73
+ regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn]
74
+ function: easter(year)
75
+ function_modifier: -48
76
+ type: informal
77
+ - name: Aschermittwoch
78
+ regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn]
79
+ function: easter(year)
80
+ function_modifier: -46
81
+ type: informal
82
+ 1:
83
+ - name: Neujahrstag
84
+ regions: [de]
85
+ mday: 1
86
+ - name: Heilige Drei Könige
87
+ regions: [de_bw, de_by, de_st]
88
+ mday: 6
89
+ 3:
90
+ - name: Internationaler Frauentag
91
+ regions: [de_be]
92
+ mday: 8
93
+ year_ranges:
94
+ from: 2019
95
+ - name: Internationaler Frauentag
96
+ regions: [de_mv]
97
+ mday: 8
98
+ year_ranges:
99
+ from: 2023
100
+ 5:
101
+ - name: Tag der Arbeit
102
+ regions: [de]
103
+ mday: 1
104
+ - name: Tag der Befreiung
105
+ regions: [de_be]
106
+ mday: 8
107
+ year_ranges:
108
+ limited: [2020]
109
+ 6:
110
+ - name: Tag der Deutschen Einheit
111
+ regions: [de]
112
+ mday: 17
113
+ year_ranges:
114
+ between:
115
+ start: 1954
116
+ end: 1990
117
+ 8:
118
+ - name: Mariä Himmelfahrt
119
+ regions: [de_by_cath, de_by_augsburg, de_sl]
120
+ mday: 15
121
+ - name: Friedensfest
122
+ regions: [de_by_augsburg]
123
+ mday: 8
124
+ 9:
125
+ - name: Weltkindertag
126
+ regions: [de_th]
127
+ mday: 20
128
+ year_ranges:
129
+ from: 2019
130
+ 10:
131
+ - name: Tag der Deutschen Einheit
132
+ regions: [de]
133
+ mday: 3
134
+ year_ranges:
135
+ from: 1990
136
+ - name: Reformationstag
137
+ regions: [de_bb, de_mv, de_sn, de_st, de_th]
138
+ mday: 31
139
+ - name: Reformationstag
140
+ regions: [de_bw]
141
+ mday: 31
142
+ type: informal
143
+ - name: Reformationstag
144
+ regions: [de]
145
+ mday: 31
146
+ year_ranges:
147
+ limited: [2017]
148
+ - name: Reformationstag
149
+ regions: [de_hb, de_hh, de_ni, de_sh]
150
+ mday: 31
151
+ year_ranges:
152
+ from: 2018
153
+ 11:
154
+ - name: Allerheiligen
155
+ regions: [de_bw, de_by, de_nw, de_rp, de_sl]
156
+ mday: 1
157
+ - name: Buß- und Bettag
158
+ regions: [de_sn]
159
+ function: de_buss_und_bettag(year)
160
+ 12:
161
+ - name: Heilig Abend
162
+ regions: [de]
163
+ mday: 24
164
+ type: informal
165
+ - name: 1. Weihnachtstag
166
+ regions: [de]
167
+ mday: 25
168
+ - name: 2. Weihnachtstag
169
+ regions: [de]
170
+ mday: 26
171
+ - name: Silvester
172
+ regions: [de]
173
+ mday: 31
174
+ type: informal
175
+
176
+ methods:
177
+ de_buss_und_bettag:
178
+ # Germany: Wednesday before November 23
179
+ arguments: year
180
+ ruby: |
181
+ date = Date.civil(year,11,23)
182
+ if date.wday > 3
183
+ date -= (date.wday - 3)
184
+ else
185
+ date -= (date.wday + 4)
186
+ end
187
+ date
188
+
189
+ tests:
190
+ - given:
191
+ date: '2009-01-01'
192
+ regions: ["de"]
193
+ options: ["informal"]
194
+ expect:
195
+ name: "Neujahrstag"
196
+ - given:
197
+ date: '2009-04-10'
198
+ regions: ["de"]
199
+ options: ["informal"]
200
+ expect:
201
+ name: "Karfreitag"
202
+ - given:
203
+ date: '2009-04-12'
204
+ regions: ["de"]
205
+ options: ["informal"]
206
+ expect:
207
+ name: "Ostersonntag"
208
+ - given:
209
+ date: '2009-04-13'
210
+ regions: ["de"]
211
+ options: ["informal"]
212
+ expect:
213
+ name: "Ostermontag"
214
+ - given:
215
+ date: '2009-05-01'
216
+ regions: ["de"]
217
+ options: ["informal"]
218
+ expect:
219
+ name: "Tag der Arbeit"
220
+ - given:
221
+ date: '2009-05-21'
222
+ regions: ["de"]
223
+ options: ["informal"]
224
+ expect:
225
+ name: "Christi Himmelfahrt"
226
+ - given:
227
+ date: '2009-05-31'
228
+ regions: ["de"]
229
+ options: ["informal"]
230
+ expect:
231
+ name: "Pfingstsonntag"
232
+ - given:
233
+ date: '2009-06-01'
234
+ regions: ["de"]
235
+ options: ["informal"]
236
+ expect:
237
+ name: "Pfingstmontag"
238
+ - given:
239
+ date: '2009-10-03'
240
+ regions: ["de"]
241
+ options: ["informal"]
242
+ expect:
243
+ name: "Tag der Deutschen Einheit"
244
+ - given:
245
+ date: '2009-12-24'
246
+ regions: ["de"]
247
+ options: ["informal"]
248
+ expect:
249
+ name: "Heilig Abend"
250
+ - given:
251
+ date: '2009-12-25'
252
+ regions: ["de"]
253
+ options: ["informal"]
254
+ expect:
255
+ name: "1. Weihnachtstag"
256
+ - given:
257
+ date: '2009-12-26'
258
+ regions: ["de"]
259
+ options: ["informal"]
260
+ expect:
261
+ name: "2. Weihnachtstag"
262
+ - given:
263
+ date: '2009-12-31'
264
+ regions: ["de"]
265
+ options: ["informal"]
266
+ expect:
267
+ name: "Silvester"
268
+ - given:
269
+ date: '2009-01-06'
270
+ regions: ["de_bw", "de_by", "de_st", "de_"]
271
+ expect:
272
+ name: "Heilige Drei Könige"
273
+ - given:
274
+ date: '2009-06-11'
275
+ regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn_sorbian", "de_th_cath"]
276
+ expect:
277
+ name: "Fronleichnam"
278
+ - given:
279
+ date: '2009-08-15'
280
+ regions: ["de_by", "de_sl", "de_"]
281
+ expect:
282
+ name: "Mariä Himmelfahrt"
283
+ - given:
284
+ date: '2009-10-31'
285
+ regions: ["de_bb", "de_mv", "de_sn", "de_st", "de_th", "de_"]
286
+ expect:
287
+ name: "Reformationstag"
288
+ - given:
289
+ date: '2009-10-31'
290
+ regions: ["de_bw"]
291
+ options: ["informal"]
292
+ expect:
293
+ name: "Reformationstag"
294
+ - given:
295
+ date: '2017-10-31'
296
+ regions: ["de"]
297
+ expect:
298
+ name: "Reformationstag"
299
+ - given:
300
+ date: '2016-10-31'
301
+ regions: ["de"]
302
+ expect:
303
+ holiday: false
304
+ - given:
305
+ date: '2018-10-31'
306
+ regions: ["de"]
307
+ expect:
308
+ holiday: false
309
+ - given:
310
+ date: '2018-10-31'
311
+ regions: ["de_bb", "de_hb", "de_hh", "de_mv", "de_ni", "de_sh", "de_sn", "de_st", "de_th"]
312
+ expect:
313
+ name: "Reformationstag"
314
+ - given:
315
+ date: '2009-11-01'
316
+ regions: ["de_bw", "de_by", "de_nw", "de_rp", "de_sl", "de_"]
317
+ expect:
318
+ name: "Allerheiligen"
319
+ - given:
320
+ date: '2015-08-08'
321
+ regions: ["de_by_augsburg"]
322
+ expect:
323
+ name: "Friedensfest"
324
+ - given:
325
+ date: '2015-08-08'
326
+ regions: ["de", "de_bw", "de_by", "de_bb", "de_he", "de_mv", "de_nw", "de_rp", "de_sl", "de_sn", "de_st", "de_th"]
327
+ expect:
328
+ holiday: false
329
+ - given:
330
+ date: '2010-05-08'
331
+ regions: ["de"]
332
+ expect:
333
+ holiday: false
334
+ - given:
335
+ date: '2010-08-08'
336
+ regions: ["de"]
337
+ expect:
338
+ holiday: false
339
+ - given:
340
+ date: '2004-11-17'
341
+ regions: ["de_sn"]
342
+ expect:
343
+ name: "Buß- und Bettag"
344
+ - given:
345
+ date: '2005-11-16'
346
+ regions: ["de_sn"]
347
+ expect:
348
+ name: "Buß- und Bettag"
349
+ - given:
350
+ date: '2006-11-22'
351
+ regions: ["de_sn"]
352
+ expect:
353
+ name: "Buß- und Bettag"
354
+ - given:
355
+ date: '2009-11-18'
356
+ regions: ["de_sn"]
357
+ expect:
358
+ name: "Buß- und Bettag"
359
+ - given:
360
+ date: '2016-02-04'
361
+ regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn"]
362
+ options: ["informal"]
363
+ expect:
364
+ name: "Weiberfastnacht"
365
+ - given:
366
+ date: '2016-02-08'
367
+ regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn"]
368
+ options: ["informal"]
369
+ expect:
370
+ name: "Rosenmontag"
371
+ - given:
372
+ date: '2016-02-10'
373
+ regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn"]
374
+ options: ["informal"]
375
+ expect:
376
+ name: "Aschermittwoch"
377
+ - given:
378
+ date: '2018-03-08'
379
+ regions: ["de_be"]
380
+ expect:
381
+ holiday: false
382
+ - given:
383
+ date: '2019-03-08'
384
+ regions: ["de_be"]
385
+ expect:
386
+ name: "Internationaler Frauentag"
387
+ - given:
388
+ date: '2023-03-08'
389
+ regions: ["de_mv"]
390
+ expect:
391
+ name: "Internationaler Frauentag"
392
+ - given:
393
+ date: '2020-05-08'
394
+ regions: ["de_be"]
395
+ expect:
396
+ name: "Tag der Befreiung"
397
+ - given:
398
+ date: "2024-09-20"
399
+ regions: ["de_th"]
400
+ expect:
401
+ name: "Weltkindertag"
@@ -0,0 +1,220 @@
1
+ # Danish holiday definitions for the Ruby Holiday gem.
2
+ #
3
+ # Updated: 2008-11-22.
4
+ # Sources:
5
+ # - http://en.wikipedia.org/wiki/Holidays_in_Denmark
6
+ # - http://www.amblondon.um.dk/en/menu/AboutDenmark/PublicHolidaysInDK/PublicHolidaysinDenmark-until2010.htm
7
+ # - http://borger.dk/forside/kirke-og-tro/folkekirken/officielle-helligdage
8
+ ---
9
+ months:
10
+ 0:
11
+ - name: Fastelavn
12
+ regions: [dk]
13
+ function: easter(year)
14
+ function_modifier: -49
15
+ type: informal
16
+ - name: Palmesøndag
17
+ regions: [dk]
18
+ function: easter(year)
19
+ function_modifier: -7
20
+ type: informal
21
+ - name: Skærtorsdag
22
+ regions: [dk]
23
+ function: easter(year)
24
+ function_modifier: -3
25
+ - name: Langfredag
26
+ regions: [dk]
27
+ function: easter(year)
28
+ function_modifier: -2
29
+ - name: Påskedag
30
+ regions: [dk]
31
+ function: easter(year)
32
+ - name: 2. påskedag
33
+ regions: [dk]
34
+ function: easter(year)
35
+ function_modifier: 1
36
+ - name: Store Bededag
37
+ regions: [dk]
38
+ function: easter(year)
39
+ function_modifier: 26
40
+ year_ranges:
41
+ until: 2023
42
+ - name: Kristi Himmelfartsdag
43
+ regions: [dk]
44
+ function: easter(year)
45
+ function_modifier: 39
46
+ - name: Pinsedag
47
+ regions: [dk]
48
+ function: easter(year)
49
+ function_modifier: 49
50
+ - name: 2. Pinsedag
51
+ regions: [dk]
52
+ function: easter(year)
53
+ function_modifier: 50
54
+ 1:
55
+ - name: Nytårsdag
56
+ regions: [dk]
57
+ mday: 1
58
+ 4:
59
+ - name: 1. april
60
+ regions: [dk]
61
+ mday: 1
62
+ type: informal
63
+ - name: Danmarks besættelse
64
+ regions: [dk]
65
+ mday: 9
66
+ type: informal
67
+ - name: Dronningens fødselsdag
68
+ regions: [dk]
69
+ mday: 16
70
+ type: informal
71
+ 5:
72
+ - name: Arbejdernes kampdag
73
+ regions: [dk]
74
+ mday: 1
75
+ type: informal
76
+ - name: Danmarks befrielse
77
+ regions: [dk]
78
+ mday: 5
79
+ type: informal
80
+ 6:
81
+ - name: Grundlovsdag
82
+ regions: [dk]
83
+ mday: 5
84
+ type: informal
85
+ - name: Valdemarsdag og Genforeningsdag
86
+ regions: [dk]
87
+ mday: 15
88
+ type: informal
89
+ - name: Sankt Hans aften
90
+ regions: [dk]
91
+ mday: 23
92
+ type: informal
93
+ 11:
94
+ - name: Mortensaften
95
+ regions: [dk]
96
+ mday: 10
97
+ type: informal
98
+ 12:
99
+ - name: Sankt Lucia
100
+ regions: [dk]
101
+ mday: 13
102
+ type: informal
103
+ - name: Juleaftensdag
104
+ regions: [dk]
105
+ mday: 24
106
+ type: informal
107
+ - name: 1. juledag
108
+ regions: [dk]
109
+ mday: 25
110
+ - name: 2. juledag
111
+ regions: [dk]
112
+ mday: 26
113
+
114
+ tests:
115
+ - given:
116
+ date: '2023-05-05'
117
+ regions: ["dk"]
118
+ expect:
119
+ name: "Store Bededag"
120
+ - given:
121
+ date: '2024-04-26'
122
+ regions: ["dk"]
123
+ expect:
124
+ holiday: false
125
+ - given:
126
+ date: '2007-01-01'
127
+ regions: ["dk"]
128
+ options: ["informal"]
129
+ expect:
130
+ name: "Nytårsdag"
131
+ - given:
132
+ date: '2007-02-18'
133
+ regions: ["dk"]
134
+ options: ["informal"]
135
+ expect:
136
+ name: "Fastelavn"
137
+ - given:
138
+ date: '2007-04-09'
139
+ regions: ["dk"]
140
+ options: ["informal"]
141
+ expect:
142
+ name: "2. påskedag"
143
+ - given:
144
+ date: '2007-04-16'
145
+ regions: ["dk"]
146
+ options: ["informal"]
147
+ expect:
148
+ name: "Dronningens fødselsdag"
149
+ - given:
150
+ date: '2007-04-05'
151
+ regions: ["dk"]
152
+ options: ["informal"]
153
+ expect:
154
+ name: "Skærtorsdag"
155
+ - given:
156
+ date: '2007-04-06'
157
+ regions: ["dk"]
158
+ options: ["informal"]
159
+ expect:
160
+ name: "Langfredag"
161
+ - given:
162
+ date: '2007-04-08'
163
+ regions: ["dk"]
164
+ options: ["informal"]
165
+ expect:
166
+ name: "Påskedag"
167
+ - given:
168
+ date: '2007-05-01'
169
+ regions: ["dk"]
170
+ options: ["informal"]
171
+ expect:
172
+ name: "Arbejdernes kampdag"
173
+ - given:
174
+ date: '2007-05-04'
175
+ regions: ["dk"]
176
+ options: ["informal"]
177
+ expect:
178
+ name: "Store Bededag"
179
+ - given:
180
+ date: '2007-05-17'
181
+ regions: ["dk"]
182
+ options: ["informal"]
183
+ expect:
184
+ name: "Kristi Himmelfartsdag"
185
+ - given:
186
+ date: '2007-05-27'
187
+ regions: ["dk"]
188
+ options: ["informal"]
189
+ expect:
190
+ name: "Pinsedag"
191
+ - given:
192
+ date: '2007-05-28'
193
+ regions: ["dk"]
194
+ options: ["informal"]
195
+ expect:
196
+ name: "2. Pinsedag"
197
+ - given:
198
+ date: '2007-06-05'
199
+ regions: ["dk"]
200
+ options: ["informal"]
201
+ expect:
202
+ name: "Grundlovsdag"
203
+ - given:
204
+ date: '2007-12-24'
205
+ regions: ["dk"]
206
+ options: ["informal"]
207
+ expect:
208
+ name: "Juleaftensdag"
209
+ - given:
210
+ date: '2007-12-25'
211
+ regions: ["dk"]
212
+ options: ["informal"]
213
+ expect:
214
+ name: "1. juledag"
215
+ - given:
216
+ date: '2007-12-26'
217
+ regions: ["dk"]
218
+ options: ["informal"]
219
+ expect:
220
+ name: "2. juledag"
@@ -0,0 +1,44 @@
1
+ # How to contribute
2
+
3
+ In this repository we have all of the definitions that are used in holiday calculations. We rely on users around the world to help keep our definitions accurate and up to date.
4
+
5
+ ## Code of Conduct
6
+
7
+ Please read our [Code of Conduct](https://github.com/holidays/holidays/blob/master/CODE_OF_CONDUCT.md) before contributing. Everyone interacting with this project (or associated projects) is expected to abide by its terms.
8
+
9
+ ## Definition Updates
10
+
11
+ Our definitions are written in YAML. You can find a complete guide to our format in the [syntax docs](SYNTAX.md). We take the YAML definitions and generate final definition files in the various projects that are loaded at runtime for fast calculations.
12
+
13
+ Here are the steps to take once you have a good idea on what you want to change:
14
+
15
+ * Fork this repository
16
+ * Edit desired definition YAML file(s). If you are adding a new region be sure to update `index.yaml` as well
17
+ * Run `make validate` to ensure that all updates match our definition format
18
+ * Ensure that the tests in holidays pass:
19
+ ```
20
+ git clone git@github.com:holidays/holidays.git
21
+ cd holidays
22
+ bundle install
23
+ make clean-defs
24
+ BRANCH=<YOUR_BRANCH_NAME> USER=<YOUR_GITHUB_USERNAME> make point-to-defs-branch
25
+ bundle exec rake generate:definitions
26
+ bundle exec rake test # Alternatively: bundle exec rake test_region <your_region>
27
+ ```
28
+ * Open a PR with your changes
29
+
30
+ Including documentation with your updates is very much appreciated. A simple Wikipedia entry or government link in the comments alongside your changes would be perfect.
31
+
32
+ Lastly, note that there are many 'meta' regions. For example, there are regions for Europe, Scandinavia, and North America. If your new region(s) falls into these areas consider adding them. You can find these 'meta' regions in `definitions/index.yaml`.
33
+
34
+ Don't worry about versioning, we'll handle it on our end.
35
+
36
+ *Tests are required for new definitions*.
37
+
38
+ ## Definition Validation
39
+
40
+ We maintain a `make validate` command to ensure that all YAML definitions match our internal specifications. This is to make working with this repository as independent as possible from the other repositories (like the existing ruby repository). If `make validate` passes then we ensure that anything consuming these files will receive 'correct' formats.
41
+
42
+ If you run into any weird `make validate` errors please open an issue or PR and highlight to what you are seeing. The validation code is brand-new and might have issues. Maintainers will respond quickly to any open problems.
43
+
44
+ If you would like to add to, update, or otherwise fix any of our specs then please fork and submit a PR like you would any other change. Please note that we require 100% test coverage. Your builds will not pass if you fall below 100%.
@@ -0,0 +1,39 @@
1
+ # Maintainers guide
2
+
3
+ This document outlines the process of releasing an update of the definitions in this repository. Please note
4
+ that this document does NOT try to explain how to create packages for various languages. It is *just*
5
+ for creating version snapshots of definition files.
6
+
7
+ To be as clear as possible: this repository is *just* for definition updates. We 'release' updates as tags in Github
8
+ but do not push any code updates. Downstream projects (like ruby) will consume this and make their own appropriate releases.
9
+ The 'releases' in this project are mainly for organizational purposes.
10
+
11
+ ### Who this document is for
12
+
13
+ This document is for maintainers that have merge access to this repository. Generally these people will also have access to any
14
+ language-specific libraries and so this will be a part of the entire release process. Usually other libraries (like the ruby library)
15
+ will reference this document as part of its own release process.
16
+
17
+ Please note that a core contributor must provide the relevant Github access so that you can perform merges. If you have any issues
18
+ please contact the [core members](https://github.com/orgs/holidays/teams/core/members) for assistance.
19
+
20
+ ### Setup
21
+
22
+ This guide assumes that you have forked the repository in Github. If you require assistance in this please contact the core members listed above.
23
+
24
+ ### Merging new definition changes
25
+
26
+ When new PRs are submitted you can navigate the following steps:
27
+
28
+ * Make sure that the PR Travis CI builds are green. If they are green then you can simply continue. If there are errors you
29
+ will need to investigate further (contact a core member for assistance).
30
+ * If the builds are green and the changes look reasonable to you then go ahead and merge!
31
+ * Once the merges are done, make a new branch on your fork that includes an updated [CHANGELOG](https://github.com/holidays/definitions/blob/master/CHANGELOG.md)
32
+ that has the new version and associated changes. This is pretty open-ended! Include the information that you feel is
33
+ important. Use past CHANGELOG updates as a guide.
34
+ * Open a PR against the CHANGELOG branch and merge it (this may require another maintainer for safety)
35
+ * Once the updated CHANGELOG is merged, go to [releases](https://github.com/holidays/definitions/releases) and create a new release. It should point at the latest commit that contains the changes that you want included in this release. If you just merged then you can just point at master. All release versions follow this format: `vMAJOR.MINOR.PATCH`. This should follow normal [semver rules](https://semver.org/).
36
+
37
+ You don't need to list out the specific changes that were made on the release description. You can just give a general overview and then link to the updated CHANGELOG that you did in a previous step. Example: [v2.2.0](https://github.com/holidays/definitions/releases/tag/v2.2.0)
38
+
39
+ Once the release is created in Github you are done! The definitions have been 'released' and downstream projects (right now just ruby) can reference them without issues. See the maintainers guides in downstream projects for information on how to release updates for each language.