Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pypi 2.1.1 #594

Merged
merged 70 commits into from
May 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
614d08c
Исправлен запуск генератора async клиента на Windows
MarshalX Jul 1, 2022
83c1ddb
Фикс вызова .tracks у корутины
lk2322 Jul 5, 2022
f918583
Merge pull request #526 from lk2322/dev
MarshalX Jul 7, 2022
99991bd
Исправлена опечатка в документации к методу rotor_station_tracks клас…
forentfraps Jul 10, 2022
43749ca
Исправлены type hints у декоратора log
MarshalX Sep 10, 2022
9905467
Исправлены type hints для SearchResult в классе Search
MarshalX Oct 16, 2022
2dc4e64
Добавил функции для получения фалов в байтах (#541)
LulzLoL231 Oct 16, 2022
8abb5af
close #542 генератор camel case псевдонимов методам классов
MarshalX Oct 16, 2022
fbf1969
добавил больше исключений для методов которым нужно генерировать псев…
MarshalX Oct 16, 2022
e4fa377
Merge pull request #543 from MarshalX/camel-case-generator
MarshalX Oct 16, 2022
9a08c6a
добавлены недостающие camel case псевдонимы
MarshalX Oct 16, 2022
49c2129
обновлен CONTRIBUTING.md
MarshalX Oct 16, 2022
d0d58c3
добавлена возможность задать глобальный timeout для всех запросов clo…
MarshalX Oct 31, 2022
348cb14
Merge pull request #545 from MarshalX/feature/362
MarshalX Oct 31, 2022
78bcb05
исправлены опечатки в документации close #546
MarshalX Oct 31, 2022
486edf4
Merge pull request #548 from MarshalX/feature/546
MarshalX Oct 31, 2022
6db8f85
добавил ссылки на задачи к TODO не связанных с документацией (close #…
MarshalX Oct 31, 2022
40c9b4e
Merge pull request #559 from MarshalX/feature/549
MarshalX Oct 31, 2022
cf2f689
исправлено отображение название класса в report_unknown_fields_callback
MarshalX Nov 1, 2022
5fc439c
добавлено поле preview_description классу GeneratedPlaylist
MarshalX Nov 1, 2022
9783991
Исправлены опечатки в документации (#562)
OwnageIsMagic Nov 10, 2022
5d0b2c1
поле notice_displayed класса Client теперь приватное
MarshalX Nov 10, 2022
9195290
исправлено значение языка по умолчанию у методов класса Client (close…
MarshalX Nov 10, 2022
bd26493
добавлен Makefile с сокращениями удобными при разработке библиотеки
MarshalX Nov 10, 2022
44c8806
добавлено отображение модуля при нахождении неизвестного поля
MarshalX Nov 10, 2022
6b011d9
обновлен CHANGES.rst и SECURITY.md
MarshalX Nov 10, 2022
0294ea0
обновлены проектные ссылки; добавлена информацию про make all для раз…
MarshalX Nov 10, 2022
26c0fea
проверена работа на Python 3.11
MarshalX Nov 10, 2022
630e245
добавлена поддержка MD файлов для документации; изменено оглавление д…
MarshalX Nov 11, 2022
f22903d
обновлен конфиг readthedocs; исправлена главная страница документации.
MarshalX Nov 11, 2022
10ec9ef
Добавлены поля pretrial_active и userhash классу Status.
andrew097 Nov 11, 2022
ed0c36f
изменен порядок тестовых данных для класса Status
MarshalX Nov 11, 2022
e1d04e9
chmod +x generate_async_version.py и generate_camel_case_aliases.py
glebliutsko Nov 14, 2022
603f00d
Merge pull request #571 from glebliutsko/exec
MarshalX Nov 14, 2022
bd981d3
Исправление ошибок в документации
glebliutsko Nov 13, 2022
d6ab2e2
Merge pull request #570 from glebliutsko/fix-docs
MarshalX Nov 15, 2022
8ab1cfd
исправлено описание пакета
MarshalX Nov 15, 2022
cdaa29a
Добавлена возможность подписи запросов и коневертации форматов track_id
glebliutsko Nov 13, 2022
96fed36
Добавлен эндпоинт tracks/{track_id}/lyrics
glebliutsko Nov 14, 2022
742d60d
Обновление документации
glebliutsko Nov 14, 2022
4c85de9
Варнинг об устаревании
glebliutsko Nov 15, 2022
fe7a1e1
Добавлены новые сокращения
glebliutsko Nov 15, 2022
b3cfa7b
Исправлен пример lyrics_playing_track.py
glebliutsko Nov 15, 2022
b5f0279
Добавлены новые тесты
glebliutsko Nov 17, 2022
bdda47a
добавлены JetBrains как спонсоры в README
MarshalX Nov 22, 2022
dc51cdd
исправлена ссылка на jb
MarshalX Nov 22, 2022
1062b0e
Добавлены новые поля к моделям. Исправлен пример (#572)
andrew097 Nov 22, 2022
b13c197
Merge pull request #568 from glebliutsko/lyrics
MarshalX Nov 22, 2022
ef016b6
передача remove аргумента по имени (close #550)
MarshalX Nov 22, 2022
c33472d
исправлена заметка в документации к UserSettings
MarshalX Nov 22, 2022
693a7fe
CHANGES теперь в формате MD вместо RST
MarshalX Nov 22, 2022
95790aa
обновлён CONTRIBUTING.md
MarshalX Nov 22, 2022
119a337
Поле cover_white класса MixLink теперь optional.
MarshalX Jan 11, 2023
02a9c0f
Исправлено создание очереди треков.
MarshalX Jan 31, 2023
3efac60
В документацию добавлена запись, о необходимости авторизации
glebliutsko Mar 17, 2023
a0de455
Merge pull request #587 from glebliutsko/lyrics-docks
MarshalX Mar 24, 2023
a152e4d
Issues/#509 Новые поля (#576)
andrew097 Mar 27, 2023
f445101
Добавлена страница в документацию с получением токена; обновлен год в…
MarshalX Apr 22, 2023
5995269
Merge branch 'main' into dev
MarshalX Apr 22, 2023
85e128e
#547 Удалена, а местами исправлена передача *args в _request.
MarshalX Apr 22, 2023
b467a37
#585 Исправлена ссылка на документацию
MarshalX Apr 22, 2023
38a19e8
#563 Добавлено предупреждение про отсутствие tracks у плейлиста.
MarshalX Apr 22, 2023
d55a953
Добавлен раздел "Примеры" в документацию
MarshalX Apr 22, 2023
8a9c463
README файл доступен как подмен в документации. Добавлена страница с …
MarshalX Apr 22, 2023
473cba3
Добавлен список изменений для 2.1.0
MarshalX Apr 23, 2023
84d0aab
Merge pull request #575 from MarshalX/dev
MarshalX Apr 23, 2023
1c89eff
Заголовок из новой версии
glebliutsko May 4, 2023
0331337
Merge pull request #592 from glebliutsko/new-header
MarshalX May 4, 2023
4fa5d3c
bump version
MarshalX May 4, 2023
110a6e0
Merge pull request #593 from MarshalX/dev
MarshalX May 4, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pytest_full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
python-version: [3.7, 3.8, 3.9, "3.10"]
python-version: [3.7, 3.8, 3.9, "3.10", "3.11"]

steps:
- name: Checkout repository.
Expand Down
9 changes: 8 additions & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,16 @@
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

version: 2

build:
os: ubuntu-20.04
tools:
python: "3.11"

sphinx:
configuration: docs/source/conf.py

python:
version: "3.7"
install:
- requirements: docs/requirements.txt
- requirements: requirements-dev.txt
390 changes: 390 additions & 0 deletions CHANGES.md

Large diffs are not rendered by default.

400 changes: 0 additions & 400 deletions CHANGES.rst

This file was deleted.

108 changes: 66 additions & 42 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,73 +1,97 @@
# Как внести свой вклад

Внесение своего вклада в этот проект ничем не отличается внесения в других
open source проекты на GitHub'e, но есть несколько ключевых моментов, о которых
стоит знать и помнить.
Внесение своего вклада в этот проект ничем не отличается внесения в других open source проекты на GitHub'e, но есть несколько ключевых моментов, о которых стоит знать и помнить.

Все необходимые пакеты для разработки есть в `requirements-dev.txt`.
Установить их можно с помощью следующей команды:
```
Все необходимые пакеты для разработки есть в `requirements-dev.txt`. Установить их можно с помощью следующей команды:
```shell
pip install -r requirements-dev.txt
```

Основные типы вклада:
- добавление новых полей к существующим классам;
- добавление новых классов;
- добавление новых полей к существующим моделям;
- добавление новых моделей;
- установка опциональности какого-то поля;
- добавление нового метода в `Client` (новый запрос на API);
- добавление нового метода-сокращения в модель;
- добавление примера использование в папку [examples](examples).

Ваш вклад может быть более грандиозным. Так, например, можно написать
интеграционные тесты для класса `Client` и всех методов-сокращений в моделях.
Написать тесты для класса запросов. Написать генератор кода для быстрого добавления
новых полей.
Ваш вклад может быть более грандиозным. Так, например, можно написать интеграционные тесты для класса `Client` и всех методов-сокращений в моделях. Написать тесты для класса запросов. Написать генератор кода для быстрого добавления новых полей.

## Pull Requests

PR'ы должны быть сделаны в `dev` ветку. Определённого шаблона оформления
нет. Если это закрывает какое-то issue, то стоит сослаться на него с ключевым
словом "close". Например, "close #123". Обращайте внимание прошёл ли Ваш PR все
проверки GitHub Actions (тесты, проверка стиля кода).
PR'ы должны быть сделаны в `dev` ветку. Определённого шаблона оформления нет. Если это закрывает какое-то issue, то стоит сослаться на него с ключевым словом "close". Например, "close #123". Обращайте внимание прошёл ли Ваш PR все проверки GitHub Actions (тесты, проверка стиля кода).

## Тесты

Для тестирования используется `pytest`. На данный момент отсутствуют
интеграционные тесты. Поэтому всё что сейчас
требутеся — это юнит тесты классов-обёрток и их дополнительных методов
(если имеются), которые не являются сокращениями для методов клиента.
Для тестирования используется `pytest`. На данный момент отсутствуют интеграционные тесты. Поэтому всё что сейчас требуется — это модульные тесты классов-обёрток и их дополнительных методов (если имеются), которые не являются сокращениями для методов клиента.

Тесты модели должны покрывать 5 основных вещей: конструктор, десериализацию
только обязательных полей, десериализацию всех полей, сравнение
объектов модели, десериализацию пустого словаря. По необходимости десериализацию
списка объектов.
Тесты модели должны покрывать 5 основных вещей: конструктор, десериализацию только обязательных полей, десериализацию всех полей, сравнение объектов модели, десериализацию пустого словаря. По необходимости десериализацию списка объектов.

Примеры доступны в папке [tests](tests).

## Документация

Для документации используется `Sphinx`. Документация ведется в [google style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html).
К каждому классу и методу должна быть написана документация на русском языке.
Типы каждого значения. По возможности описано предназначение поля. Если
невозможно логически понять из названия — ставим `TODO`. Обязательно отмечаем
какие поля являются опциональными. Пишем заметки по известным значениям полей,
чтобы из контекста догадываться о предназначении.
Для документации используется `Sphinx`. Документация ведется в [google style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html). К каждому классу и методу должна быть написана документация на русском языке. Указаны типы каждого значения. По возможности описано предназначение поля. Если невозможно логически понять из названия или данных — ставим `TODO`. Обязательно отмечаем какие поля являются опциональными. Пишем заметки по известным значениям полей, чтобы из контекста догадываться о предназначении.

Если добавлен новый файл, то не забудьте сгенерировать `.rst` файл
выполнив команду `make gen` в папке `docs` и добавить его в GIT.
Если добавлен новый класс или функция, то не забудьте сгенерировать `.rst` файл выполнив команду `make gen` в папке `docs` и добавить его в GIT.

Чтобы собрать документацию выполните `make html` в папке `docs`.
Чтобы собрать документацию выполните `make html` в папке `docs`. Для отчистки используйте `make clean`.

## Форматирование кода (стиль написания)

В проекте используется `black`. Не забывайте перед публикацией
отформатировать код и проверить его на работоспособность.
В проекте используется `black`. Не забывайте перед публикацией отформатировать код и проверить его на работоспособность. Используются одинарные кавычки. Запускайте `black` с конфигом из основной директории:

```shell
black --config=black.toml yandex_music
```

или

```shell
make black
```

## Создание новых моделей

Исходите из логики при помещении модели в определённый пакет.
Добавьте свою модель для короткого импорта в одну из секций `__init__.py` файла
и пропишите название в `__all__`. Обязательно следите за тем, какие поля
присутствуют всегда, а какие нет. По возможности минимизируйте количество
опциональных полей. Не забывайте перечислить поля, по которым можно отличить
один объект от другого в `_id_attrs` (метод `__post_init__`). Экземпляр класса
`Client` передаётся в каждую модель для возможности написания методов-сокращений.
Исходите из логики при помещении модели в определённый пакет. Добавьте свою модель для короткого импорта в одну из секций `__init__.py` файла и пропишите название в `__all__`.

Обязательно следите за тем, какие поля присутствуют всегда, а какие нет. По возможности минимизируйте количество опциональных полей.

Не забывайте перечислить поля, по которым можно отличить один объект от другого в `_id_attrs` (метод `__post_init__`).

Экземпляр класса `Client` передаётся в каждую модель для возможности написания методов-сокращений. При наличии дополнительных методов у модели не забудьте создать асинхронную версию метода добавив в название суффикс `_async`.

Кроме этого, если у вашей модели есть метод, например, `download_async()`, то такому методу следует создать camel case псевдоним (`downloadAsync()`). Для создания псевдонимов существует генератор. Всё что вам надо сделать это поместить в конце файла с моделью маркер:

```
# camelCase псевдонимы
```
([пример](https://github.com/MarshalX/yandex-music-api/blob/a30082f4929e56381c870cb03103777ae29bcc6b/yandex_music/tracks_list.py#L80))

После чего запустить генератор:
```shell
python generate_camel_case_aliases.py
```

### Создание новых методов клиента

Если ваша задача включает добавление нового API метода, то не забудьте сгенерировать асинхронную версию клиента. Сделать это можно следующей командой:

```shell
python generate_async_version.py
```

Ни в коем случае не редактируйте файл `client_async.py` и `request_async.py` руками!

## Makefile

_Используйте WSL если вы на Windows._

Для упрощения жизни в корне проекта существует [Makefile](Makefile).

Команда
```shell
make all
```

Выполнит за вас black для основного модуля и тестов, сгенерирует асинхронную версию клиента, сгенерирует camel case псевдонимы.
2 changes: 1 addition & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1 +1 @@
include LICENSE CHANGES.rst
include LICENSE CHANGES.md
31 changes: 31 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# makefile for Yandex Music project

black:
black --config=black.toml yandex_music

black_test:
black --config=black.toml tests

gen_async:
python generate_async_version.py

gen_alias:
python generate_camel_case_aliases.py

gen:
make gen_async && make gen_alias

b:
make black

bt:
make black_test

g:
make gen

all:
make g && make b && make bt

a:
make all
Loading
Loading