# KGRV
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/psf/black)
Python пакет для экспериментов и обучения созданию Python пакетов.
## 🎯 Описание
KGRV - это демонстрационный Python пакет, который показывает лучшие практики:
- 📦 Организации структуры Python пакета
- 📚 Документирования кода и API
- 🧪 Написания тестов
- 🚀 Публикации на PyPI
- ⚙️ Настройки инструментов разработки
## ✨ Возможности
- **Класс About** - для отображения информации о разработчике
- **Управление навыками и проектами** - добавление и просмотр
- **CLI интерфейс** - командная строка для взаимодействия
- **Демонстрационные скрипты** - примеры использования
- **Полное покрытие тестами** - unit-тесты для всех компонентов
## 🏗️ Структура проекта
```
kgrv/
├── kgrv/ # 📦 Основной пакет (для PyPI)
│ ├── __init__.py # Инициализация и экспорты
│ ├── about.py # Модуль About
│ └── cli_click.py # CLI интерфейс (click-based)
├── scripts/ # 🎮 Демонстрационные скрипты
│ ├── demo.py # Интерактивная демонстрация
│ ├── cleanup.sh # Скрипт очистки (Bash)
│ └── cleanup.ps1 # Скрипт очистки (PowerShell)
├── docs/ # 📚 Документация
│ ├── publishing.md # Руководство по публикации
│ └── publish/ # Инструкции по публикации
│ ├── cleanup-instructions.md
│ └── build-instructions.md
├── tests/ # 🧪 Тесты
│ └── test_about.py # Тесты для модуля about
├── pyproject.toml # 🔧 Современная конфигурация
├── requirements.txt # 🛠️ Зависимости для разработки
├── MANIFEST.in # 📋 Файлы для дистрибутива
├── LICENSE # 📄 Лицензия MIT
└── CHANGELOG.md # 📝 История изменений
```
## 🚀 Быстрый старт
### Установка
```bash
# Клонирование репозитория
git clone https://github.com/kogriv/kgrv.git
cd kgrv
# Создание виртуального окружения
python -m venv venv
# Активация (Windows)
venv\Scripts\activate
# Активация (Linux/Mac)
source venv/bin/activate
# Установка в режиме разработки
pip install -e .
```
### Использование
#### Python API
```python
from kgrv import About
# Создание объекта
about = About("Ваше имя")
# Вывод информации
about.print_info()
# Добавление навыков
about.add_skill("Python")
about.add_skill("Machine Learning")
# Получение данных
skills = about.get_skills()
info = about.get_info() # Все данные в JSON формате
```
#### CLI интерфейс
```bash
# Показать помощь
kgrv --help
# Показать информацию о разработчике
kgrv info
# Показать информацию с кастомным именем
kgrv info --name "John"
# Показать информацию в JSON формате
kgrv info --format json
# Показать навыки разработчика
kgrv skills
# Показать проекты разработчика
kgrv projects
# Проверить валидность GitHub профиля
kgrv validate
# Добавить навык
kgrv add-skill
# Добавить проект
kgrv add-project
# Запустить интерактивную демонстрацию
kgrv demo
```
#### Демонстрация
```bash
# Запуск интерактивной демонстрации
python scripts/demo.py
# Или через CLI
kgrv demo
```
### 📋 Подробное описание CLI команд
#### Основные команды:
**`kgrv info`** - Показать полную информацию о разработчике
```bash
# Базовый вывод
kgrv info
# С кастомным именем
kgrv info --name "John"
# В JSON формате
kgrv info --format json
# С добавлением навыков и проектов
kgrv info --add-skill "Django" --add-project "Web App"
```
**`kgrv skills`** - Показать навыки разработчика
```bash
# Текстовый формат
kgrv skills
# JSON формат
kgrv skills --format json
```
**`kgrv projects`** - Показать проекты разработчика
```bash
# Текстовый формат
kgrv projects
# JSON формат
kgrv projects --format json
```
**`kgrv validate`** - Проверить валидность GitHub профиля
```bash
# Проверка профиля
kgrv validate
# С кастомным именем
kgrv validate --name "username"
```
#### Команды управления:
**`kgrv add-skill`** - Добавить навык
```bash
# Интерактивный ввод
kgrv add-skill
# С указанием навыка
kgrv add-skill --skill "React"
```
**`kgrv add-project`** - Добавить проект
```bash
# Интерактивный ввод
kgrv add-project
# С указанием проекта
kgrv add-project --project "E-commerce Platform"
```
**`kgrv demo`** - Интерактивная демонстрация
```bash
# Полная демонстрация функционала
kgrv demo
```
## 🧪 Тестирование
```bash
# Установка зависимостей для разработки
pip install -r requirements.txt
# Запуск тестов
python -m pytest tests/ -v
# Запуск конкретного теста
python tests/test_about.py
# Запуск с покрытием (если установлен pytest-cov)
pytest --cov=kgrv --cov-report=html
```
## 📦 Публикация на PyPI
```bash
# Очистка проекта
./scripts/cleanup.ps1 # Windows
./scripts/cleanup.sh # Linux/Mac
# Сборка пакета
python -m build
# Проверка пакета
twine check dist/*
# Загрузка на Test PyPI
twine upload --repository testpypi dist/*
# Тестирование установки из Test PyPI
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ kgrv
# Загрузка на PyPI
twine upload dist/*
```
Подробное руководство по публикации: [docs/publishing.md](docs/publishing.md)
## 🛠️ Разработка
### Настройка окружения
```bash
# Установка зависимостей для разработки
pip install -r requirements.txt
# Установка в режиме разработки
pip install -e .
```
### Инструменты качества кода
```bash
# Форматирование кода
black kgrv/ scripts/ tests/
# Проверка типов
mypy kgrv/
# Линтинг
flake8 kgrv/ scripts/ tests/
```
## 📚 Документация
Подробная документация доступна в папке [docs/](docs/):
- [Руководство по публикации](docs/publishing.md) - полное руководство по публикации на PyPI
- [Инструкции по очистке](docs/publish/cleanup-instructions.md) - очистка проекта перед публикацией
- [Инструкции по сборке](docs/publish/build-instructions.md) - сборка пакета
## 🤝 Вклад в проект
1. Форкните репозиторий
2. Создайте ветку для новой функции (`git checkout -b feature/amazing-feature`)
3. Зафиксируйте изменения (`git commit -m 'Add amazing feature'`)
4. Отправьте в ветку (`git push origin feature/amazing-feature`)
5. Откройте Pull Request
## 📄 Лицензия
Этот проект лицензирован под MIT License - см. файл [LICENSE](LICENSE) для деталей.
## 👨💻 Автор
**kogriv** - [GitHub](https://github.com/kogriv)
## 🙏 Благодарности
- Python сообществу за отличные инструменты
- Всем, кто делает open source лучше
Raw data
{
"_id": null,
"home_page": "https://github.com/kogriv/kgrv",
"name": "kgrv",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "kogriv <kogrv@github.com>",
"keywords": "python, package, tutorial, learning, example",
"author": "kogriv",
"author_email": "kogriv <kogriv@github.com>",
"download_url": "https://files.pythonhosted.org/packages/b3/24/321e818e48f2228ce64f939dbf9388f8ac771629411b17e21cbac7edd699/kgrv-0.1.2.tar.gz",
"platform": null,
"description": "# KGRV\r\n\r\n[](https://www.python.org/downloads/)\r\n[](https://opensource.org/licenses/MIT)\r\n[](https://github.com/psf/black)\r\n\r\nPython \u043f\u0430\u043a\u0435\u0442 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e Python \u043f\u0430\u043a\u0435\u0442\u043e\u0432.\r\n\r\n## \ud83c\udfaf \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\r\n\r\nKGRV - \u044d\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 Python \u043f\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438:\r\n- \ud83d\udce6 \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Python \u043f\u0430\u043a\u0435\u0442\u0430\r\n- \ud83d\udcda \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438 API\r\n- \ud83e\uddea \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432\r\n- \ud83d\ude80 \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 PyPI\r\n- \u2699\ufe0f \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\n\r\n## \u2728 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\r\n\r\n- **\u041a\u043b\u0430\u0441\u0441 About** - \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435\r\n- **\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0432\u044b\u043a\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438** - \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\r\n- **CLI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441** - \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\r\n- **\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b** - \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n- **\u041f\u043e\u043b\u043d\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u0442\u0435\u0441\u0442\u0430\u043c\u0438** - unit-\u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432\r\n\r\n## \ud83c\udfd7\ufe0f \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\r\n\r\n```\r\nkgrv/\r\n\u251c\u2500\u2500 kgrv/ # \ud83d\udce6 \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043a\u0435\u0442 (\u0434\u043b\u044f PyPI)\r\n\u2502 \u251c\u2500\u2500 __init__.py # \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u044b\r\n\u2502 \u251c\u2500\u2500 about.py # \u041c\u043e\u0434\u0443\u043b\u044c About\r\n\u2502 \u2514\u2500\u2500 cli_click.py # CLI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (click-based)\r\n\u251c\u2500\u2500 scripts/ # \ud83c\udfae \u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b\r\n\u2502 \u251c\u2500\u2500 demo.py # \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f\r\n\u2502 \u251c\u2500\u2500 cleanup.sh # \u0421\u043a\u0440\u0438\u043f\u0442 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 (Bash)\r\n\u2502 \u2514\u2500\u2500 cleanup.ps1 # \u0421\u043a\u0440\u0438\u043f\u0442 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 (PowerShell)\r\n\u251c\u2500\u2500 docs/ # \ud83d\udcda \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\r\n\u2502 \u251c\u2500\u2500 publishing.md # \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438\r\n\u2502 \u2514\u2500\u2500 publish/ # \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438\r\n\u2502 \u251c\u2500\u2500 cleanup-instructions.md\r\n\u2502 \u2514\u2500\u2500 build-instructions.md\r\n\u251c\u2500\u2500 tests/ # \ud83e\uddea \u0422\u0435\u0441\u0442\u044b\r\n\u2502 \u2514\u2500\u2500 test_about.py # \u0422\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f about\r\n\u251c\u2500\u2500 pyproject.toml # \ud83d\udd27 \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\r\n\u251c\u2500\u2500 requirements.txt # \ud83d\udee0\ufe0f \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\n\u251c\u2500\u2500 MANIFEST.in # \ud83d\udccb \u0424\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\r\n\u251c\u2500\u2500 LICENSE # \ud83d\udcc4 \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f MIT\r\n\u2514\u2500\u2500 CHANGELOG.md # \ud83d\udcdd \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439\r\n```\r\n\r\n## \ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n```bash\r\n# \u041a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\r\ngit clone https://github.com/kogriv/kgrv.git\r\ncd kgrv\r\n\r\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\r\npython -m venv venv\r\n\r\n# \u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f (Windows)\r\nvenv\\Scripts\\activate\r\n\r\n# \u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f (Linux/Mac)\r\nsource venv/bin/activate\r\n\r\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\npip install -e .\r\n```\r\n\r\n### \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\r\n\r\n#### Python API\r\n\r\n```python\r\nfrom kgrv import About\r\n\r\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\r\nabout = About(\"\u0412\u0430\u0448\u0435 \u0438\u043c\u044f\")\r\n\r\n# \u0412\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\r\nabout.print_info()\r\n\r\n# \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0432\u044b\u043a\u043e\u0432\r\nabout.add_skill(\"Python\")\r\nabout.add_skill(\"Machine Learning\")\r\n\r\n# \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\r\nskills = about.get_skills()\r\ninfo = about.get_info() # \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0435\r\n```\r\n\r\n#### CLI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\r\n\r\n```bash\r\n# \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043c\u043e\u0449\u044c\r\nkgrv --help\r\n\r\n# \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435\r\nkgrv info\r\n\r\n# \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c\r\nkgrv info --name \"John\"\r\n\r\n# \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0435\r\nkgrv info --format json\r\n\r\n# \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0432\u044b\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\r\nkgrv skills\r\n\r\n# \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\r\nkgrv projects\r\n\r\n# \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c GitHub \u043f\u0440\u043e\u0444\u0438\u043b\u044f\r\nkgrv validate\r\n\r\n# \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0432\u044b\u043a\r\nkgrv add-skill\r\n\r\n# \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\r\nkgrv add-project\r\n\r\n# \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044e\r\nkgrv demo\r\n```\r\n\r\n#### \u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f\r\n\r\n```bash\r\n# \u0417\u0430\u043f\u0443\u0441\u043a \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438\r\npython scripts/demo.py\r\n\r\n# \u0418\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 CLI\r\nkgrv demo\r\n```\r\n\r\n### \ud83d\udccb \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 CLI \u043a\u043e\u043c\u0430\u043d\u0434\r\n\r\n#### \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\r\n\r\n**`kgrv info`** - \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435\r\n```bash\r\n# \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0432\u044b\u0432\u043e\u0434\r\nkgrv info\r\n\r\n# \u0421 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c\r\nkgrv info --name \"John\"\r\n\r\n# \u0412 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0435\r\nkgrv info --format json\r\n\r\n# \u0421 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432\r\nkgrv info --add-skill \"Django\" --add-project \"Web App\"\r\n```\r\n\r\n**`kgrv skills`** - \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0432\u044b\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\r\n```bash\r\n# \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\r\nkgrv skills\r\n\r\n# JSON \u0444\u043e\u0440\u043c\u0430\u0442\r\nkgrv skills --format json\r\n```\r\n\r\n**`kgrv projects`** - \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\r\n```bash\r\n# \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\r\nkgrv projects\r\n\r\n# JSON \u0444\u043e\u0440\u043c\u0430\u0442\r\nkgrv projects --format json\r\n```\r\n\r\n**`kgrv validate`** - \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c GitHub \u043f\u0440\u043e\u0444\u0438\u043b\u044f\r\n```bash\r\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\r\nkgrv validate\r\n\r\n# \u0421 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c\r\nkgrv validate --name \"username\"\r\n```\r\n\r\n#### \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f:\r\n\r\n**`kgrv add-skill`** - \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0432\u044b\u043a\r\n```bash\r\n# \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0432\u043e\u0434\r\nkgrv add-skill\r\n\r\n# \u0421 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043d\u0430\u0432\u044b\u043a\u0430\r\nkgrv add-skill --skill \"React\"\r\n```\r\n\r\n**`kgrv add-project`** - \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\r\n```bash\r\n# \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0432\u043e\u0434\r\nkgrv add-project\r\n\r\n# \u0421 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\r\nkgrv add-project --project \"E-commerce Platform\"\r\n```\r\n\r\n**`kgrv demo`** - \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f\r\n```bash\r\n# \u041f\u043e\u043b\u043d\u0430\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430\r\nkgrv demo\r\n```\r\n\r\n## \ud83e\uddea \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\r\n\r\n```bash\r\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\npip install -r requirements.txt\r\n\r\n# \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432\r\npython -m pytest tests/ -v\r\n\r\n# \u0417\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430\r\npython tests/test_about.py\r\n\r\n# \u0417\u0430\u043f\u0443\u0441\u043a \u0441 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c (\u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d pytest-cov)\r\npytest --cov=kgrv --cov-report=html\r\n```\r\n\r\n## \ud83d\udce6 \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 PyPI\r\n\r\n```bash\r\n# \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\r\n./scripts/cleanup.ps1 # Windows\r\n./scripts/cleanup.sh # Linux/Mac\r\n\r\n# \u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430\r\npython -m build\r\n\r\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430\r\ntwine check dist/*\r\n\r\n# \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 Test PyPI\r\ntwine upload --repository testpypi dist/*\r\n\r\n# \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u0437 Test PyPI\r\npip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ kgrv\r\n\r\n# \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 PyPI\r\ntwine upload dist/*\r\n```\r\n\r\n\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438: [docs/publishing.md](docs/publishing.md)\r\n\r\n## \ud83d\udee0\ufe0f \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\r\n\r\n### \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\r\n\r\n```bash\r\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\npip install -r requirements.txt\r\n\r\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\npip install -e .\r\n```\r\n\r\n### \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430\r\n\r\n```bash\r\n# \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430\r\nblack kgrv/ scripts/ tests/\r\n\r\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u043e\u0432\r\nmypy kgrv/\r\n\r\n# \u041b\u0438\u043d\u0442\u0438\u043d\u0433\r\nflake8 kgrv/ scripts/ tests/\r\n```\r\n\r\n## \ud83d\udcda \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\r\n\r\n\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u043f\u0430\u043f\u043a\u0435 [docs/](docs/):\r\n- [\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438](docs/publishing.md) - \u043f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 PyPI\r\n- [\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u043e\u0447\u0438\u0441\u0442\u043a\u0435](docs/publish/cleanup-instructions.md) - \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0435\u0440\u0435\u0434 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439\r\n- [\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0441\u0431\u043e\u0440\u043a\u0435](docs/publish/build-instructions.md) - \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430\r\n\r\n## \ud83e\udd1d \u0412\u043a\u043b\u0430\u0434 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\r\n\r\n1. \u0424\u043e\u0440\u043a\u043d\u0438\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\r\n2. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (`git checkout -b feature/amazing-feature`)\r\n3. \u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f (`git commit -m 'Add amazing feature'`)\r\n4. \u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0432 \u0432\u0435\u0442\u043a\u0443 (`git push origin feature/amazing-feature`)\r\n5. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 Pull Request\r\n\r\n## \ud83d\udcc4 \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\r\n\r\n\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434 MIT License - \u0441\u043c. \u0444\u0430\u0439\u043b [LICENSE](LICENSE) \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439.\r\n\r\n## \ud83d\udc68\u200d\ud83d\udcbb \u0410\u0432\u0442\u043e\u0440\r\n\r\n**kogriv** - [GitHub](https://github.com/kogriv)\r\n\r\n## \ud83d\ude4f \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438\r\n\r\n- Python \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u0437\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\r\n- \u0412\u0441\u0435\u043c, \u043a\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 open source \u043b\u0443\u0447\u0448\u0435\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python \u043f\u0430\u043a\u0435\u0442 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f",
"version": "0.1.2",
"project_urls": {
"Bug Reports": "https://github.com/kogriv/kgrv/issues",
"Documentation": "https://github.com/kogriv/kgrv/tree/master/docs",
"Homepage": "https://github.com/kogriv/kgrv",
"Repository": "https://github.com/kogriv/kgrv.git"
},
"split_keywords": [
"python",
" package",
" tutorial",
" learning",
" example"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "5136cd161c2144130e0d812d8d19f2fb9c17cffa5d7b8cfae9ca85cc6d6df70c",
"md5": "82fb1521a16d77b734da73bbc3e309d0",
"sha256": "5ef28633df054488de5359e9d04e716710ca10a90256acf75e6b9e151167ab00"
},
"downloads": -1,
"filename": "kgrv-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "82fb1521a16d77b734da73bbc3e309d0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 9746,
"upload_time": "2025-08-24T10:50:21",
"upload_time_iso_8601": "2025-08-24T10:50:21.438048Z",
"url": "https://files.pythonhosted.org/packages/51/36/cd161c2144130e0d812d8d19f2fb9c17cffa5d7b8cfae9ca85cc6d6df70c/kgrv-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b324321e818e48f2228ce64f939dbf9388f8ac771629411b17e21cbac7edd699",
"md5": "08f7f4bbf944b8b5e01b89916dcdcd92",
"sha256": "f1a4ad65dbafc7e6b92d1e878447e7cba743f3bd0e0e9b3195e0127d1ff1928e"
},
"downloads": -1,
"filename": "kgrv-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "08f7f4bbf944b8b5e01b89916dcdcd92",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 23491,
"upload_time": "2025-08-24T10:50:22",
"upload_time_iso_8601": "2025-08-24T10:50:22.944412Z",
"url": "https://files.pythonhosted.org/packages/b3/24/321e818e48f2228ce64f939dbf9388f8ac771629411b17e21cbac7edd699/kgrv-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-24 10:50:22",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kogriv",
"github_project": "kgrv",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "pytest",
"specs": [
[
">=",
"6.0.0"
]
]
},
{
"name": "click",
"specs": [
[
">=",
"8.0.0"
]
]
},
{
"name": "colorama",
"specs": [
[
">=",
"0.4.0"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.25.0"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"6.0.0"
]
]
}
],
"lcname": "kgrv"
}