importargparsefromdatetimeimportdatetime,timedeltafromoffice365.sharepoint.client_contextimportClientContextfromtests.settingsimportclient_id,password,site_url,tenant,usernamedefmain():parser=argparse.ArgumentParser(description="Extend the expiration date of a webhook subscription")parser.add_argument("--site-url",default=site_url,help="target site URL")parser.add_argument("--list-title",default="Documents",help="list title")parser.add_argument("--subscription-id",default=None,help="subscription id (default: first subscription)")args=parser.parse_args()ctx=ClientContext(args.site_url).with_username_and_password(tenant=tenant,client_id=client_id,username=username,password=password,)target_list=ctx.web.lists.get_by_title(args.list_title)subscriptions=target_list.subscriptions.get().execute_query()ifargs.subscription_id:subscription=next((sforsinsubscriptionsifs.id==args.subscription_id),None)ifsubscriptionisNone:raiseValueError(f"Subscription {args.subscription_id} not found")else:subscription=subscriptions[0]new_expiry=datetime.utcnow()+timedelta(days=180)subscription.expiration_datetime=new_expirysubscription.update().execute_query()print(f"Subscription {subscription.id} updated, expires: {subscription.expiration_datetime}")if__name__=="__main__":main()