https://github.com/eijawa/simple-unified-serializer
Простой, базовый, самописный унифицированный сериализатор
https://github.com/eijawa/simple-unified-serializer
python3 rtti serializer
Last synced: 9 months ago
JSON representation
Простой, базовый, самописный унифицированный сериализатор
- Host: GitHub
- URL: https://github.com/eijawa/simple-unified-serializer
- Owner: eijawa
- Created: 2023-07-27T11:10:40.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-07-27T13:33:36.000Z (almost 3 years ago)
- Last Synced: 2025-09-05T11:40:25.783Z (9 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)