All Projects → MoreliaTalk → morelia_server

MoreliaTalk / morelia_server

Licence: LGPL-3.0, GPL-3.0 licenses found Licenses found LGPL-3.0 COPYING.LESSER GPL-3.0 COPYING
Server for MoreliaTalk network

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to morelia server

Fastapi
FastAPI framework, high performance, easy to learn, fast to code, ready for production
Stars: ✭ 39,588 (+158252%)
Mutual labels:  starlette, pydantic, fastapi
fastapi-tdd-docker
Test-Driven Development with FastAPI and Docker
Stars: ✭ 89 (+256%)
Mutual labels:  starlette, fastapi
msgpack-asgi
Drop-in MessagePack support for ASGI applications and frameworks
Stars: ✭ 100 (+300%)
Mutual labels:  starlette, fastapi
starlette-opentracing
Opentracing support for Starlette and FastApi
Stars: ✭ 62 (+148%)
Mutual labels:  starlette, fastapi
fastapi-zeit-now
A simple example of deploying FastAPI as a Zeit Serverless Function
Stars: ✭ 24 (-4%)
Mutual labels:  starlette, fastapi
fastapi-users
Ready-to-use and customizable users management for FastAPI
Stars: ✭ 1,920 (+7580%)
Mutual labels:  starlette, fastapi
starlette-graphene3
An ASGI app for using Graphene v3 with Starlette / FastAPI
Stars: ✭ 52 (+108%)
Mutual labels:  starlette, fastapi
fastapi-lazy
Lazy package to start your project using FastAPI✨
Stars: ✭ 84 (+236%)
Mutual labels:  pydantic, fastapi
Awesome Fastapi
A curated list of awesome things related to FastAPI
Stars: ✭ 3,033 (+12032%)
Mutual labels:  starlette, fastapi
pait
Python Modern API Tools, fast to code
Stars: ✭ 24 (-4%)
Mutual labels:  starlette, pydantic
starlette-context
Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.
Stars: ✭ 320 (+1180%)
Mutual labels:  starlette, fastapi
spectree
API spec validator and OpenAPI document generator for Python web frameworks.
Stars: ✭ 190 (+660%)
Mutual labels:  starlette, pydantic
arel
Lightweight browser hot reload for Python ASGI web apps
Stars: ✭ 69 (+176%)
Mutual labels:  starlette, fastapi
serverless-mangum-examples
Example ASGI applications and Serverless Framework configurations using Mangum
Stars: ✭ 26 (+4%)
Mutual labels:  starlette, fastapi
inboard
🚢 Docker images and utilities to power your Python APIs and help you ship faster. With support for Uvicorn, Gunicorn, Starlette, and FastAPI.
Stars: ✭ 106 (+324%)
Mutual labels:  starlette, fastapi
starlette-discord
"Login with Discord" support for Starlette and FastAPI
Stars: ✭ 15 (-40%)
Mutual labels:  starlette, fastapi
pydantic-i18n
pydantic-i18n is an extension to support an i18n for the pydantic error messages.
Stars: ✭ 32 (+28%)
Mutual labels:  pydantic, fastapi
starlite
Light, Flexible and Extensible ASGI API framework
Stars: ✭ 1,525 (+6000%)
Mutual labels:  starlette, pydantic
mongox
Familiar async Python MongoDB ODM
Stars: ✭ 113 (+352%)
Mutual labels:  starlette, pydantic
fastapi-websocket-broadcast
Websocket 'broadcast' demo using FastAPI/Starlette
Stars: ✭ 106 (+324%)
Mutual labels:  starlette, fastapi

Morelia Server - сервер для мессенджера MoreliaTalk

tests Coverage Status

Language EN, RU

В репозитории 2 бранча

Master - стабильная ветка.

В разработке применяется

  • Python 3.10 - язык программирования

  • Starlette - основной фреймворк

  • SQLObject - ORM для работы с базой данный

  • Pydantic - валидация данных

  • Starlette - легковесный ASGI фреймворк/тулкит

  • websockets - реализация протокола Websockets в Python (RFC 6455 & 7692)

Описание репозитория

  • /mod
    • /config
      • config.py - модуль отвечает за работу с конфигурационным файлом config.ini
      • validator.py - модуль для валидации конфигурационного файла
      • instance.py - модуль содержит в себе инстанс handler-а для работы с конфигом
    • /db
      • dbhandler.py - модуль предназначен для выполнения запросов к БД
      • models.py - модуль отвечает за описание таблиц БД для работы через ОРМ.
      • instance.py - модуль содержит в себе инстанс handler-а для работы с базой данных
    • /protocol
      • /matrix
        • api.py - модуль отвечает за описание API, а так же валидацию данных.
        • worker.py - реализация протокола
      • /mtp
        • api.py - модуль отвечает за описание API, а так же валидацию данных.
        • worker.py - модуль отвечает за реализацию методов описанных в Morelia Protocol.
      • error.py - модуль отвечает за проверку и генерацию ответов с кодами ошибок.
      • controller.py - модуль обрабатывает запрос в соответствии с типом протокола
      • lib.py - модуль отвечает за хеширование пароля, сравнения пароля с его хэш-суммой, создание хеша для auth_id.
      • log_handler.py - модуль настройки логирования.
      • config.py - модуль читает настройки из config.ini
  • server.py - основной код сервера
  • manage.py - cli-инструмент для работы с сервером(запуск, тестовый клиент, работа с бд, и т.п.)
  • /tests
    • fixtures/ - json-файлы с заранее подготовленными данными, для проведения тестов.
    • config.ini - конфиг сервера для проведения тестов
    • test_*.py - тесты
  • example_config.ini - файл содержащий пример настроек сервера, перед запуском сервера просто переименуйте или скопируйте в config.ini.

