try:
weekly
except NameError:
#weekly = "20910" #20JUN Previously #20723 in monthend #20APR
def getweekly():
stuff = [['27-Aug-2020', '20AUG'], ['03-Sep-2020', '20903'], ['10-Sep-2020', '20910'], ['17-Sep-2020', '20917'], ['24-Sep-2020', '20SEP'], ['01-Oct-2020', '20O01'], ['08-Oct-2020', '20O08'], ['15-Oct-2020', '20O15'], ['22-Oct-2020', '20O22'], ['29-Oct-2020', '20OCT'], ['5-Nov-2020', '20N05'], ['12-Nov-2020', '20N12'], ['19-Nov-2020', '20N19'], ['26-Nov-2020', '20NOV'], ['03-Dec-2020', '20D03'], ['10-Dec-2020', '20D10'], ['17-Dec-2020', '20D17'], ['24-Dec-2020', '20DEC'], ['07-Jan-2021', '21107'], ['14-Jan-2021', '21114'], ['21-Jan-2021', '21121'], ['30-Jan-2021', '21JAN'], ['04-Feb-2021', '21204'], ['11-Feb-2021', '21211'], ['18-Feb-2021', '21218'], ['29-Feb-2021', '21FEB']]
run_time=datetime.datetime.now()
for x in range(0,len(stuff)):
#Convertion to Datetime Object
stuff[x][0] = datetime.datetime.strptime(stuff[x][0], '%d-%b-%Y')
#Adding DTE
stuff[x].append((run_time-stuff[x][0]).days)
#Getting Expiry
if((run_time-stuff[x][0]).days<=0):
weekly_dict=x
break
def intraday_end():
start_now=datetime.datetime.now().replace(hour=15, minute=20, second=0, microsecond=0)
return start_now<datetime.datetime.now()
try:
#Case when I forgot to update the code
if((run_time-stuff[weekly_dict][0]).days==0):
if(intraday_end()==True):
weekly_dict =weekly_dict+1
return (stuff[weekly_dict][1])
except:
return '20AUG'
weekly = getweekly()
If you’re having better solution do share.