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.
@@ -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.
@@ -0,0 +1,4 @@
1
+ include pyproject.toml
2
+ include README.md
3
+ include LICENSE
4
+ include CHANGELOG.md
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
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """rooms - менеджер виртуальных Python-окружений."""
2
+
3
+ __version__ = "1.0.0"
@@ -0,0 +1,4 @@
1
+ from rooms.cli import main
2
+
3
+ if __name__ == "__main__":
4
+ main()