Package: calendar-view
Calendar ViewLibrary provides a graphical view of the calendar. View, title and events can be easily configured.The output in*.pngfile.InstallationInstall the package using PyPI:pipinstallcalendar-viewor directly from the repository:pipinstallgit+https://github.com/sakhnevych/calendar-view.gitInput parametersConfigurationConfiguration for all views can be done usingCalendarConfigclass.ParameterTypeDescriptionlangstrLanguage, which is used for the name of the weekday. Supported values: en, ru, ua. Default value:entitlestrTitle of the view. Can be emptydatesstrThe range of the days to show. Default value:‘Mo - Su’daysintIfdatesdoes not exist, the number of days to display can be configured starting from Monday. For example, ‘4’ meansdates='Mo- Th'hoursstrHour range to displaymodestrMode will override some parameters. Available modes:‘week’ - show the current week‘day_hours’ - show hours range ‘8:00 - 22:00’‘working_hours’ - show hours range ‘8:00 - 19:00’‘auto’ - modes ‘week’ + ‘day_hours’show_dateboolDefines if the date has to be shown. Format:'dd.mm'or'dd.mm.YYYY'ifshow_year=True. Default value:Trueshow_yearboolDefines if the year has to be added to the date format. Omitted ifshow_date=False. Default value:FalselegendboolIfFalse- draw the name of the event inside the block. IfTrue- draw the name in the legend. If not defined, will be chosen automatically.title_vertical_alignstrThe vertical align of the title and noted in the calendar event:top|center|bottom. Default value:centerExample:config=CalendarConfig(lang='en',title='Yoga Class Schedule',dates='Mo - Fr',hours='8 - 22',mode=None,show_date=True,show_year=False,legend=True,)# you can validate your configvalidate_config(config)EventParameterTypeDescriptionnamestrLanguage, which is used for the name of the weekday. Supported values: en, ru, uadaystr / date / datetimeThe day of the event. Can be set using any of 3 different types. Can’t be defined together withday_of_weekday_of_weekintThe range of the days to show. Can’t be defined together withdaystartstr / time / datetimeStart of the event. Can be set using any of 3 different types. The string has formatHH:mmorHH.endstr / time / datetimeEnd of the event. Can be set using any of 3 different types. The string has formatHH:mmorHH.DatesThe date can be defined using the next rules.Allowed year range: [1900, 2100]Any delimiter from the list can be used:-./Allowed formats:YYYY.mm.dddd.mm.YYYYdd.mm.YY- will use 20th centurydd.mm- for the current yearAs an example, let’s look for example at the same data in all formats (assume, that the current year is 2022):2022-06-2121.06.202221/06/2221/06StylesYou can change styles by setting the required parameter. See the full list of parameters in the file:style.pyExample:fromcalendar_view.configimportstylestyle.hour_height=80style.event_notes_color='#7F7F7F'Examples1. Basic usageMost basic and simplest usage. Doesn’t have a configuration.Code:fromcalendar_view.calendarimportCalendarfromcalendar_view.core.eventimportEventStylescalendar=Calendar.build()calendar.add_event(day_of_week=0,start='08:00',end='17:00',style=EventStyles.GRAY)calendar.add_event(day_of_week=5,start='09:00',end='12:00',style=EventStyles.RED)calendar.add_event(day_of_week=5,start='10:00',end='13:00',style=EventStyles.BLUE)calendar.add_event(day_of_week=6,start='15:00',end='18:00')calendar.save("simple_view.png")Output:2. Configuration and specific datesView for one script. Configuration objects and events with specific dates are used.Code:fromcalendar_view.calendarimportCalendarfromcalendar_view.coreimportdatafromcalendar_view.core.eventimportEventconfig=data.CalendarConfig(lang='en',title='Sprint 23',dates='2019-09-23 - 2019-09-27',show_year=True,mode='working_hours',legend=False,)events=[Event('Planning',day='2019-09-23',start='11:00',end='13:00'),Event('Demo',day='2019-09-27',start='15:00',end='16:00'),Event('Retrospective',day='2019-09-27',start='17:00',end='18:00'),]data.validate_config(config)data.validate_events(events,config)calendar=Calendar.build(config)calendar.add_events(events)calendar.save("sprint_23.png")Output:3. Legend viewIf the name of the event is too long, it can be printed in the legend.Code:fromcalendar_view.coreimportdatafromcalendar_view.core.configimportCalendarConfigfromcalendar_view.calendarimportCalendarfromcalendar_view.core.eventimportEventconfig=CalendarConfig(lang='en',title='Yoga Class Schedule',dates='Mo - Su',hours='8 - 22',show_date=False,legend=True,)events=[Event(day_of_week=0,start='11:00',end='12:30',title='Ashtanga, 90 mins, with Gina',style=EventStyles.GRAY),Event(day_of_week=1,start='18:00',end='19:15',title='HOT Core Yoga, 75 mins, with David',style=EventStyles.RED),Event(day_of_week=2,start='09:00',end='10:00',title='Meditation - Yoga Nidra, 60 mins, with Heena',style=EventStyles.BLUE),Event(day_of_week=2,start='19:00',end='20:15',title='Hatha Yoga, 75 mins, with Jo',style=EventStyles.GREEN),Event(day_of_week=3,start='19:00',end='20:00',title='Pilates, 60 mins, with Erika',style=EventStyles.GRAY),Event(day_of_week=4,start='18:30',end='20:00',title='Kundalini Yoga, 90 mins, with Dan',style=EventStyles.RED),Event(day_of_week=5,start='10:00',end='11:15',title='Hatha Yoga, 75 mins, with Amelia',style=EventStyles.GREEN),Event(day_of_week=6,start='10:00',end='11:15',title='Yoga Open, 75 mins, with Klaudia',style=EventStyles.BLUE),Event(day_of_week=6,start='14:00',end='15:15',title='Hatha Yoga, 75 mins, with Vick',style=EventStyles.GREEN)]data.validate_config(config)data.validate_events(events,config)calendar=Calendar.build(config)calendar.add_events(events)calendar.save("yoga_class.png")Output:4. Event notes and styleAdd the note to the event. The text is fit to the width. Change the vertical align and the style of the image.Code:fromcalendar_view.calendarimportCalendarfromcalendar_view.configimportstylefromcalendar_view.coreimportdatafromcalendar_view.core.eventimportEventstyle.hour_height=80style.event_notes_color='#7F7F7F'config=data.CalendarConfig(lang='en',title='Massage. Antonio',dates='2022-06-20 - 2022-06-24',show_year=True,mode='working_hours',title_vertical_align='top')events=[Event(day='2022-06-20',start='11:00',end='12:00',title='Jesse Tyson'),Event(day='2022-06-20',start='12:30',end='14:00',title='Karry',notes='No music'),Event(day='2022-06-20',start='15:00',end='17:00',title='Taylor Davis',notes='Ask about the shin that hurts last time.'),Event(day='2022-06-20',start='17:30',end='18:30',title='Jose Hope'),Event(day='2022-06-22',start='10:00',end='12:00',title='Annabell Moore',notes='A therapist for her mother:\n+4487498375 Nick Adams'),Event(day='2022-06-22',start='12:30',end='14:00',title='Carlos Cassidy'),Event(day='2022-06-22',start='15:00',end='17:00',title='Joe'),Event(day='2022-06-22',start='17:30',end='18:30',title='Jose Hope'),Event(day='2022-06-23',start='10:00',end='11:00',title='Elena Miller'),Event(day='2022-06-23',start='11:30',end='13:30',title='Karry',notes='No music'),Event(day='2022-06-23',start='15:00',end='16:30',title='Mia Williams'),Event(day='2022-06-23',start='17:00',end='18:00',title='Xander'),]calendar=Calendar.build(config)calendar.add_events(events)calendar.save("massage.png")Output:Licensecalendar-view is licensed under a MIT license. Please see theLICENSEfile for details.