Установка

Установить Python версией 3.10 или выше.

Загрузить и установить последнюю версию git.

Если нужен GUI, установить GitHub Desktop.

Настроить Git или GitHub Desktop введя свои username и email от аккаунта созданного на github.

Форк репозитория Morelia Server

Если ты не включен в команду на GitHub'е проекта, то необходимо сначала форкнуть к себе репозиторий Morelia Server перейдя по ссылке.

Клонирование репозитория на локальный компьютер

Клонировать репозиторий к себе на локальный компьютер используя командную строку и git

git clone https://github.com/{username}/morelia_server.git
cd morelia_server

Синхронизируем свой форк с оригинальным репозиторием upstream Morelia Server

git remote add upstream https://github.com/MoreliaTalk/morelia_server.git

Проверяем появились ли репозиторий upstream в списке удалённых репозиториев

git remote -v
> origin    https://github.com/{username}/morelia_server.git (fetch)
> origin    https://github.com/{username}/morelia_server.git (push)
> upstream  https://github.com/MoreliaTalk/morelia_server.git (fetch)
> upstream  https://github.com/MoreliaTalk/morelia_server.git (push)

При использовании GitHub выбрать в меню File пункт Clone repository... далее следовать инструкциям

Настройка виртуального окружения Pipenv

Для работы с проектом необходимо установить библиотеки которые он использует и настроить т.н. виртуальное рабочее окружение или virtualenv, для этого используется утилита Pipenv

Если не установлен pipenv, выполнить

python -m pip install pipenv

Создать виртуальное окружение в директории с проектом

pipenv shell

Установить все требуемые библиотеки из Pipfile

pipenv install --ignore-pipfile

Перед запуском сервера - используем менеджер настроек

Перед запуском сервера необходимо выполнить некоторые настройки (создать БД, таблицы и добавить первого пользователя - администратора)

Откройте файл example_config.ini, найдите параметр URI, замените его на путь к базе данных, пример: URI = 'sqlite:db_sqlite.db'

Создание config.ini, файла БД и учётной записи администратора сервера:

pipenv run python ./manage.py run init

Если необходимо удалить все таблицы в созданной базе данных (ВНИМАНИЕ удаляются только таблицы, БД не удаляется):

pipenv run python ./manage.py delete db

Дополнительно можно создать тестовый flow:

pipenv run python ./manage.py create flow

Информация о всех возможностях менеджера настроек:

pipenv run python ./manage.py --help

Запуск сервера в режиме отладки

Для запуска сервера используйте команду:

pipenv run python ./manage.py run devserver

Запуск сервера в нормально режиме работы

Для запуска сервера используйте команду:

pipenv run python ./manage.py run server

Параметры которые можно передать серверу (и в режиме отладки и в нормальном режиме):

--host <str> - адрес сервера, по умолчанию 127.0.0.1.

--port <int> - порт серврера, по умолчанию 8080.

--log-level <str> - уровень логирования: critical, error, warning, info, debugб trace, по умолчанию debug.

--use-colors - включить использования цветного вывода сообщений.

--reload - "горячая" перезагрузка.

Проверка работоспособности сервера с помощью встроенного клиента

Для проверки работы сервера запустите встроенный в manage.py мини-клиент:

pipenv run python manage.py client send

Примечание: перед запуском клиента нужно запустить сервер

Создание пулл-реквеста для внесения изменений в master-ветку Morelia Server

Получение последних изменений из master-ветки Morelia Server

git pull upstream master

Отправка изменений в master-ветку своего форка

git push

Для создания пулл-реквеста, необходимо перейти на GitHub, выбрать свой форк и в правом меню нажать на New pull request, после чего выбрать ветвь из которого будет производиться перенос изменений в master-ветку Morelia Server и нажать Create pull request.

Требования к стилю кода

Перед началом работы рекомендуется прочитать PEP 8 - руководство по написанию кода на Python. Обязательно использовать линтер (flake8, pylint или подобный).

Логирование

Используется библиотека loguru

Уровни логирования которыми можно пользоваться в коде:

Level name | Logger method

DEBUG      | logger.debug()
INFO       | logger.info()
SUCCESS    | logger.success()
WARNING    | logger.warning()
ERROR      | logger.error()
           | logger.exception()
CRITICAL   | logger.critical()

Написание и запуск тестов

Для написания тестов используется встроенный модуль Unittest.

Для запуска тестов выполните (вместо звёздочки подставьте наименование теста)

pipenv run python -v ./tests/test_*.py

Контакты

Telegram - группа для обсуждения вопросов разработки.

Slack - дополнительный канал для обсуждения вопросов разработки.

Лицензия

Copyright (c) 2020 - настоящее время MoreliaTalk team (NekrodNIK, Stepan Skriabin, rus-ai и другие. Смотрите полный список в файле AUTHORS.md)

MoreliaTalkServer распространяется под лицензией GNU Lesser General Public License версии 3 или более поздней (LGPL-3.0-or-later). Подробности смотрите в файле COPYING.LESSER.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].