Getting error in Zerodha Tradehull

from Zerodha_Tradehull import Tradehull
from rich import print
import os
import talib
import pandas as pd
import pandas_ta as pta
import datetime
import time
import xlwings as xw
import pdb
import numpy as np
import pickle

api_key    = ""
api_secret = ""
tsl        = Tradehull(api_key, api_secret, "yes")
kite       = tsl.kite

# ----------------------------------------------Connection with Telegrame-------------------------
bot_token 			= ""
receiver_chat_id 	= ""
# ----------------------------------------------Connection with Excel-----------------------------
book       			= xw.Book('User_Interface_Stock.xlsx')
sheet      			= book.sheets['Live Orderbook']
c_sht      			= book.sheets['Completed_Orderbook']
s_con      			= book.sheets['Strategy']
# ------------------------------------------- Start : Pre market scanning ---------------------

watchlist  			= [x for x in set(s_con.range("A2:A60").value)]
watchlist 			= [x for x in watchlist if x is not None]
traded_watchlist 	= []

print(watchlist)

status    			= {'Stock_Name':None , 'Ltp' :None, 'Date':None , 'Entry_Time': None, 'Entry_Price': None, 'Buy-Sell_Signal': None, 'Quantity': None, 'Stoploss': None, 
						'Target': None, 'Exit_Time': None, 'Exit_Price': None, 'Profit_Loss': None, 'Remark': None, 'Traded':None, "Entry_Order_Id":None, 
						"Stoploss_Order_Id":None}
orderbook 			= {}
reentry   			= "Yes" #"Yes/No"
completed_orderbook = []
current_time		= datetime.datetime.now().time()

for name in watchlist:
	orderbook[name] = status.copy()

sheet.range('A1:Z100').value	= None
c_sht.range('A1:Z100').value 	= None
s_con.range('B6').value      	= None
first_day            			= False

if not first_day:
	orderbook 		= pickle.load(open("orderbook.pkl", "rb"))

trades_in_progress 	= [x['underlying_name'] for x in orderbook.values() if x['traded'] is not None]

initial_capital = 100000
# ------------------------------------------- Indicator Parameters ---------------------
short_SUPT_len 	= 10
short_SUPT_mult = 2
long_SUPT_len 	= 21
long_SUPT_mult 	= 4

while True:

	current_dtime   = datetime.datetime.now()

	if current_dtime.time() < datetime.time(8,00):
		print(f"Wait for market to start", current_dtime)
		continue

	watchlist        = set([x for x in set(s_con.range("A2:A60").value)] + trades_in_progress)
	live_pnl         = tsl.get_live_pnl()
	market_over      = current_time > datetime.time(15,00)
	
	
	if market_over:
		print(f"Market over Closing all trades !! Bye Bye See you Tomorrow", current_dtime)
		# tsl.market_over_close_all_order()
		os.makedirs(f'Logs/{str(current_dtime.date())}', exist_ok=True)
		odf.to_csv(f'Logs/{str(current_dtime.date())}/odf.csv', index=True)
		pd.DataFrame(kite.orders()).to_csv(f'Logs/{str(current_dtime.date())}/orders.csv', index=True)
		pd.DataFrame(kite.positions()).to_csv(f'Logs/{str(current_dtime.date())}/positions.csv', index=True)
		pickle.dump(orderbook, open(f'orderbook.pkl', "wb"))
		break

	for name in watchlist:
		odf 					= pd.DataFrame(orderbook).T
		sheet.range('A1').value = odf
		c_sht.range('A1').value = pd.DataFrame(completed_orderbook)
		current_time  			= datetime.datetime.now()
		print(f"Scanning..........{name}")

		data 					= tsl.get_quote_data(names=name)
		data               		= {name : {"name": name.split(":")[0], "prev_close":data[name]['ohlc']['close'], "ltp":data[name]['last_price']}  for name, value in data.items()}
		ltp 					= data[name]['ltp']

		chart 					= tsl.get_short_term_hist_data(name=name, exchange="NSE", interval=60, oi = True)
		chart_ha 				= pd.convert_heikin_ashi(chart)
		
		indi_Short         		= pta.supertrend(chart_ha['high'], chart_ha['low'], chart_ha['close'], length=short_SUPT_len, multiplier=short_SUPT_mult)
		chart_ha   				= pd.concat([chart_ha, indi_Short], axis=1, join='inner')
		st1_col, st1d_col, st1l_col, st1s_col           =   indi_Short.columns

		indi_Long         		= pta.supertrend(chart_ha['high'], chart_ha['low'], chart_ha['close'], length=long_SUPT_len, multiplier=long_SUPT_mult)
		chart_ha    			= pd.concat([chart_ha, indi_Long], axis=1, join='inner').round(2)
		st2_col, st2d_col, st2l_col, st2s_col           =   indi_Long.columns
		
		comp_candle 			= chart_ha.iloc[-2]
		prev_candle				= chart_ha.iloc[-3]

		Traded 					= orderbook[name]['Traded']
		quantity 				= int(initial_capital/ltp)

		bc1 = comp_candle[st1d_col] == 1
		bc2 = comp_candle[st2d_col] == 1
		bc3 = (ltp > comp_candle['high'])
		bc4 = Traded is None

		sc1 = comp_candle[st1d_col] == -1
		sc2 = comp_candle[st2d_col] == -1
		sc3 = (ltp < comp_candle['low'])
		sc4 = Traded is None
		
		if bc1 and bc2 and bc3 and bc4:

			Entry_Order_Id 		= tsl.place_order(variety="regular", exchange='NSE', tradingsymbol=name, transaction_type='BUY', quantity=quantity, product="MIS", order_type="MARKET")
			Entry_Price 		= tsl.get_executed_price(order_id = Entry_Order_Id)

			message = f"Traded in {name} \nQuantity {quantity} \nPrice {Entry_Price}"
			tsl.send_telegram_alert(message=message,receiver_chat_id=receiver_chat_id,bot_token=bot_token)

			orderbook[name]['Stock_Name']      		= name
			orderbook[name]['Date']             	= str(current_time.date())
			orderbook[name]['Entry_Time']       	= str(current_time.time())[:8]
			orderbook[name]['Entry_Order_Id']     	= Entry_Order_Id
			orderbook[name]['Entry_Price']      	= Entry_Price
			orderbook[name]['Quantity']             = quantity
			orderbook[name]['Buy-Sell_Signal']      = 'BUY'
			orderbook[name]['Traded']           	= "Yes"

		if sc1 and sc2 and sc3 and sc4:

			Entry_Order_Id 		= tsl.place_order(variety="regular", exchange='NSE', tradingsymbol=name, transaction_type='SELL', quantity=quantity, product="MIS", order_type="MARKET")
			Entry_Price 		= tsl.get_executed_price(order_id = Entry_Order_Id)

			message = f"Traded in {name} \nQuantity {quantity} \nPrice {Entry_Price}"
			tsl.send_telegram_alert(message=message,receiver_chat_id=receiver_chat_id,bot_token=bot_token)

			orderbook[name]['Stock_Name']      		= name
			orderbook[name]['Date']             	= str(current_time.date())
			orderbook[name]['Entry_Time']       	= str(current_time.time())[:8]
			orderbook[name]['Entry_Order_Id']     	= Entry_Order_Id
			orderbook[name]['Entry_Price']      	= Entry_Price
			orderbook[name]['Quantity']             = quantity
			orderbook[name]['Buy-Sell_Signal']      = 'BUY'
			orderbook[name]['Traded']           	= "Yes"

						
