https://github.com/eijawa/simple-unified-serializer
Простой, базовый, самописный унифицированный сериализатор
https://github.com/eijawa/simple-unified-serializer
python3 rtti serializer
Last synced: about 2 months ago
JSON representation
Простой, базовый, самописный унифицированный сериализатор
- Host: GitHub
- URL: https://github.com/eijawa/simple-unified-serializer
- Owner: eijawa
- Created: 2023-07-27T11:10:40.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-07-27T13:33:36.000Z (almost 2 years ago)
- Last Synced: 2025-01-30T05:13:56.185Z (4 months ago)
- Topics: python3, rtti, serializer
- Language: Python
- Homepage:
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://www.python.org/downloads/release/python-360/)
[](https://github.com/psf/black)
# Унифицированный механизм сериализации и десериализации
> **Пакет typing_extensions**
Для удобства написания кода используются расширенные типы данные, такие как Protocol и Self.## Запуск
Если вы знаете, как запускать код Python в виртуальном окружении и устанавливать зависимости - можете смело пропускать этот раздел.
Для всех остальных.Создание виртуального окружения:
```bash
python3 -m venv venv
```Запуск виртуального окружения:
*UNIX-система*
```bash
source venv/bin/activate
```*Windows*
> Не забудьте активировать выполнение скриптов!
```bash
venv/Scripts/Activate
```Установка зависимостей:
```bash
pip install -r requirements.txt
```## Тесты
Для тестирования используется фреймворк `PyTest`. Во всех тестах использовался базовый пример (`src/example/default.py`).Запуск тестов:
```bash
pytest
```### Рассматриваемые сценарии
#### Сценарий 1 - Добавление поля
В этом тесте симулируется ситуация, когда объект изначально имел МЕНЬШЕ полей (устаревшая версия кода), чем новый вид объекта (новая версия кода).Ожидаемый результат:
Все поля, которые присутствовали в прошлом - будут заполнены корректно, а в новых поля будут установлены значения по-умолчанию.
#### Сценарий 2 - Удаление поля
В этом тесте симулируется ситуация, когда объект изначально имел МЕНЬШЕ полей (устаревшая версия кода), чем новый вид объекта (новая версия кода).Ожидаемый результат:
Все поля, которые присутствовали в прошлом - будут заполнены корректно, а в новых полях будут установлены значения по-умолчанию.
#### (Не рассмотрен!) Сценарий 3 - Переименование поля
> [См. статью на Life]()## Подготовленные примеры
> Все примеры находятся по пути `src/example`.- [x] Базовый пример
- [x] Усложнённый пример (С вложенным объектом)
- [x] 'Реальный' пример## [Документация по модификации](./docs/Modification.md)