ics-query 0.4.35__tar.gz → 0.4.37__tar.gz

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 (60) hide show
  1. {ics_query-0.4.35 → ics_query-0.4.37}/.github/workflows/tests.yml +1 -0
  2. {ics_query-0.4.35 → ics_query-0.4.37}/PKG-INFO +36 -2
  3. {ics_query-0.4.35 → ics_query-0.4.37}/README.md +33 -0
  4. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/_version.py +2 -2
  5. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/cli.py +15 -2
  6. ics_query-0.4.37/ics_query/tests/runs/all -c VALARM alarm_1_week_before_event.ics -.run +40 -0
  7. ics_query-0.4.37/ics_query/tests/runs/calendars/alarm_1_week_before_event.ics +626 -0
  8. {ics_query-0.4.35 → ics_query-0.4.37}/pyproject.toml +1 -0
  9. {ics_query-0.4.35 → ics_query-0.4.37}/tox.ini +1 -1
  10. {ics_query-0.4.35 → ics_query-0.4.37}/.github/FUNDING.yml +0 -0
  11. {ics_query-0.4.35 → ics_query-0.4.37}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  12. {ics_query-0.4.35 → ics_query-0.4.37}/.github/dependabot.yml +0 -0
  13. {ics_query-0.4.35 → ics_query-0.4.37}/.gitignore +0 -0
  14. {ics_query-0.4.35 → ics_query-0.4.37}/.pre-commit-config.yaml +0 -0
  15. {ics_query-0.4.35 → ics_query-0.4.37}/LICENSE +0 -0
  16. {ics_query-0.4.35 → ics_query-0.4.37}/conftest.py +0 -0
  17. {ics_query-0.4.35 → ics_query-0.4.37}/ics-query +0 -0
  18. {ics_query-0.4.35 → ics_query-0.4.37}/ics-query.cmd +0 -0
  19. {ics_query-0.4.35 → ics_query-0.4.37}/ics-query.py +0 -0
  20. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/__init__.py +0 -0
  21. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/__main__.py +0 -0
  22. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/parse.py +0 -0
  23. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/query.py +0 -0
  24. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/__init__.py +0 -0
  25. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/conftest.py +0 -0
  26. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/all --tz Singapore one-event.ics -.run +0 -0
  27. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/all three-events.ics -.run +0 -0
  28. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/at 2014-05-03 x-wr-timezone-rdate-hackerpublicradio.ics -.run +0 -0
  29. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/at 2019-03-04 multiple-calendars.ics -.run +0 -0
  30. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/at 2019-03-04 one-event-twice.ics -.run +0 -0
  31. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/at 2019-03-04 one-event.ics -.run +0 -0
  32. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/at 2019-03-07 multiple-calendars.ics -.run +0 -0
  33. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/at 2024-08-20 Berlin-Los-Angeles.ics -.run +0 -0
  34. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/between 20240823 4d recurring-work-events.ics -.run +0 -0
  35. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/Berlin-Los-Angeles.ics +0 -0
  36. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/empty-calendar.ics +0 -0
  37. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/empty-file.ics +0 -0
  38. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/multiple-calendars.ics +0 -0
  39. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/one-event-twice.ics +0 -0
  40. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/one-event-without-timezone.ics +0 -0
  41. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/one-event.ics +0 -0
  42. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/recurring-work-events.ics +0 -0
  43. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/simple-journal.ics +0 -0
  44. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/simple-todo.ics +0 -0
  45. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/three-events.ics +0 -0
  46. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/calendars/x-wr-timezone-rdate-hackerpublicradio.ics +0 -0
  47. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first -c VJOURNAL -c VEVENT one-event.ics -.run +0 -0
  48. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first -c VJOURNAL one-event.ics -.run +0 -0
  49. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first -c VJOURNAL simple-journal.ics -.run +0 -0
  50. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first -c VTODO -c VJOURNAL simple-todo.ics -.run +0 -0
  51. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first -c VTODO simple-todo.ics -.run +0 -0
  52. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first empty-calendar.ics -.run +0 -0
  53. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first empty-file.ics -.run +0 -0
  54. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/runs/first recurring-work-events.ics -.run +0 -0
  55. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/test_command_line.py +0 -0
  56. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/test_issue_40_valid_calendar.py +0 -0
  57. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/test_parse_date.py +0 -0
  58. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/tests/test_parse_timedelta.py +0 -0
  59. {ics_query-0.4.35 → ics_query-0.4.37}/ics_query/version.py +0 -0
  60. {ics_query-0.4.35 → ics_query-0.4.37}/renovate.json +0 -0
@@ -21,6 +21,7 @@ jobs:
21
21
  - ["3.10", "py310", "ubuntu-latest"]
22
22
  - ["3.11", "py311", "ubuntu-latest"]
23
23
  - ["3.12", "py312", "ubuntu-latest"]
24
+ - ["3.13", "py313", "ubuntu-latest"]
24
25
  - ["3.9", "ruff", "ubuntu-latest"]
25
26
  # - ["3.11", "exe", "windows-latest"]
26
27
 
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ics-query
3
- Version: 0.4.35
3
+ Version: 0.4.37
4
4
  Summary: Find out what happens in ICS calendar files - query and filter RFC 5545 compatible .ics files for events, journals, TODOs and more.