# ------------------------------------------- Exit & Traling ---------------------
		if orderbook[name]['Traded']:
			bought  = orderbook[name]['Buy-Sell_Signal'] == 'BUY'
			sold    = orderbook[name]['Buy-Sell_Signal'] == 'SELL'

# ------------------------------------------- Check on Exit ---------------------
			if bought:
				supertrend_change_1 	= comp_candle[st1d_col] == -1 or comp_candle[st2d_col] == 1
		
				if supertrend_change_1:
					orderbook[name]['remark'] = "Target Buy-Hit"

					Exit_Order_Id 	= tsl.place_order(variety="regular", exchange='NSE', tradingsymbol=name, transaction_type='SELL', quantity=quantity, product="MIS", order_type="MARKET")
											
					orderbook[name]['Exit_Time']     	= tsl.get_exchange_time(orderid=orderbook[name]['Exit_Order_Id'])
					orderbook[name]['Exit_Price']    	= tsl.get_executed_price(orderid=orderbook[name]['Exit_Order_Id'])
					orderbook[name]['Profit_Loss'] 		= (orderbook[name]['Entry_Price'] - orderbook[name]['Exit_Price'])*orderbook[name]['Quantity']

					if reentry:
						completed_orderbook.append(orderbook[name])						
						orderbook[name] = status.copy()
			if sold:
				supertrend_change_1 	= comp_candle[st1d_col] ==  1 or comp_candle[st2d_col] == -1

				if supertrend_change_1:
					orderbook[name]['remark'] = "Target Sell-Hit"

					modified_order_id = tsl.modify_order(order_id=orderbook[name]['Stoploss_Order_Id'],order_type='MARKET',quantity=None,price=None,trigger_price=None)
					
					orderbook[name]['Exit_Time']     	= tsl.get_exchange_time(orderid=orderbook[name]['Stoploss_Order_Id'])
					orderbook[name]['Exit_Price']    	= tsl.get_executed_price(orderid=orderbook[name]['Stoploss_Order_Id'])
					orderbook[name]['Profit_Loss'] 		= (orderbook[name]['Entry_Price'] - orderbook[name]['Exit_Price'])*orderbook[name]['Quantity']
					
					if reentry:
						completed_orderbook.append(orderbook[name])						
						orderbook[name] = status.copy()
PS C:\Users\HP\OneDrive\Working Algo\Test_Algo_DST> & C:/Users/HP/AppData/Local/Programs/Python/Python38/python.exe "c:/Users/HP/OneDrive/Working Algo/Test_Algo_DST/Double-ST_Zerodha.py"
Zerodha CodeBase Version 1.0.3
Traceback (most recent call last):
  File "c:/Users/HP/OneDrive/Working Algo/Test_Algo_DST/Double-ST_Zerodha.py", line 1, in <module>
    from Zerodha_Tradehull import Tradehull
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38\lib\site-packages\Zerodha_Tradehull\__init__.py", line 1, in <module>
    from .Zerodha_Tradehull import Tradehull
ImportError: cannot import name 'Tradehull' from 'Zerodha_Tradehull.Zerodha_Tradehull' (C:\Users\HP\AppData\Local\Programs\Python\Python38\lib\site-packages\Zerodha_Tradehull\Zerodha_Tradehull.py)      
PS C:\Users\HP\OneDrive\Working Algo\Test_Algo_DST>

Hi @tarsharm20 ,

Code seems to be right, but make sure same name file Zerodha_Tradehull.py does not exist in the current folder.