rooms 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rooms-1.0.0/CHANGELOG.md +22 -0
- rooms-1.0.0/LICENSE +21 -0
- rooms-1.0.0/MANIFEST.in +4 -0
- rooms-1.0.0/PKG-INFO +244 -0
- rooms-1.0.0/README.md +218 -0
- rooms-1.0.0/pyproject.toml +39 -0
- rooms-1.0.0/setup.cfg +4 -0
- rooms-1.0.0/src/rooms/__init__.py +3 -0
- rooms-1.0.0/src/rooms/__main__.py +4 -0
- rooms-1.0.0/src/rooms/cli.py +254 -0
- rooms-1.0.0/src/rooms/core.py +397 -0
- rooms-1.0.0/src/rooms/tests/__init__.py +1 -0
- rooms-1.0.0/src/rooms/tests/__main__.py +21 -0
- rooms-1.0.0/src/rooms/tests/conftest.py +26 -0
- rooms-1.0.0/src/rooms/tests/test_cli.py +39 -0
- rooms-1.0.0/src/rooms/tests/test_core.py +185 -0
- rooms-1.0.0/src/rooms.egg-info/PKG-INFO +244 -0
- rooms-1.0.0/src/rooms.egg-info/SOURCES.txt +20 -0
- rooms-1.0.0/src/rooms.egg-info/dependency_links.txt +1 -0
- rooms-1.0.0/src/rooms.egg-info/entry_points.txt +2 -0
- rooms-1.0.0/src/rooms.egg-info/requires.txt +3 -0
- rooms-1.0.0/src/rooms.egg-info/top_level.txt +1 -0
rooms-1.0.0/CHANGELOG.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [1.0.0] - 2026-09-05
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Создание, удаление, переименование, клонирование виртуальных окружений (venv)
|
|
7
|
+
- Интерактивное меню с поддержкой русского и английского языков
|
|
8
|
+
- Автодетект окружений: Termux, WSL, Docker, Alpine, NixOS, ChromeOS/Crostini, Gitpod, Codespaces, macOS, Linux
|
|
9
|
+
- Адаптация venv для "хрупких" окружений (Termux, Alpine, Docker, NixOS) через --system-site-packages
|
|
10
|
+
- Спиннер при создании комнаты
|
|
11
|
+
- Прогресс-бар при клонировании с отображением объема (MiB/GiB)
|
|
12
|
+
- Прогресс-бар при удалении с отображением процента
|
|
13
|
+
- Два режима клонирования: полное и легкое (через requirements.txt)
|
|
14
|
+
- Автоматическое сохранение/генерация requirements.txt
|
|
15
|
+
- Экспорт комнаты в tar.gz
|
|
16
|
+
- Импорт комнаты из tar.gz
|
|
17
|
+
- Проверка свободного места на диске перед клонированием
|
|
18
|
+
- Выбор Python-интерпретатора при создании комнаты
|
|
19
|
+
- Программный API (rooms.core) с type hints
|
|
20
|
+
- Логирование через logging
|
|
21
|
+
- 27 встроенных тестов pytest
|
|
22
|
+
- Лицензия MIT
|
rooms-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 rooms contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
rooms-1.0.0/MANIFEST.in
ADDED
rooms-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rooms
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Менеджер виртуальных Python-окружений (комнат)
|
|
5
|
+
Author-email: Kaneki Ken <jgxwuvducrycdjfwugrjvbv61@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: venv,virtualenv,environment,termux,cli
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Classifier: Topic :: Utilities
|
|
20
|
+
Requires-Python: >=3.8
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Provides-Extra: test
|
|
24
|
+
Requires-Dist: pytest>=7.0; extra == "test"
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# rooms
|
|
28
|
+
|
|
29
|
+
> Менеджер виртуальных Python-окружений ("комнат")
|
|
30
|
+
|
|
31
|
+
Создавайте изолированные Python-окружения для каждого проекта, не засоряя системный Python. Работает на Linux, macOS, Termux (Android), WSL, Docker, Alpine, NixOS, ChromeOS и других системах.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Установка
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install rooms
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
С тестами:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install "rooms[test]"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Быстрый старт
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
rooms # интерактивное меню
|
|
53
|
+
python -m rooms # альтернативный запуск
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Команды меню
|
|
59
|
+
|
|
60
|
+
| Команда | Действие |
|
|
61
|
+
|---------|----------|
|
|
62
|
+
| `1`, `2`, `3`... | Войти в комнату по номеру |
|
|
63
|
+
| `n` / `new` / `новая` | Создать новую комнату |
|
|
64
|
+
| `d` / `delete` / `удалить` | Удалить комнату |
|
|
65
|
+
| `r` / `rename` / `переименовать` | Переименовать комнату |
|
|
66
|
+
| `c` / `clone` / `клонировать` | Клонировать комнату |
|
|
67
|
+
| `p` / `peek` / `список` | Показать pip-пакеты без входа |
|
|
68
|
+
| `e` / `export` / `экспорт` | Экспортировать в tar.gz |
|
|
69
|
+
| `i` / `import` / `импорт` | Импортировать из tar.gz |
|
|
70
|
+
| `q` / `Enter` | Выход |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Режимы клонирования
|
|
75
|
+
|
|
76
|
+
При выборе `c` (клонировать) доступно два режима:
|
|
77
|
+
|
|
78
|
+
### 1. Полное клонирование
|
|
79
|
+
|
|
80
|
+
Копирует всю комнату со всеми файлами. Быстро, но занимает столько же места, сколько оригинал.
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
[*] [##########----------] 52% 71.2 MiB / 134.5 MiB
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 2. Легкое клонирование (через requirements.txt)
|
|
87
|
+
|
|
88
|
+
Создает пустую комнату и устанавливает пакеты из `requirements.txt`. Экономит место на диске — идеально для тяжелых комнат с PyTorch, TensorFlow и т.д.
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
Сохраняю список пакетов из 'big_project'...
|
|
92
|
+
Создаю пустую комнату 'big_project_copy'...
|
|
93
|
+
Устанавливаю пакеты из requirements.txt...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Индикаторы прогресса
|
|
99
|
+
|
|
100
|
+
| Операция | Индикатор |
|
|
101
|
+
|----------|-----------|
|
|
102
|
+
| **Создание** (`n`) | `◐ Создание окружения...` (спиннер) |
|
|
103
|
+
| **Клонирование** (`c`) | `[*] [##########----------] 52% 71.2 MiB / 134.5 MiB` |
|
|
104
|
+
| **Удаление** (`d`) | `[*] [##########----------] 52% Удаление...` |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Автодетект окружения
|
|
109
|
+
|
|
110
|
+
Библиотека автоматически определяет систему и адаптирует поведение:
|
|
111
|
+
|
|
112
|
+
| Окружение | Признак | Особенность |
|
|
113
|
+
|-----------|---------|-------------|
|
|
114
|
+
| **Termux** | Android-терминал | `--system-site-packages` для venv |
|
|
115
|
+
| **WSL** | Windows Subsystem for Linux | Работает как обычный Linux |
|
|
116
|
+
| **Docker** | Контейнер | `--system-site-packages` fallback |
|
|
117
|
+
| **Alpine** | Минимальный Linux | `--system-site-packages` fallback |
|
|
118
|
+
| **NixOS** | Функциональный Linux | `--system-site-packages` fallback |
|
|
119
|
+
| **ChromeOS / Crostini** | Linux на Chromebook | Стандартный режим |
|
|
120
|
+
| **Gitpod / Codespaces** | Облачные IDE | Стандартный режим |
|
|
121
|
+
| **macOS** | Darwin | Стандартный режим |
|
|
122
|
+
| **Linux** | Остальные дистрибутивы | Стандартный режим |
|
|
123
|
+
|
|
124
|
+
При создании комнаты в скобках показывается обнаруженное окружение:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
Создаю комнату 'mybot' (docker)...
|
|
128
|
+
◐ Создание окружения...
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Программный API
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from rooms.core import (
|
|
137
|
+
list_rooms, # список комнат
|
|
138
|
+
create_room, # создать (с опциональным python=)
|
|
139
|
+
enter_room, # войти в bash
|
|
140
|
+
delete_room, # удалить
|
|
141
|
+
rename_room, # переименовать
|
|
142
|
+
clone_room, # полное клонирование
|
|
143
|
+
clone_room_fast, # легкое клонирование
|
|
144
|
+
peek_packages, # pip list без входа
|
|
145
|
+
get_pip_freeze, # pip freeze
|
|
146
|
+
save_requirements, # сохранить requirements.txt
|
|
147
|
+
export_room, # экспорт в tar.gz
|
|
148
|
+
import_room, # импорт из tar.gz
|
|
149
|
+
detect_env, # определить окружение
|
|
150
|
+
is_fragile_env, # хрупкое ли окружение
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
# Создать комнату с конкретным Python
|
|
154
|
+
path = create_room("myenv", python="/usr/bin/python3.11")
|
|
155
|
+
|
|
156
|
+
# Экспорт/импорт
|
|
157
|
+
export_room("myenv")
|
|
158
|
+
import_room(Path("myenv.tar.gz"), "restored")
|
|
159
|
+
|
|
160
|
+
# Легкое клонирование
|
|
161
|
+
clone_room_fast("myenv", "myenv_copy")
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Тестирование
|
|
167
|
+
|
|
168
|
+
Встроенные тесты доступны после установки:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
python -m rooms.tests
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
С подробным выводом:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
python -m rooms.tests -v
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Через pytest:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
pytest --pyargs rooms.tests -v
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Перенос комнаты на другую машину
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# На исходной машине
|
|
192
|
+
rooms
|
|
193
|
+
# -> e -> выбрать комнату -> получить ~/.rooms/myenv.tar.gz
|
|
194
|
+
|
|
195
|
+
# Перенести файл (scp, облако, флешка)
|
|
196
|
+
# На новой машине
|
|
197
|
+
rooms
|
|
198
|
+
# -> i -> указать путь к myenv.tar.gz -> готово
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Переменные окружения
|
|
204
|
+
|
|
205
|
+
| Переменная | Описание | По умолчанию |
|
|
206
|
+
|------------|----------|--------------|
|
|
207
|
+
| `ROOMS_DIR` | Путь к каталогу с комнатами | `~/.rooms` |
|
|
208
|
+
|
|
209
|
+
Пример:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
ROOMS_DIR=/opt/rooms rooms
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Платформы
|
|
218
|
+
|
|
219
|
+
| Платформа | Поддержка |
|
|
220
|
+
|-----------|-----------|
|
|
221
|
+
| Linux (Ubuntu, Debian, Arch, Fedora...) | Полная |
|
|
222
|
+
| macOS | Полная |
|
|
223
|
+
| Termux (Android) | Полная |
|
|
224
|
+
| WSL (Windows) | Полная |
|
|
225
|
+
| Docker / контейнеры | Полная |
|
|
226
|
+
| Alpine Linux | Полная |
|
|
227
|
+
| NixOS | Полная |
|
|
228
|
+
| ChromeOS / Crostini | Полная |
|
|
229
|
+
| Gitpod / Codespaces | Полная |
|
|
230
|
+
| Нативная Windows | Не поддерживается (используйте WSL) |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Лицензия
|
|
237
|
+
|
|
238
|
+
MIT License. См. LICENSE.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Changelog
|
|
243
|
+
|
|
244
|
+
См. CHANGELOG.md.
|
rooms-1.0.0/README.md
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# rooms
|
|
2
|
+
|
|
3
|
+
> Менеджер виртуальных Python-окружений ("комнат")
|
|
4
|
+
|
|
5
|
+
Создавайте изолированные Python-окружения для каждого проекта, не засоряя системный Python. Работает на Linux, macOS, Termux (Android), WSL, Docker, Alpine, NixOS, ChromeOS и других системах.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Установка
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install rooms
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
С тестами:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install "rooms[test]"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Быстрый старт
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
rooms # интерактивное меню
|
|
27
|
+
python -m rooms # альтернативный запуск
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Команды меню
|
|
33
|
+
|
|
34
|
+
| Команда | Действие |
|
|
35
|
+
|---------|----------|
|
|
36
|
+
| `1`, `2`, `3`... | Войти в комнату по номеру |
|
|
37
|
+
| `n` / `new` / `новая` | Создать новую комнату |
|
|
38
|
+
| `d` / `delete` / `удалить` | Удалить комнату |
|
|
39
|
+
| `r` / `rename` / `переименовать` | Переименовать комнату |
|
|
40
|
+
| `c` / `clone` / `клонировать` | Клонировать комнату |
|
|
41
|
+
| `p` / `peek` / `список` | Показать pip-пакеты без входа |
|
|
42
|
+
| `e` / `export` / `экспорт` | Экспортировать в tar.gz |
|
|
43
|
+
| `i` / `import` / `импорт` | Импортировать из tar.gz |
|
|
44
|
+
| `q` / `Enter` | Выход |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Режимы клонирования
|
|
49
|
+
|
|
50
|
+
При выборе `c` (клонировать) доступно два режима:
|
|
51
|
+
|
|
52
|
+
### 1. Полное клонирование
|
|
53
|
+
|
|
54
|
+
Копирует всю комнату со всеми файлами. Быстро, но занимает столько же места, сколько оригинал.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
[*] [##########----------] 52% 71.2 MiB / 134.5 MiB
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. Легкое клонирование (через requirements.txt)
|
|
61
|
+
|
|
62
|
+
Создает пустую комнату и устанавливает пакеты из `requirements.txt`. Экономит место на диске — идеально для тяжелых комнат с PyTorch, TensorFlow и т.д.
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
Сохраняю список пакетов из 'big_project'...
|
|
66
|
+
Создаю пустую комнату 'big_project_copy'...
|
|
67
|
+
Устанавливаю пакеты из requirements.txt...
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Индикаторы прогресса
|
|
73
|
+
|
|
74
|
+
| Операция | Индикатор |
|
|
75
|
+
|----------|-----------|
|
|
76
|
+
| **Создание** (`n`) | `◐ Создание окружения...` (спиннер) |
|
|
77
|
+
| **Клонирование** (`c`) | `[*] [##########----------] 52% 71.2 MiB / 134.5 MiB` |
|
|
78
|
+
| **Удаление** (`d`) | `[*] [##########----------] 52% Удаление...` |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Автодетект окружения
|
|
83
|
+
|
|
84
|
+
Библиотека автоматически определяет систему и адаптирует поведение:
|
|
85
|
+
|
|
86
|
+
| Окружение | Признак | Особенность |
|
|
87
|
+
|-----------|---------|-------------|
|
|
88
|
+
| **Termux** | Android-терминал | `--system-site-packages` для venv |
|
|
89
|
+
| **WSL** | Windows Subsystem for Linux | Работает как обычный Linux |
|
|
90
|
+
| **Docker** | Контейнер | `--system-site-packages` fallback |
|
|
91
|
+
| **Alpine** | Минимальный Linux | `--system-site-packages` fallback |
|
|
92
|
+
| **NixOS** | Функциональный Linux | `--system-site-packages` fallback |
|
|
93
|
+
| **ChromeOS / Crostini** | Linux на Chromebook | Стандартный режим |
|
|
94
|
+
| **Gitpod / Codespaces** | Облачные IDE | Стандартный режим |
|
|
95
|
+
| **macOS** | Darwin | Стандартный режим |
|
|
96
|
+
| **Linux** | Остальные дистрибутивы | Стандартный режим |
|
|
97
|
+
|
|
98
|
+
При создании комнаты в скобках показывается обнаруженное окружение:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
Создаю комнату 'mybot' (docker)...
|
|
102
|
+
◐ Создание окружения...
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Программный API
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from rooms.core import (
|
|
111
|
+
list_rooms, # список комнат
|
|
112
|
+
create_room, # создать (с опциональным python=)
|
|
113
|
+
enter_room, # войти в bash
|
|
114
|
+
delete_room, # удалить
|
|
115
|
+
rename_room, # переименовать
|
|
116
|
+
clone_room, # полное клонирование
|
|
117
|
+
clone_room_fast, # легкое клонирование
|
|
118
|
+
peek_packages, # pip list без входа
|
|
119
|
+
get_pip_freeze, # pip freeze
|
|
120
|
+
save_requirements, # сохранить requirements.txt
|
|
121
|
+
export_room, # экспорт в tar.gz
|
|
122
|
+
import_room, # импорт из tar.gz
|
|
123
|
+
detect_env, # определить окружение
|
|
124
|
+
is_fragile_env, # хрупкое ли окружение
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
# Создать комнату с конкретным Python
|
|
128
|
+
path = create_room("myenv", python="/usr/bin/python3.11")
|
|
129
|
+
|
|
130
|
+
# Экспорт/импорт
|
|
131
|
+
export_room("myenv")
|
|
132
|
+
import_room(Path("myenv.tar.gz"), "restored")
|
|
133
|
+
|
|
134
|
+
# Легкое клонирование
|
|
135
|
+
clone_room_fast("myenv", "myenv_copy")
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Тестирование
|
|
141
|
+
|
|
142
|
+
Встроенные тесты доступны после установки:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
python -m rooms.tests
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
С подробным выводом:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
python -m rooms.tests -v
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Через pytest:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
pytest --pyargs rooms.tests -v
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Перенос комнаты на другую машину
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# На исходной машине
|
|
166
|
+
rooms
|
|
167
|
+
# -> e -> выбрать комнату -> получить ~/.rooms/myenv.tar.gz
|
|
168
|
+
|
|
169
|
+
# Перенести файл (scp, облако, флешка)
|
|
170
|
+
# На новой машине
|
|
171
|
+
rooms
|
|
172
|
+
# -> i -> указать путь к myenv.tar.gz -> готово
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Переменные окружения
|
|
178
|
+
|
|
179
|
+
| Переменная | Описание | По умолчанию |
|
|
180
|
+
|------------|----------|--------------|
|
|
181
|
+
| `ROOMS_DIR` | Путь к каталогу с комнатами | `~/.rooms` |
|
|
182
|
+
|
|
183
|
+
Пример:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
ROOMS_DIR=/opt/rooms rooms
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Платформы
|
|
192
|
+
|
|
193
|
+
| Платформа | Поддержка |
|
|
194
|
+
|-----------|-----------|
|
|
195
|
+
| Linux (Ubuntu, Debian, Arch, Fedora...) | Полная |
|
|
196
|
+
| macOS | Полная |
|
|
197
|
+
| Termux (Android) | Полная |
|
|
198
|
+
| WSL (Windows) | Полная |
|
|
199
|
+
| Docker / контейнеры | Полная |
|
|
200
|
+
| Alpine Linux | Полная |
|
|
201
|
+
| NixOS | Полная |
|
|
202
|
+
| ChromeOS / Crostini | Полная |
|
|
203
|
+
| Gitpod / Codespaces | Полная |
|
|
204
|
+
| Нативная Windows | Не поддерживается (используйте WSL) |
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Лицензия
|
|
211
|
+
|
|
212
|
+
MIT License. См. LICENSE.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Changelog
|
|
217
|
+
|
|
218
|
+
См. CHANGELOG.md.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "rooms"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Менеджер виртуальных Python-окружений (комнат)"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Kaneki Ken", email = "jgxwuvducrycdjfwugrjvbv61@gmail.com"}
|
|
14
|
+
]
|
|
15
|
+
keywords = ["venv", "virtualenv", "environment", "termux", "cli"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Operating System :: OS Independent",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.8",
|
|
23
|
+
"Programming Language :: Python :: 3.9",
|
|
24
|
+
"Programming Language :: Python :: 3.10",
|
|
25
|
+
"Programming Language :: Python :: 3.11",
|
|
26
|
+
"Programming Language :: Python :: 3.12",
|
|
27
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
28
|
+
"Topic :: Utilities",
|
|
29
|
+
]
|
|
30
|
+
dependencies = []
|
|
31
|
+
|
|
32
|
+
[project.optional-dependencies]
|
|
33
|
+
test = ["pytest>=7.0"]
|
|
34
|
+
|
|
35
|
+
[project.scripts]
|
|
36
|
+
rooms = "rooms.cli:main"
|
|
37
|
+
|
|
38
|
+
[tool.setuptools.packages.find]
|
|
39
|
+
where = ["src"]
|
rooms-1.0.0/setup.cfg
ADDED