5
5
  Project-URL: Homepage, https://github.com/niccokunzmann/ics-query/
6
6
  Project-URL: Repository, https://github.com/niccokunzmann/ics-query/
7
- Project-URL: source_archive, https://github.com/niccokunzmann/ics-query/archive/79b42f339dba9778a8e3cb2b872af925ee3be43d.zip
7
+ Project-URL: source_archive, https://github.com/niccokunzmann/ics-query/archive/7d5b884b37e6e821e8b473c7ac1e5cfd2e59f811.zip
8
8
  Project-URL: Issues, https://github.com/niccokunzmann/ics-query/issues
9
9
  Project-URL: Documentation, https://github.com/niccokunzmann/ics-query/
10
10
  Project-URL: Changelog, https://github.com/niccokunzmann/ics-query/#changelog
@@ -694,6 +694,7 @@ Classifier: Programming Language :: Python :: 3.9
694
694
  Classifier: Programming Language :: Python :: 3.10
695
695
  Classifier: Programming Language :: Python :: 3.11
696
696
  Classifier: Programming Language :: Python :: 3.12
697
+ Classifier: Programming Language :: Python :: 3.13
697
698
  Classifier: Topic :: Office/Business :: Scheduling
698
699
  Requires-Python: >=3.9
699
700
  Requires-Dist: click==8.1.8
@@ -971,6 +972,7 @@ You can specify which components you would like to get using the
971
972
  -c VEVENT # only events
972
973
  -c VTODO # only TODOs
973
974
  -c VJOURNAL # only journal entries
975
+ -c VALARM # only components with the calculated alarm
974
976
  -c VEVENT -c VTODO # only events and journal entries
975
977
  ```
976
978
 
@@ -994,6 +996,30 @@ Please see the command documentation for more help:
994
996
  ics-query --help
995
997
  ```
996
998
 
999
+ ### Alarms
1000
+
1001
+ Alarms are special because they do not occur alone.
1002
+ They are located inside another component like a VEVENT or VTODO.
1003
+
1004
+ Considerations:
1005
+
1006
+ - If you query a time span, the component might actually happen outside of the time span
1007
+ but the alarm happens within the timespan.
1008
+ - Absolute alarms may only be included once and not for every occurrence.
1009
+ - Each resulting occurrence only has one alarm in them.
1010
+ - Do not mix `-c VEVENT` and others with `-c VALARM` or you might not know if
1011
+ the alarm or the component is inside the time span.
1012
+
1013
+ As an example, if you want to get all alarms and the event summary that they are for,
1014
+ you would be interested in the `SUMMARY` of the event and the `TRIGGER` of the alarm.
1015
+
1016
+ ```sh
1017
+ $ ics-query all -c VALARM --tz Europe/London alarm_1_week_before_event.ics - | grep -E 'TRIGGER|SUMMARY'
1018
+ SUMMARY:Event with an alarm 1 week before this starts <-- Event summary
1019
+ TRIGGER;TZID=Europe/London:20241202T110000 <-- Time of the alarm
1020
+ SUMMARY:Event with an alarm 1 week before this starts <-- Event summary
1021
+ TRIGGER;TZID=Europe/London:20241207T110000 <-- Time of the alarm
1022
+ ```
997
1023
 
998
1024
  ### Timezones
999
1025
 
@@ -1136,6 +1162,14 @@ We automatically release the versions that only update dependencies.
1136
1162
  If the version you installed does not show up here, only the dependencies
1137
1163
  have been updated.
1138
1164
 
