and isvalidgregorian(the isvalidgregorian(method should determine if the three components of the given gregorian date are valid add additional operations to the date class(adayofweekname()returns string containing the name of the day (bdayofyear()returns an integer indicating the day of the year for examplethe first day of february is day of the year (cisweekday()determines if the date is weekday (disequinox()determines if the date is the spring or autumn equinox (eissolstice()determines if the date is the summer or winter solstice (fasgregorian(divchar '/')similar to the str(method but uses the optional argument divchar as the dividing character between the three components of the gregorian date implement function named printcalendar(that accepts date object and prints calendar for the month of the given date for exampleif the date object passed to the function contained the date the function should print su november mo tu we th fr sa modify the date(constructor to make each of the three arguments optionalwith an initial value of zero when no argument is supplied to the constructorthe object should be initialized to the current date hintyou will need to use python' date(function from the time py module programming projects click counter is small hand-held device that contains push button and count display to increment the counterthe button is pushed and the new count shows in the display clicker counters also contain button that can be pressed to reset the counter to zero design and implement the counter adt that functions as hand-held clicker grab bag adt is similar to the bag adt with one difference grab bag does not have remove(operationbut in place of it has grabitem(operationwhich allows for the random removal of an item from the bag implement the grab bag adt