Thanks for reply, have had time to do as suggested...
now have this:
 /usr/lib/cgi-bin/tvh_epg.py in <module>()
   1613     cgitb.enable(display=0, logdir=DOCROOT + '/python_errors', format='html')
   1614 
=> 1615     web_interface()
   1616 
   1617 else:
web_interface = <function web_interface>
 /usr/lib/cgi-bin/tvh_epg.py in web_interface()
   1548         html_page_footer()
   1549     elif p_page == 'error':
=> 1550         html_page_header()
   1551         page_error(error_text)
   1552         html_page_footer()
global html_page_header = <function html_page_header>
 /usr/lib/cgi-bin/tvh_epg.py in html_page_header()
   1332 
   1333     bg_col_page = BG_COL_DEF_PAGE
=> 1334     if BG_COL_PAGE in MY_SETTINGS[SETTINGS_SECTION] and MY_SETTINGS.get(SETTINGS_SECTION, BG_COL_PAGE) != '':
   1335         bg_col_page = MY_SETTINGS.get(SETTINGS_SECTION, BG_COL_PAGE)
   1336 
global BG_COL_PAGE = 'bg_col_page', global MY_SETTINGS = <configparser.ConfigParser object>, global SETTINGS_SECTION = 'user', MY_SETTINGS.get = <bound method RawConfigParser.get of <configparser.ConfigParser object>>
 /usr/lib/python3.6/configparser.py in
getitem__(self=<configparser.ConfigParser object>, key='user')
    957     def
getitem__(self, key):
    958         if key != self.default_section and not self.has_section(key):
=>  959             raise KeyError(key)
    960         return self._proxies[key]
    961 
builtin KeyError = <class 'KeyError'>, key = 'user'
I don't have any initiation of setting up a "settings file"; when I tried to create a user with persistent authentication in the TVH "users" page; there is no "persistent authentication token" read only field. Perhaps my TVH version is too old/outdated (v HTS Tvheadend 4.2.8-36~g5bdcfd8ac) ??
Regards John