1165
+ - v0.4.37
1166
+
1167
+ - Test and support Python 3.13. See [Issue 9](https://github.com/niccokunzmann/ics-query/issues/9).
1168
+
1169
+ - v0.4.36
1170
+
1171
+ - Test and document `VALARM`. See [Issue 16](https://github.com/niccokunzmann/ics-query/issues/16).
1172
+
1139
1173
  - v0.4.33
1140
1174
 
1141
1175
  - Add `--as-calendar` parameter.
@@ -261,6 +261,7 @@ You can specify which components you would like to get using the
261
261
  -c VEVENT # only events
262
262
  -c VTODO # only TODOs
263
263
  -c VJOURNAL # only journal entries
264
+ -c VALARM # only components with the calculated alarm
264
265
  -c VEVENT -c VTODO # only events and journal entries
265
266
  ```
266
267
 
@@ -284,6 +285,30 @@ Please see the command documentation for more help:
284
285
  ics-query --help
285
286
  ```
286
287
 
288
+ ### Alarms
289
+
290
+ Alarms are special because they do not occur alone.
291
+ They are located inside another component like a VEVENT or VTODO.
292
+
293
+ Considerations:
294
+
295
+ - If you query a time span, the component might actually happen outside of the time span
296
+ but the alarm happens within the timespan.
297
+ - Absolute alarms may only be included once and not for every occurrence.
298
+ - Each resulting occurrence only has one alarm in them.
299
+ - Do not mix `-c VEVENT` and others with `-c VALARM` or you might not know if
300
+ the alarm or the component is inside the time span.
301
+
302
+ As an example, if you want to get all alarms and the event summary that they are for,
303
+ you would be interested in the `SUMMARY` of the event and the `TRIGGER` of the alarm.
304
+
305
+ ```sh
306
+ $ ics-query all -c VALARM --tz Europe/London alarm_1_week_before_event.ics - | grep -E 'TRIGGER|SUMMARY'
307
+ SUMMARY:Event with an alarm 1 week before this starts <-- Event summary
308
+ TRIGGER;TZID=Europe/London:20241202T110000 <-- Time of the alarm
309
+ SUMMARY:Event with an alarm 1 week before this starts <-- Event summary
310
+ TRIGGER;TZID=Europe/London:20241207T110000 <-- Time of the alarm
311
+ ```
287
312
 
288
313
  ### Timezones
289
314
 
@@ -426,6 +451,14 @@ We automatically release the versions that only update dependencies.
426
451
  If the version you installed does not show up here, only the dependencies
427
452
  have been updated.
428
453
 
454
+ - v0.4.37
455
+
456
+ - Test and support Python 3.13. See [Issue 9](https://github.com/niccokunzmann/ics-query/issues/9).
457
+
458
+ - v0.4.36
459
+
460
+ - Test and document `VALARM`. See [Issue 16](https://github.com/niccokunzmann/ics-query/issues/16).
461
+
429
462
  - v0.4.33
430
463
 
431
464
  - Add `--as-calendar` parameter.
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.4.35'
21
- __version_tuple__ = version_tuple = (0, 4, 35)
20
+ __version__ = version = '0.4.37'
21
+ __version_tuple__ = version_tuple = (0, 4, 37)
@@ -402,12 +402,25 @@ def cli():
402
402
  Components
403
403
  ----------
404
404
 
405
- We support different types of recurring components: VEVENT, VTODO, VJOURNAL.
405
+ We support different types of recurring components:
406
+ VEVENT, VTODO, VJOURNAL, VALARM
406
407
  You can specify which can be in the result using the --component parameter.
407
408
 
408
- You can also set the environment variable ICS_QUERY_COMPONENT to the timezone
409
+ You can also set the environment variable ICS_QUERY_COMPONENT to the component
409
410
  instead of passing --component.
410
411
 
412
+ For VALARM, please consider the following:
413
+
414
+ (1) If you query a time span, the component might actually happen outside of
415
+ the time span but the alarm happens within the time span.
416
+
417
+ (2) Absolute alarms may only be included once and not for every occurrence.
418
+
419
+ (3) Each resulting occurrence only has one alarm in them.
420
+
421
+ (4) Do not mix `-c VEVENT` and others with `-c VALARM` or you might not know if the
422
+ alarm or the component is inside the time span.
423
+
411
424
  """ # noqa: D301
412
425
 
413
426
 
@@ -0,0 +1,40 @@
1
+ BEGIN:VEVENT
2
+ SUMMARY:Event with an alarm 1 week before this starts
3
+ DTSTART;TZID=Europe/London:20241209T110000
4
+ DTEND;TZID=Europe/London:20241209T120000
5
+ DTSTAMP:20241002T120908Z
6
+ UID:a26289e0-8739-488b-b706-77c9364193c1
7
+ RECURRENCE-ID;TZID=Europe/London:20241209T110000
8
+ CREATED:20241002T120758Z
9
+ DESCRIPTION:Event
10
+ LAST-MODIFIED:20241002T120908Z
11
+ TRANSP:OPAQUE
12
+ X-MOZ-GENERATION:4
13
+ X-MOZ-LASTACK:20241002T120844Z
14
+ BEGIN:VALARM
15
+ ACTION:DISPLAY
16
+ DESCRIPTION:Alarm One Week Before
17
+ REPEAT:0
18
+ TRIGGER;TZID=Europe/London:20241202T110000
19
+ END:VALARM
20
+ END:VEVENT
21
+ BEGIN:VEVENT
22
+ SUMMARY:Event with an alarm 1 week before this starts
23
+ DTSTART;TZID=Europe/London:20241209T110000
24
+ DTEND;TZID=Europe/London:20241209T120000
25
+ DTSTAMP:20241002T120908Z
26
+ UID:a26289e0-8739-488b-b706-77c9364193c1
27
+ RECURRENCE-ID;TZID=Europe/London:20241209T110000
28
+ CREATED:20241002T120758Z
29
+ DESCRIPTION:Event
30
+ LAST-MODIFIED:20241002T120908Z
31
+ TRANSP:OPAQUE
32
+ X-MOZ-GENERATION:4
33
+ X-MOZ-LASTACK:20241002T120844Z
34
+ BEGIN:VALARM
35
+ ACTION:DISPLAY
36
+ DESCRIPTION:Alarm Two Days Before
37
+ REPEAT:0
38
+ TRIGGER;TZID=Europe/London:20241207T110000
39
+ END:VALARM
40
+ END:VEVENT
@@ -0,0 +1,626 @@
1
+ BEGIN:VCALENDAR
2
+ PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
3
+ VERSION:2.0
4
+ BEGIN:VTIMEZONE
5
+ TZID:Europe/London
6
+ X-TZINFO:Europe/London[2024a]
7
+ BEGIN:STANDARD
8
+ TZOFFSETTO:+000000
9
+ TZOFFSETFROM:-000115
10
+ TZNAME:Europe/London(STD)
11
+ DTSTART:18471201T000000
12
+ RDATE:18471201T000000
13
+ END:STANDARD
14
+ BEGIN:DAYLIGHT
15
+ TZOFFSETTO:+010000
16
+ TZOFFSETFROM:+000000
17
+ TZNAME:Europe/London(DST)
18
+ DTSTART:19160521T020000
19
+ RDATE:19160521T020000
20
+ END:DAYLIGHT
21
+ BEGIN:STANDARD
22
+ TZOFFSETTO:+000000
23
+ TZOFFSETFROM:+010000
24
+ TZNAME:Europe/London(STD)
25
+ DTSTART:19161001T030000
26
+ RDATE:19161001T030000
27
+ END:STANDARD
28
+ BEGIN:DAYLIGHT
29
+ TZOFFSETTO:+010000
30
+ TZOFFSETFROM:+000000
31
+ TZNAME:Europe/London(DST)
32
+ DTSTART:19170408T020000
33
+ RDATE:19170408T020000
34
+ END:DAYLIGHT
35
+ BEGIN:STANDARD
36
+ TZOFFSETTO:+000000
37
+ TZOFFSETFROM:+010000
38
+ TZNAME:Europe/London(STD)
39
+ DTSTART:19170917T030000
40
+ RDATE:19170917T030000
41
+ END:STANDARD
42
+ BEGIN:DAYLIGHT
43
+ TZOFFSETTO:+010000
44
+ TZOFFSETFROM:+000000
45
+ TZNAME:Europe/London(DST)
46
+ DTSTART:19180324T020000
47
+ RDATE:19180324T020000
48
+ END:DAYLIGHT
49
+ BEGIN:STANDARD
50
+ TZOFFSETTO:+000000
51
+ TZOFFSETFROM:+010000
52
+ TZNAME:Europe/London(STD)
53
+ DTSTART:19180930T030000
54
+ RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
55
+ END:STANDARD
56
+ BEGIN:DAYLIGHT
57
+ TZOFFSETTO:+010000
58
+ TZOFFSETFROM:+000000
59
+ TZNAME:Europe/London(DST)
60
+ DTSTART:19190330T020000
61
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
62
+ END:DAYLIGHT
63
+ BEGIN:STANDARD
64
+ TZOFFSETTO:+000000
65
+ TZOFFSETFROM:+010000
66
+ TZNAME:Europe/London(STD)
67
+ DTSTART:19201025T030000
68
+ RDATE:19201025T030000
69
+ END:STANDARD
70
+ BEGIN:DAYLIGHT
71
+ TZOFFSETTO:+010000
72
+ TZOFFSETFROM:+000000
73
+ TZNAME:Europe/London(DST)
74
+ DTSTART:19210403T020000
75
+ RDATE:19210403T020000
76
+ END:DAYLIGHT
77
+ BEGIN:STANDARD
78
+ TZOFFSETTO:+000000
79
+ TZOFFSETFROM:+010000
80
+ TZNAME:Europe/London(STD)
81
+ DTSTART:19211003T030000
82
+ RDATE:19211003T030000
83
+ END:STANDARD
84
+ BEGIN:DAYLIGHT
85
+ TZOFFSETTO:+010000
86
+ TZOFFSETFROM:+000000
87
+ TZNAME:Europe/London(DST)
88
+ DTSTART:19220326T020000
89
+ RDATE:19220326T020000
90
+ END:DAYLIGHT
91
+ BEGIN:STANDARD
92
+ TZOFFSETTO:+000000
93
+ TZOFFSETFROM:+010000
94
+ TZNAME:Europe/London(STD)
95
+ DTSTART:19221008T030000
96
+ RDATE:19221008T030000
97
+ END:STANDARD
98
+ BEGIN:DAYLIGHT
99
+ TZOFFSETTO:+010000
100
+ TZOFFSETFROM:+000000
101
+ TZNAME:Europe/London(DST)
102
+ DTSTART:19230422T020000
103
+ RDATE:19230422T020000
104
+ END:DAYLIGHT
105
+ BEGIN:DAYLIGHT
106
+ TZOFFSETTO:+010000
107
+ TZOFFSETFROM:+000000
108
+ TZNAME:Europe/London(DST)
109
+ DTSTART:19240413T020000
110
+ RDATE:19240413T020000
111
+ END:DAYLIGHT
112
+ BEGIN:STANDARD
113
+ TZOFFSETTO:+000000
114
+ TZOFFSETFROM:+010000
115
+ TZNAME:Europe/London(STD)
116
+ DTSTART:19230916T030000
117
+ RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
118
+ END:STANDARD
119
+ BEGIN:DAYLIGHT
120
+ TZOFFSETTO:+010000
121
+ TZOFFSETFROM:+000000
122
+ TZNAME:Europe/London(DST)
123
+ DTSTART:19250419T020000
124
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
125
+ END:DAYLIGHT
126
+ BEGIN:DAYLIGHT
127
+ TZOFFSETTO:+010000
128
+ TZOFFSETFROM:+000000
129
+ TZNAME:Europe/London(DST)
130
+ DTSTART:19270410T020000
131
+ RDATE:19270410T020000
132
+ END:DAYLIGHT
133
+ BEGIN:DAYLIGHT
134
+ TZOFFSETTO:+010000
135
+ TZOFFSETFROM:+000000
136
+ TZNAME:Europe/London(DST)
137
+ DTSTART:19280422T020000
138
+ RDATE:19280422T020000
139
+ END:DAYLIGHT
140
+ BEGIN:DAYLIGHT
141
+ TZOFFSETTO:+010000
142
+ TZOFFSETFROM:+000000
143
+ TZNAME:Europe/London(DST)
144
+ DTSTART:19290421T020000
145
+ RDATE:19290421T020000
146
+ END:DAYLIGHT
147
+ BEGIN:DAYLIGHT
148
+ TZOFFSETTO:+010000
149
+ TZOFFSETFROM:+000000
150
+ TZNAME:Europe/London(DST)
151
+ DTSTART:19300413T020000
152
+ RDATE:19300413T020000
153
+ END:DAYLIGHT
154
+ BEGIN:DAYLIGHT
155
+ TZOFFSETTO:+010000
156
+ TZOFFSETFROM:+000000
157
+ TZNAME:Europe/London(DST)
158
+ DTSTART:19310419T020000
159
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
160
+ END:DAYLIGHT
161
+ BEGIN:STANDARD
162
+ TZOFFSETTO:+000000
163
+ TZOFFSETFROM:+010000
164
+ TZNAME:Europe/London(STD)
165
+ DTSTART:19251004T030000
166
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
167
+ END:STANDARD
168
+ BEGIN:DAYLIGHT
169
+ TZOFFSETTO:+010000
170
+ TZOFFSETFROM:+000000
171
+ TZNAME:Europe/London(DST)
172
+ DTSTART:19330409T020000
173
+ RDATE:19330409T020000
174
+ END:DAYLIGHT
175
+ BEGIN:STANDARD
176
+ TZOFFSETTO:+000000
177
+ TZOFFSETFROM:+010000
178
+ TZNAME:Europe/London(STD)
179
+ DTSTART:19331008T030000
180
+ RDATE:19331008T030000
181
+ END:STANDARD
182
+ BEGIN:DAYLIGHT
183
+ TZOFFSETTO:+010000
184
+ TZOFFSETFROM:+000000
185
+ TZNAME:Europe/London(DST)
186
+ DTSTART:19340422T020000
187
+ RDATE:19340422T020000
188
+ END:DAYLIGHT
189
+ BEGIN:DAYLIGHT
190
+ TZOFFSETTO:+010000
191
+ TZOFFSETFROM:+000000
192
+ TZNAME:Europe/London(DST)
193
+ DTSTART:19350414T020000
194
+ RDATE:19350414T020000
195
+ END:DAYLIGHT
196
+ BEGIN:DAYLIGHT
197
+ TZOFFSETTO:+010000
198
+ TZOFFSETFROM:+000000
199
+ TZNAME:Europe/London(DST)
200
+ DTSTART:19360419T020000
201
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
202
+ END:DAYLIGHT
203
+ BEGIN:DAYLIGHT
204
+ TZOFFSETTO:+010000
205
+ TZOFFSETFROM:+000000
206
+ TZNAME:Europe/London(DST)
207
+ DTSTART:19380410T020000
208
+ RDATE:19380410T020000
209
+ END:DAYLIGHT
210
+ BEGIN:STANDARD
211
+ TZOFFSETTO:+000000
212
+ TZOFFSETFROM:+010000
213
+ TZNAME:Europe/London(STD)
214
+ DTSTART:19341007T030000
215
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
216
+ END:STANDARD
217
+ BEGIN:DAYLIGHT
218
+ TZOFFSETTO:+010000
219
+ TZOFFSETFROM:+000000
220
+ TZNAME:Europe/London(DST)
221
+ DTSTART:19390416T020000
222
+ RDATE:19390416T020000
223
+ END:DAYLIGHT
224
+ BEGIN:DAYLIGHT
225
+ TZOFFSETTO:+010000
226
+ TZOFFSETFROM:+000000
227
+ TZNAME:Europe/London(DST)
228
+ DTSTART:19400225T020000
229
+ RDATE:19400225T020000
230
+ END:DAYLIGHT
231
+ BEGIN:DAYLIGHT
232
+ TZOFFSETTO:+020000
233
+ TZOFFSETFROM:+010000
234
+ TZNAME:Europe/London(DST)
235
+ DTSTART:19410504T020000
236
+ RDATE:19410504T020000
237
+ END:DAYLIGHT
238
+ BEGIN:DAYLIGHT
239
+ TZOFFSETTO:+010000
240
+ TZOFFSETFROM:+020000
241
+ TZNAME:Europe/London(DST)
242
+ DTSTART:19410810T030000
243
+ RDATE:19410810T030000
244
+ END:DAYLIGHT
245
+ BEGIN:DAYLIGHT
246
+ TZOFFSETTO:+020000
247
+ TZOFFSETFROM:+010000
248
+ TZNAME:Europe/London(DST)
249
+ DTSTART:19420405T020000
250
+ RDATE:19420405T020000
251
+ END:DAYLIGHT
252
+ BEGIN:DAYLIGHT
253
+ TZOFFSETTO:+010000
254
+ TZOFFSETFROM:+020000
255
+ TZNAME:Europe/London(DST)
256
+ DTSTART:19420809T030000
257
+ RDATE:19420809T030000
258
+ END:DAYLIGHT
259
+ BEGIN:DAYLIGHT
260
+ TZOFFSETTO:+020000
261
+ TZOFFSETFROM:+010000
262
+ TZNAME:Europe/London(DST)
263
+ DTSTART:19430404T020000
264
+ RDATE:19430404T020000
265
+ END:DAYLIGHT
266
+ BEGIN:DAYLIGHT
267
+ TZOFFSETTO:+010000
268
+ TZOFFSETFROM:+020000
269
+ TZNAME:Europe/London(DST)
270
+ DTSTART:19430815T030000
271
+ RDATE:19430815T030000
272
+ END:DAYLIGHT
273
+ BEGIN:DAYLIGHT
274
+ TZOFFSETTO:+020000
275
+ TZOFFSETFROM:+010000
276
+ TZNAME:Europe/London(DST)
277
+ DTSTART:19440402T020000
278
+ RDATE:19440402T020000
279
+ END:DAYLIGHT
280
+ BEGIN:DAYLIGHT
281
+ TZOFFSETTO:+010000
282
+ TZOFFSETFROM:+020000
283
+ TZNAME:Europe/London(DST)
284
+ DTSTART:19440917T030000
285
+ RDATE:19440917T030000
286
+ END:DAYLIGHT
287
+ BEGIN:DAYLIGHT
288
+ TZOFFSETTO:+020000
289
+ TZOFFSETFROM:+010000
290
+ TZNAME:Europe/London(DST)
291
+ DTSTART:19450402T020000
292
+ RDATE:19450402T020000
293
+ END:DAYLIGHT
294
+ BEGIN:STANDARD
295
+ TZOFFSETTO:+000000
296
+ TZOFFSETFROM:+010000
297
+ TZNAME:Europe/London(STD)
298
+ DTSTART:19391119T030000
299
+ RDATE:19391119T030000
300
+ END:STANDARD
301
+ BEGIN:DAYLIGHT
302
+ TZOFFSETTO:+010000
303
+ TZOFFSETFROM:+020000
304
+ TZNAME:Europe/London(DST)
305
+ DTSTART:19450715T030000
306
+ RDATE:19450715T030000
307
+ END:DAYLIGHT
308
+ BEGIN:DAYLIGHT
309
+ TZOFFSETTO:+010000
310
+ TZOFFSETFROM:+000000
311
+ TZNAME:Europe/London(DST)
312
+ DTSTART:19460414T020000
313
+ RDATE:19460414T020000
314
+ END:DAYLIGHT
315
+ BEGIN:DAYLIGHT
316
+ TZOFFSETTO:+010000
317
+ TZOFFSETFROM:+000000
318
+ TZNAME:Europe/London(DST)
319
+ DTSTART:19470316T020000
320
+ RDATE:19470316T020000
321
+ END:DAYLIGHT
322
+ BEGIN:DAYLIGHT
323
+ TZOFFSETTO:+020000
324
+ TZOFFSETFROM:+010000
325
+ TZNAME:Europe/London(DST)
326
+ DTSTART:19470413T020000
327
+ RDATE:19470413T020000
328
+ END:DAYLIGHT
329
+ BEGIN:STANDARD
330
+ TZOFFSETTO:+000000
331
+ TZOFFSETFROM:+010000
332
+ TZNAME:Europe/London(STD)
333
+ DTSTART:19451007T030000
334
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
335
+ END:STANDARD
336
+ BEGIN:DAYLIGHT
337
+ TZOFFSETTO:+010000
338
+ TZOFFSETFROM:+020000
339
+ TZNAME:Europe/London(DST)
340
+ DTSTART:19470810T030000
341
+ RDATE:19470810T030000
342
+ END:DAYLIGHT
343
+ BEGIN:STANDARD
344
+ TZOFFSETTO:+000000
345
+ TZOFFSETFROM:+010000
346
+ TZNAME:Europe/London(STD)
347
+ DTSTART:19471102T030000
348
+ RDATE:19471102T030000
349
+ END:STANDARD
350
+ BEGIN:DAYLIGHT
351
+ TZOFFSETTO:+010000
352
+ TZOFFSETFROM:+000000
353
+ TZNAME:Europe/London(DST)
354
+ DTSTART:19480314T020000
355
+ RDATE:19480314T020000
356
+ END:DAYLIGHT
357
+ BEGIN:DAYLIGHT
358
+ TZOFFSETTO:+010000
359
+ TZOFFSETFROM:+000000
360
+ TZNAME:Europe/London(DST)
361
+ DTSTART:19490403T020000
362
+ RDATE:19490403T020000
363
+ END:DAYLIGHT
364
+ BEGIN:STANDARD
365
+ TZOFFSETTO:+000000
366
+ TZOFFSETFROM:+010000
367
+ TZNAME:Europe/London(STD)
368
+ DTSTART:19481031T030000
369
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
370
+ END:STANDARD
371
+ BEGIN:STANDARD
372
+ TZOFFSETTO:+000000
373
+ TZOFFSETFROM:+010000
374
+ TZNAME:Europe/London(STD)
375
+ DTSTART:19501022T030000
376
+ RDATE:19501022T030000
377
+ END:STANDARD
378
+ BEGIN:STANDARD
379
+ TZOFFSETTO:+000000
380
+ TZOFFSETFROM:+010000
381
+ TZNAME:Europe/London(STD)
382
+ DTSTART:19511021T030000
383
+ RDATE:19511021T030000
384
+ END:STANDARD
385
+ BEGIN:STANDARD
386
+ TZOFFSETTO:+000000
387
+ TZOFFSETFROM:+010000
388
+ TZNAME:Europe/London(STD)
389
+ DTSTART:19521026T030000
390
+ RDATE:19521026T030000
391
+ END:STANDARD
392
+ BEGIN:DAYLIGHT
393
+ TZOFFSETTO:+010000
394
+ TZOFFSETFROM:+000000
395
+ TZNAME:Europe/London(DST)
396
+ DTSTART:19500416T020000
397
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
398
+ END:DAYLIGHT
399
+ BEGIN:DAYLIGHT
400
+ TZOFFSETTO:+010000
401
+ TZOFFSETFROM:+000000
402
+ TZNAME:Europe/London(DST)
403
+ DTSTART:19540411T020000
404
+ RDATE:19540411T020000
405
+ END:DAYLIGHT
406
+ BEGIN:DAYLIGHT
407
+ TZOFFSETTO:+010000
408
+ TZOFFSETFROM:+000000
409
+ TZNAME:Europe/London(DST)
410
+ DTSTART:19550417T020000
411
+ RDATE:19550417T020000
412
+ END:DAYLIGHT
413
+ BEGIN:DAYLIGHT
414
+ TZOFFSETTO:+010000
415
+ TZOFFSETFROM:+000000
416
+ TZNAME:Europe/London(DST)
417
+ DTSTART:19560422T020000
418
+ RDATE:19560422T020000
419
+ END:DAYLIGHT
420
+ BEGIN:DAYLIGHT
421
+ TZOFFSETTO:+010000
422
+ TZOFFSETFROM:+000000
423
+ TZNAME:Europe/London(DST)
424
+ DTSTART:19570414T020000
425
+ RDATE:19570414T020000
426
+ END:DAYLIGHT
427
+ BEGIN:DAYLIGHT
428
+ TZOFFSETTO:+010000
429
+ TZOFFSETFROM:+000000
430
+ TZNAME:Europe/London(DST)
431
+ DTSTART:19580420T020000
432
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
433
+ END:DAYLIGHT
434
+ BEGIN:DAYLIGHT
435
+ TZOFFSETTO:+010000
436
+ TZOFFSETFROM:+000000
437
+ TZNAME:Europe/London(DST)
438
+ DTSTART:19600410T020000
439
+ RDATE:19600410T020000
440
+ END:DAYLIGHT
441
+ BEGIN:STANDARD
442
+ TZOFFSETTO:+000000
443
+ TZOFFSETFROM:+010000
444
+ TZNAME:Europe/London(STD)
445
+ DTSTART:19531004T030000
446
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
447
+ END:STANDARD
448
+ BEGIN:DAYLIGHT
449
+ TZOFFSETTO:+010000
450
+ TZOFFSETFROM:+000000
451
+ TZNAME:Europe/London(DST)
452
+ DTSTART:19610326T020000
453
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
454
+ END:DAYLIGHT
455
+ BEGIN:DAYLIGHT
456
+ TZOFFSETTO:+010000
457
+ TZOFFSETFROM:+000000
458
+ TZNAME:Europe/London(DST)
459
+ DTSTART:19640322T020000
460
+ RDATE:19640322T020000
461
+ END:DAYLIGHT
462
+ BEGIN:STANDARD
463
+ TZOFFSETTO:+000000
464
+ TZOFFSETFROM:+010000
465
+ TZNAME:Europe/London(STD)
466
+ DTSTART:19611029T030000
467
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
468
+ END:STANDARD
469
+ BEGIN:STANDARD
470
+ TZOFFSETTO:+000000
471
+ TZOFFSETFROM:+010000
472
+ TZNAME:Europe/London(STD)
473
+ DTSTART:19651024T030000
474
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
475
+ END:STANDARD
476
+ BEGIN:DAYLIGHT
477
+ TZOFFSETTO:+010000
478
+ TZOFFSETFROM:+000000
479
+ TZNAME:Europe/London(DST)
480
+ DTSTART:19650321T020000
481
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
482
+ END:DAYLIGHT
483
+ BEGIN:STANDARD
484
+ TZOFFSETTO:+000000
485
+ TZOFFSETFROM:+010000
486
+ TZNAME:Europe/London(STD)
487
+ DTSTART:19671029T030000
488
+ RDATE:19671029T030000
489
+ END:STANDARD
490
+ BEGIN:STANDARD
491
+ TZOFFSETTO:+010000
492
+ TZOFFSETFROM:+010000
493
+ TZNAME:Europe/London(STD)
494
+ DTSTART:19681027T000000
495
+ RDATE:19681027T000000
496
+ END:STANDARD
497
+ BEGIN:DAYLIGHT
498
+ TZOFFSETTO:+010000
499
+ TZOFFSETFROM:+000000
500
+ TZNAME:Europe/London(DST)
501
+ DTSTART:19680218T020000
502
+ RDATE:19680218T020000
503
+ END:DAYLIGHT
504
+ BEGIN:STANDARD
505
+ TZOFFSETTO:+000000
506
+ TZOFFSETFROM:+010000
507
+ TZNAME:Europe/London(STD)
508
+ DTSTART:19711031T030000
509
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
510
+ END:STANDARD
511
+ BEGIN:STANDARD
512
+ TZOFFSETTO:+000000
513
+ TZOFFSETFROM:+010000
514
+ TZNAME:Europe/London(STD)
515
+ DTSTART:19761024T030000
516
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
517
+ END:STANDARD
518
+ BEGIN:DAYLIGHT
519
+ TZOFFSETTO:+010000
520
+ TZOFFSETFROM:+000000
521
+ TZNAME:Europe/London(DST)
522
+ DTSTART:19720319T020000
523
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
524
+ END:DAYLIGHT
525
+ BEGIN:STANDARD
526
+ TZOFFSETTO:+000000
527
+ TZOFFSETFROM:+010000
528
+ TZNAME:Europe/London(STD)
529
+ DTSTART:19781029T030000
530
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
531
+ END:STANDARD
532
+ BEGIN:STANDARD
533
+ TZOFFSETTO:+000000
534
+ TZOFFSETFROM:+010000
535
+ TZNAME:Europe/London(STD)
536
+ DTSTART:19811025T020000
537
+ RDATE:19811025T020000
538
+ END:STANDARD
539
+ BEGIN:STANDARD
540
+ TZOFFSETTO:+000000
541
+ TZOFFSETFROM:+010000
542
+ TZNAME:Europe/London(STD)
543
+ DTSTART:19821024T020000
544
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
545
+ END:STANDARD
546
+ BEGIN:STANDARD
547
+ TZOFFSETTO:+000000
548
+ TZOFFSETFROM:+010000
549
+ TZNAME:Europe/London(STD)
550
+ DTSTART:19841028T020000
551
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
552
+ END:STANDARD
553
+ BEGIN:STANDARD
554
+ TZOFFSETTO:+000000
555
+ TZOFFSETFROM:+010000
556
+ TZNAME:Europe/London(STD)
557
+ DTSTART:19881023T020000
558
+ RDATE:19881023T020000
559
+ END:STANDARD
560
+ BEGIN:STANDARD
561
+ TZOFFSETTO:+000000
562
+ TZOFFSETFROM:+010000
563
+ TZNAME:Europe/London(STD)
564
+ DTSTART:19891029T020000
565
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
566
+ END:STANDARD
567
+ BEGIN:STANDARD
568
+ TZOFFSETTO:+000000
569
+ TZOFFSETFROM:+010000
570
+ TZNAME:Europe/London(STD)
571
+ DTSTART:19931024T020000
572
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
573
+ END:STANDARD
574
+ BEGIN:DAYLIGHT
575
+ TZOFFSETTO:+010000
576
+ TZOFFSETFROM:+000000
577
+ TZNAME:Europe/London(DST)
578
+ DTSTART:19810329T010000
579
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
580
+ END:DAYLIGHT
581
+ BEGIN:STANDARD
582
+ TZOFFSETTO:+000000
583
+ TZOFFSETFROM:+010000
584
+ TZNAME:Europe/London(STD)
585
+ DTSTART:19961027T020000
586
+ RDATE:19961027T020000
587
+ END:STANDARD
588
+ BEGIN:DAYLIGHT
589
+ TZOFFSETTO:+010000
590
+ TZOFFSETFROM:+000000
591
+ TZNAME:(DST)
592
+ DTSTART:19970330T010000
593
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
594
+ END:DAYLIGHT
595
+ BEGIN:STANDARD
596
+ TZOFFSETTO:+000000
597
+ TZOFFSETFROM:+010000
598
+ TZNAME:(STD)
599
+ DTSTART:19971026T020000
600
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
601
+ END:STANDARD
602
+ END:VTIMEZONE
603
+ BEGIN:VEVENT
604
+ CREATED:20241002T120758Z
605
+ LAST-MODIFIED:20241002T120908Z
606
+ DTSTAMP:20241002T120908Z
607
+ UID:a26289e0-8739-488b-b706-77c9364193c1
608
+ SUMMARY:Event with an alarm 1 week before this starts
609
+ X-MOZ-LASTACK:20241002T120844Z
610
+ DTSTART;TZID=Europe/London:20241209T110000
611
+ DTEND;TZID=Europe/London:20241209T120000
612
+ TRANSP:OPAQUE
613
+ X-MOZ-GENERATION:4
614
+ DESCRIPTION:Event
615
+ BEGIN:VALARM
616
+ ACTION:DISPLAY
617
+ TRIGGER:-P1W
618
+ DESCRIPTION:Alarm One Week Before
619
+ END:VALARM
620
+ BEGIN:VALARM
621
+ ACTION:DISPLAY
622
+ TRIGGER:-P2D
623
+ DESCRIPTION:Alarm Two Days Before
624
+ END:VALARM
625
+ END:VEVENT
626
+ END:VCALENDAR
@@ -40,6 +40,7 @@ classifiers = [
40
40
  "Programming Language :: Python :: 3.10",
41
41
  "Programming Language :: Python :: 3.11",
42
42
  "Programming Language :: Python :: 3.12",
43
+ "Programming Language :: Python :: 3.13",
43
44
  "Operating System :: OS Independent",
44
45
  "Topic :: Office/Business :: Scheduling",
45
46
  ]
@@ -5,7 +5,7 @@
5
5
 
6
6
  [tox]
7
7
  skipsdist = True
8
- envlist = py39, py310, py311, py312, ruff
8
+ envlist = py39, py310, py311, py312, py313, ruff
9
9
 
10
10
  [testenv]
11
11
  #
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes