Рекомендации по работе с репозиторием
Требования для начала работы
Для использования Mapillary API необходимо в каждом запросе передавать Client ID, который можно получить сразу после регистрации по следующей ссылке: https://www.mapillary.com/app/settings/developers Вообще говоря, не помешало бы мельком ознакомится и с официальной документацией.
Класс APIService, который используется для создания запросов принимает в конструкторе файл, на первой строке которого записан Client ID, а на второй Client Secret. Каждому, кто использует данный репозиторий следует самостоятельно создать данный файл в нужной форме(рекомендации по улучшений данного процесса приветствуются)
На данный момент существует зависимость от пакета requests, через который осуществляються запросы, более подробно о нем можно почитать здесь В скором времени планируется перейти на aiohttp в силу более высокой скоросто загрузки в силу асинхронного подхода.
Установить данные пакеты можно для pip
pip install requests
pip install aiohttp
или для Anaconda
conda install requests
conda install aiohttp
Базовые принципы
Пакет делиться на модули по их предназначению. Модуль model содержит классы, которые реализуют обьекты, указанные в документации, модуль же request предназначен для осуществления запросов. APIService основной класс для создания обьектов запросов и их выполнения группами. Каждый тип запроса осуществляет отдельный класс, который имеет методы, которые изменяют конечнeю request string и возвращают себя для более удобного использования следующего вида:
service.createImageSearchRequest().addBbox(geoPoint1, geoPoint2).addPano(false).addPerPage(2000).addStartTime(date)
Для непосредственно отправки запроса и приема ответа используется метод get, который либо переопределяется в каждом дочернем от APIRequest классе либо использует свою же версию(с помощью super).
Для тестирования используется unittest, каждую отдельну группу тестов(на класс) желательно писать в отдельном файле в папке tests
В одном из issues есть отдельный пункт по добавлению комментариев, для более полного понимания происходящего
Руководство по групповой работе
- Каждое изменение осуществляется через Pull Request
- Каждый коммит меняет только один аспект = решает одну маленькую задачу
- Каждый коментарий коммита предложение, которое описывает, что сделано на английском языке, с использованием глагола в совершенной форме
- Каждый коммит представляет собой работающий код
- Не мешало бы писать тесты для каждой выполненной задачи
- Не вносить изменений в структуру(изменять прототипы методов класса и функций) без консультации
- Необходимы комментарии ко всем методам и классам, которые вы пишите
- Коммит окончательно решающий задачу из Issue последним предложением имеет Close #номер Issue
- Регулярно совершаюте синхронизацию с удаленным репозиторием(данным)
- Если вы выбрали задачу, напишите в комментариях к Issue, что вы за нее взялись, для избежания ситуации при которой два человека выполняли одну и ту же работу или внесли несовместимые изменения
Все ваши предложения и пожелания в Issues)