# Создание собственного модуля Каждый модуль PySca - класс, отвечающий за конкретные задачи в цепочке сканирования. Чтобы ваш код стал модулем сканера, необходимо соблюдать следующие условия: * Модуль должен представлять из себя отдельный файл, содержащий в себе единственный класс, в методах которого и реализована логика модуля. Имя файла модуля должно совпадать с именем содержащегося в нём класса. * Наследование класса модуля от одного из абстрактных классов AbstractParser, AbstractAddressGenerator, AbstractScanner, AbstractStorage в соответствии с функционалом. * Расположение файла модуля в общей системе папок PySca зависит от класса-родителя модуля и определяется по этой таблице: Класс-родитель | Адрес[^pysca_folder_system] :--------------:|:-----: AbstractParser | modules/address_generation AbstractAddressGenerator | modules/address_generation AbstractScanner | modules/network_scan AbstractStorage | modules/storage [^pysca_folder_system]: Все адреса приведены относительно корневого каталога PySca. * Реализация всех методов класса-родителя с соблюдением условий: * Аннотация всех аргументов методов (если они необходимы)[^self_argument] ключами требуемых значений. * Аннотация возвращаемых методами значений в виде множества/списка возвращаемых ключей (если метод должен что-то возвращать). * Соответствие возвращаемых методом значений аннотации - возвращение словаря с парами ключ-значение, где ключ - элемент из списка заявленных ключей, а значение - соответствующие ему данные, либо возвращение None. [^self_argument]: Разумеется, self в аннотации не нуждается, более того, аннотация self может сломать сканер.