В задании список списков был...
можно сделать zip(generate(dots),generate(dots)) - получится список кортежей
или map(lambda x,y:[x,y],generate(dots),generate(dots)) - будет список списков
sddvxd: request.Session с куками нормально работает. Что там сохранилось, можно смотреть в s.cookies.get_dict()
Можно попробовать Selenium, будет все как в браузере. Вот в этой книжке кое что есть dmkpress.com/catalog/computer/programming/python/9...
Сергей: вообще основной смысл ответа не об удаленке. Если эти ребята уже получили доступ к вашим базам, то бояться их поздно. А пользуется ли админ удаленкой или нет, в данном случае вторично.
ivkol: Два способа придумал и оба не красивые:
abc = list(string.ascii_lowercase + string.digits + '-' + '_')
abc = [chr(x) for x in range(97,123)+range(48,58)] + ['-','_']
Что можно придумать лучше?
Влад: если AttributeError возникает - это разве не ответ на исходный вопрос? В стеке вызовов четко видно где циклический импорт. Если нет ошибки, то нет и проблемы