vuer-cli 0.0.1__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.
- vuer_cli-0.0.1/.gitignore +41 -0
- vuer_cli-0.0.1/LICENSE +21 -0
- vuer_cli-0.0.1/PKG-INFO +180 -0
- vuer_cli-0.0.1/README.md +159 -0
- vuer_cli-0.0.1/pyproject.toml +146 -0
- vuer_cli-0.0.1/vuer_cli/__init__.py +115 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# OS
|
|
2
|
+
.DS_Store
|
|
3
|
+
# PyCharm project files
|
|
4
|
+
.idea
|
|
5
|
+
# since this is public
|
|
6
|
+
.run
|
|
7
|
+
# IDE files
|
|
8
|
+
.eggs
|
|
9
|
+
.tox
|
|
10
|
+
# Setuptools distribution and build folders.
|
|
11
|
+
dist
|
|
12
|
+
build
|
|
13
|
+
*.egg-info
|
|
14
|
+
|
|
15
|
+
__pycache__
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Python egg metadata, regenerated from source files by setuptools.
|
|
19
|
+
.ipynb_checkpoints
|
|
20
|
+
.cache
|
|
21
|
+
MUJOCO_LOG.txt
|
|
22
|
+
|
|
23
|
+
# uv
|
|
24
|
+
.venv
|
|
25
|
+
uv.lock
|
|
26
|
+
|
|
27
|
+
*out
|
|
28
|
+
*.npy
|
|
29
|
+
*.csv
|
|
30
|
+
*.p
|
|
31
|
+
|
|
32
|
+
*.swp
|
|
33
|
+
*.gz
|
|
34
|
+
*.npy
|
|
35
|
+
*.pyc
|
|
36
|
+
*.py~
|
|
37
|
+
|
|
38
|
+
output
|
|
39
|
+
pcds
|
|
40
|
+
|
|
41
|
+
.pytest_cache
|
vuer_cli-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Ge Yang
|
|
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.
|
vuer_cli-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vuer-cli
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: A Python CLI for Vuer, a real-time 3D visualization library
|
|
5
|
+
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Classifier: Development Status :: 3 - Alpha
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Programming Language :: Python
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Requires-Python: >=3.8
|
|
17
|
+
Requires-Dist: params-proto>=3.0.0rc3
|
|
18
|
+
Provides-Extra: all
|
|
19
|
+
Provides-Extra: example
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# Vuer Hub Environment Manager
|
|
23
|
+
|
|
24
|
+
Vuer HUB and the vuer command line tool enable you to manage, version-control, and distribute physical simulation environments the same way you manage software packages.
|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
|
|
28
|
+
The CLI maintains a local environment list in `vuer.json`.
|
|
29
|
+
|
|
30
|
+
**Commands:**
|
|
31
|
+
- `sync` - pull all included environments
|
|
32
|
+
- `add` - add an environment to the vuer.json
|
|
33
|
+
- `remove` - remove an environment
|
|
34
|
+
- `upgrade` - upgrade environments
|
|
35
|
+
|
|
36
|
+
**Environment Commands:**
|
|
37
|
+
- `envs-create` – create a workspace for an environment
|
|
38
|
+
- `envs-publish` - publish an environment to the workspace
|
|
39
|
+
- `envs-pull` – download an environment by `environmentId`
|
|
40
|
+
- `envs-push` – upload a packaged environment
|
|
41
|
+
|
|
42
|
+
## Installation
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install vuer-cli
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Environment Variables
|
|
49
|
+
|
|
50
|
+
| Variable | Required | Description |
|
|
51
|
+
|-------------------|----------|--------------------------------------------------------------------------|
|
|
52
|
+
| `VUER_AUTH_TOKEN` | ✅ | JWT token used for all authenticated requests |
|
|
53
|
+
| `VUER_HUB` | ❌ | Base URL of the Vuer Hub API backend (defaults to `https://hub.vuer.ai/api`) |
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
export VUER_AUTH_TOKEN="your-jwt-token"
|
|
57
|
+
export VUER_HUB="https://hub.vuer.ai/api"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Usage Overview
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Sync all environments
|
|
64
|
+
vuer sync
|
|
65
|
+
|
|
66
|
+
# Add an environment
|
|
67
|
+
vuer add --command.env <environmentId>
|
|
68
|
+
|
|
69
|
+
# Pull an environment
|
|
70
|
+
vuer envs-pull --command.id <environmentId>
|
|
71
|
+
|
|
72
|
+
# Push an environment
|
|
73
|
+
vuer envs-push --command.file ./build/my-env.zip --command.name demo-env --command.version 1.2.3
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Push Command
|
|
77
|
+
|
|
78
|
+
Upload a packaged environment:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
vuer envs-push \
|
|
82
|
+
--command.file ./build/my-env.zip \
|
|
83
|
+
--command.name demo-env \
|
|
84
|
+
--command.version 1.2.3 \
|
|
85
|
+
--command.description "Demo package" \
|
|
86
|
+
--command.env-type isaac \
|
|
87
|
+
--command.visibility PUBLIC \
|
|
88
|
+
--command.push-timeout 600
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Push Flags
|
|
92
|
+
|
|
93
|
+
| Flag | Required | Description |
|
|
94
|
+
|---------------------------------|----------|------------------------------------------------------------|
|
|
95
|
+
| `--command.file PATH` | ✅ | Path to the package file (zip/tar/etc.) |
|
|
96
|
+
| `--command.name NAME` | ✅ | Environment name without spaces |
|
|
97
|
+
| `--command.version SEMVER` | ✅ | Semver-compliant version string (`1.2.3`, `2.0.0-beta`, …) |
|
|
98
|
+
| `--command.description TEXT` | ❌ | Optional text |
|
|
99
|
+
| `--command.env-type TYPE` | ❌ | Example: `isaac`, `mujoco` |
|
|
100
|
+
| `--command.visibility VIS` | ❌ | `PUBLIC` (default), `PRIVATE`, or `ORG_MEMBERS` |
|
|
101
|
+
| `--command.push-timeout SECONDS`| ❌ | Request timeout in seconds (default: 300) |
|
|
102
|
+
|
|
103
|
+
## Pull Command
|
|
104
|
+
|
|
105
|
+
Download an environment by ID:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
vuer envs-pull \
|
|
109
|
+
--command.id 252454509945688064 \
|
|
110
|
+
--command.output ./downloads \
|
|
111
|
+
--command.filename demo-env.zip \
|
|
112
|
+
--command.timeout 600
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
If `--command.filename` is omitted, the tool will try to derive the original filename
|
|
116
|
+
from the server's `Content-Disposition` header. Files are stored under the `downloads/` directory by default.
|
|
117
|
+
|
|
118
|
+
### Pull Flags
|
|
119
|
+
|
|
120
|
+
| Flag | Required | Description |
|
|
121
|
+
|----------------------------|----------|---------------------------------------------|
|
|
122
|
+
| `--command.id ENV_ID` | ✅ | Target environment's `environmentId` |
|
|
123
|
+
| `--command.output DIR` | ❌ | Destination directory (default `downloads`) |
|
|
124
|
+
| `--command.filename NAME` | ❌ | Override for the saved filename |
|
|
125
|
+
| `--command.timeout SECONDS`| ❌ | Request timeout in seconds (default: 300) |
|
|
126
|
+
|
|
127
|
+
## Hub Configuration
|
|
128
|
+
|
|
129
|
+
You can also configure Hub settings via CLI options:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
vuer sync --hub.url https://custom-hub.example.com/api --hub.auth-token your-token
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Error Handling
|
|
136
|
+
|
|
137
|
+
All network and file-system errors are surfaced as readable messages (prefixed
|
|
138
|
+
with `[ERROR]`). Typical causes:
|
|
139
|
+
|
|
140
|
+
- Invalid JWT → ensure `VUER_AUTH_TOKEN` is set and not expired.
|
|
141
|
+
- Missing backend endpoint → ensure `VUER_HUB` is set.
|
|
142
|
+
- Duplicate name/version on `push` → server enforces `(name, versionId)` uniqueness.
|
|
143
|
+
- Missing file path on `push` or invalid target directory on `pull`.
|
|
144
|
+
- Timeout errors → increase `--command.push-timeout` or `--command.timeout` for large files.
|
|
145
|
+
|
|
146
|
+
## Development
|
|
147
|
+
|
|
148
|
+
1. Clone the main repository and navigate into the CLI folder.
|
|
149
|
+
2. Install dependencies:
|
|
150
|
+
```bash
|
|
151
|
+
pip install -e .
|
|
152
|
+
```
|
|
153
|
+
3. Run the CLI locally using `vuer ...`.
|
|
154
|
+
|
|
155
|
+
### Running with uv
|
|
156
|
+
|
|
157
|
+
Use `uv run` to execute the CLI without installing it globally:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Create a new environment workspace
|
|
161
|
+
uv run vuer envs-create --command.name my-environment
|
|
162
|
+
|
|
163
|
+
# Pull an environment by ID
|
|
164
|
+
uv run vuer envs-pull --command.id 252454509945688064 --command.output ./downloads
|
|
165
|
+
|
|
166
|
+
# Push an environment package
|
|
167
|
+
uv run vuer envs-push \
|
|
168
|
+
--command.file ./build/my-env.zip \
|
|
169
|
+
--command.name demo-env \
|
|
170
|
+
--command.version 1.2.3 \
|
|
171
|
+
--command.description "Demo package" \
|
|
172
|
+
--command.env-type isaac \
|
|
173
|
+
--command.visibility PUBLIC
|
|
174
|
+
|
|
175
|
+
# Sync all environments in vuer.json
|
|
176
|
+
uv run vuer sync
|
|
177
|
+
|
|
178
|
+
# Add an environment to vuer.json
|
|
179
|
+
uv run vuer add --command.env <environmentId>
|
|
180
|
+
```
|
vuer_cli-0.0.1/README.md
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Vuer Hub Environment Manager
|
|
2
|
+
|
|
3
|
+
Vuer HUB and the vuer command line tool enable you to manage, version-control, and distribute physical simulation environments the same way you manage software packages.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The CLI maintains a local environment list in `vuer.json`.
|
|
8
|
+
|
|
9
|
+
**Commands:**
|
|
10
|
+
- `sync` - pull all included environments
|
|
11
|
+
- `add` - add an environment to the vuer.json
|
|
12
|
+
- `remove` - remove an environment
|
|
13
|
+
- `upgrade` - upgrade environments
|
|
14
|
+
|
|
15
|
+
**Environment Commands:**
|
|
16
|
+
- `envs-create` – create a workspace for an environment
|
|
17
|
+
- `envs-publish` - publish an environment to the workspace
|
|
18
|
+
- `envs-pull` – download an environment by `environmentId`
|
|
19
|
+
- `envs-push` – upload a packaged environment
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install vuer-cli
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Environment Variables
|
|
28
|
+
|
|
29
|
+
| Variable | Required | Description |
|
|
30
|
+
|-------------------|----------|--------------------------------------------------------------------------|
|
|
31
|
+
| `VUER_AUTH_TOKEN` | ✅ | JWT token used for all authenticated requests |
|
|
32
|
+
| `VUER_HUB` | ❌ | Base URL of the Vuer Hub API backend (defaults to `https://hub.vuer.ai/api`) |
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
export VUER_AUTH_TOKEN="your-jwt-token"
|
|
36
|
+
export VUER_HUB="https://hub.vuer.ai/api"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Usage Overview
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Sync all environments
|
|
43
|
+
vuer sync
|
|
44
|
+
|
|
45
|
+
# Add an environment
|
|
46
|
+
vuer add --command.env <environmentId>
|
|
47
|
+
|
|
48
|
+
# Pull an environment
|
|
49
|
+
vuer envs-pull --command.id <environmentId>
|
|
50
|
+
|
|
51
|
+
# Push an environment
|
|
52
|
+
vuer envs-push --command.file ./build/my-env.zip --command.name demo-env --command.version 1.2.3
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Push Command
|
|
56
|
+
|
|
57
|
+
Upload a packaged environment:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
vuer envs-push \
|
|
61
|
+
--command.file ./build/my-env.zip \
|
|
62
|
+
--command.name demo-env \
|
|
63
|
+
--command.version 1.2.3 \
|
|
64
|
+
--command.description "Demo package" \
|
|
65
|
+
--command.env-type isaac \
|
|
66
|
+
--command.visibility PUBLIC \
|
|
67
|
+
--command.push-timeout 600
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Push Flags
|
|
71
|
+
|
|
72
|
+
| Flag | Required | Description |
|
|
73
|
+
|---------------------------------|----------|------------------------------------------------------------|
|
|
74
|
+
| `--command.file PATH` | ✅ | Path to the package file (zip/tar/etc.) |
|
|
75
|
+
| `--command.name NAME` | ✅ | Environment name without spaces |
|
|
76
|
+
| `--command.version SEMVER` | ✅ | Semver-compliant version string (`1.2.3`, `2.0.0-beta`, …) |
|
|
77
|
+
| `--command.description TEXT` | ❌ | Optional text |
|
|
78
|
+
| `--command.env-type TYPE` | ❌ | Example: `isaac`, `mujoco` |
|
|
79
|
+
| `--command.visibility VIS` | ❌ | `PUBLIC` (default), `PRIVATE`, or `ORG_MEMBERS` |
|
|
80
|
+
| `--command.push-timeout SECONDS`| ❌ | Request timeout in seconds (default: 300) |
|
|
81
|
+
|
|
82
|
+
## Pull Command
|
|
83
|
+
|
|
84
|
+
Download an environment by ID:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
vuer envs-pull \
|
|
88
|
+
--command.id 252454509945688064 \
|
|
89
|
+
--command.output ./downloads \
|
|
90
|
+
--command.filename demo-env.zip \
|
|
91
|
+
--command.timeout 600
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If `--command.filename` is omitted, the tool will try to derive the original filename
|
|
95
|
+
from the server's `Content-Disposition` header. Files are stored under the `downloads/` directory by default.
|
|
96
|
+
|
|
97
|
+
### Pull Flags
|
|
98
|
+
|
|
99
|
+
| Flag | Required | Description |
|
|
100
|
+
|----------------------------|----------|---------------------------------------------|
|
|
101
|
+
| `--command.id ENV_ID` | ✅ | Target environment's `environmentId` |
|
|
102
|
+
| `--command.output DIR` | ❌ | Destination directory (default `downloads`) |
|
|
103
|
+
| `--command.filename NAME` | ❌ | Override for the saved filename |
|
|
104
|
+
| `--command.timeout SECONDS`| ❌ | Request timeout in seconds (default: 300) |
|
|
105
|
+
|
|
106
|
+
## Hub Configuration
|
|
107
|
+
|
|
108
|
+
You can also configure Hub settings via CLI options:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
vuer sync --hub.url https://custom-hub.example.com/api --hub.auth-token your-token
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Error Handling
|
|
115
|
+
|
|
116
|
+
All network and file-system errors are surfaced as readable messages (prefixed
|
|
117
|
+
with `[ERROR]`). Typical causes:
|
|
118
|
+
|
|
119
|
+
- Invalid JWT → ensure `VUER_AUTH_TOKEN` is set and not expired.
|
|
120
|
+
- Missing backend endpoint → ensure `VUER_HUB` is set.
|
|
121
|
+
- Duplicate name/version on `push` → server enforces `(name, versionId)` uniqueness.
|
|
122
|
+
- Missing file path on `push` or invalid target directory on `pull`.
|
|
123
|
+
- Timeout errors → increase `--command.push-timeout` or `--command.timeout` for large files.
|
|
124
|
+
|
|
125
|
+
## Development
|
|
126
|
+
|
|
127
|
+
1. Clone the main repository and navigate into the CLI folder.
|
|
128
|
+
2. Install dependencies:
|
|
129
|
+
```bash
|
|
130
|
+
pip install -e .
|
|
131
|
+
```
|
|
132
|
+
3. Run the CLI locally using `vuer ...`.
|
|
133
|
+
|
|
134
|
+
### Running with uv
|
|
135
|
+
|
|
136
|
+
Use `uv run` to execute the CLI without installing it globally:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Create a new environment workspace
|
|
140
|
+
uv run vuer envs-create --command.name my-environment
|
|
141
|
+
|
|
142
|
+
# Pull an environment by ID
|
|
143
|
+
uv run vuer envs-pull --command.id 252454509945688064 --command.output ./downloads
|
|
144
|
+
|
|
145
|
+
# Push an environment package
|
|
146
|
+
uv run vuer envs-push \
|
|
147
|
+
--command.file ./build/my-env.zip \
|
|
148
|
+
--command.name demo-env \
|
|
149
|
+
--command.version 1.2.3 \
|
|
150
|
+
--command.description "Demo package" \
|
|
151
|
+
--command.env-type isaac \
|
|
152
|
+
--command.visibility PUBLIC
|
|
153
|
+
|
|
154
|
+
# Sync all environments in vuer.json
|
|
155
|
+
uv run vuer sync
|
|
156
|
+
|
|
157
|
+
# Add an environment to vuer.json
|
|
158
|
+
uv run vuer add --command.env <environmentId>
|
|
159
|
+
```
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "vuer-cli"
|
|
7
|
+
version = "0.0.1"
|
|
8
|
+
description = "A Python CLI for Vuer, a real-time 3D visualization library"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
requires-python = ">=3.8"
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 3 - Alpha",
|
|
14
|
+
"Programming Language :: Python",
|
|
15
|
+
"Programming Language :: Python :: 3.8",
|
|
16
|
+
"Programming Language :: Python :: 3.9",
|
|
17
|
+
"Programming Language :: Python :: 3.10",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Operating System :: OS Independent",
|
|
22
|
+
]
|
|
23
|
+
dependencies = [
|
|
24
|
+
"params-proto>=3.0.0rc3",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[project.optional-dependencies]
|
|
28
|
+
all = [
|
|
29
|
+
]
|
|
30
|
+
example = [
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[project.scripts]
|
|
34
|
+
vuer = "vuer_cli:entrypoint"
|
|
35
|
+
|
|
36
|
+
[tool.hatch.metadata]
|
|
37
|
+
allow-direct-references = true
|
|
38
|
+
|
|
39
|
+
[tool.hatch.build]
|
|
40
|
+
packages = ["src/vuer_cli"]
|
|
41
|
+
|
|
42
|
+
[tool.hatch.build.targets.wheel]
|
|
43
|
+
|
|
44
|
+
[tool.hatch.build.targets.sdist]
|
|
45
|
+
include = [
|
|
46
|
+
"src",
|
|
47
|
+
"*.md",
|
|
48
|
+
"*.toml",
|
|
49
|
+
"LICENSE",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[dependency-groups]
|
|
53
|
+
dev = [
|
|
54
|
+
"pytest",
|
|
55
|
+
"pytest-xdist",
|
|
56
|
+
"ruff",
|
|
57
|
+
"twine",
|
|
58
|
+
"roman",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
[tool.uv]
|
|
62
|
+
override-dependencies = [
|
|
63
|
+
"multidict>=6.0",
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
[tool.pytest.ini_options]
|
|
67
|
+
pythonpath = ["src"]
|
|
68
|
+
testpaths = ["tests"]
|
|
69
|
+
|
|
70
|
+
[tool.ruff]
|
|
71
|
+
line-length = 140
|
|
72
|
+
indent-width = 4
|
|
73
|
+
target-version = "py311"
|
|
74
|
+
exclude = [
|
|
75
|
+
".bzr",
|
|
76
|
+
".direnv",
|
|
77
|
+
".eggs",
|
|
78
|
+
".git",
|
|
79
|
+
".git-rewrite",
|
|
80
|
+
".hg",
|
|
81
|
+
".ipynb_checkpoints",
|
|
82
|
+
".mypy_cache",
|
|
83
|
+
".nox",
|
|
84
|
+
".pants.d",
|
|
85
|
+
".pyenv",
|
|
86
|
+
".pytest_cache",
|
|
87
|
+
".pytype",
|
|
88
|
+
".ruff_cache",
|
|
89
|
+
".svn",
|
|
90
|
+
".tox",
|
|
91
|
+
".venv",
|
|
92
|
+
".vscode",
|
|
93
|
+
"__pypackages__",
|
|
94
|
+
"_build",
|
|
95
|
+
"buck-out",
|
|
96
|
+
"build",
|
|
97
|
+
"dist",
|
|
98
|
+
"node_modules",
|
|
99
|
+
"site-packages",
|
|
100
|
+
"venv",
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
[tool.ruff.lint]
|
|
104
|
+
select = ["E4", "E7", "E9", "F"]
|
|
105
|
+
ignore = []
|
|
106
|
+
fixable = ["ALL"]
|
|
107
|
+
unfixable = []
|
|
108
|
+
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
109
|
+
|
|
110
|
+
[tool.ruff.format]
|
|
111
|
+
quote-style = "double"
|
|
112
|
+
indent-style = "space"
|
|
113
|
+
skip-magic-trailing-comma = false
|
|
114
|
+
line-ending = "auto"
|
|
115
|
+
docstring-code-format = false
|
|
116
|
+
docstring-code-line-length = "dynamic"
|
|
117
|
+
|
|
118
|
+
[tool.black]
|
|
119
|
+
line-length = 120
|
|
120
|
+
|
|
121
|
+
[tool.pylint.messages_control]
|
|
122
|
+
max-line-length = 120
|
|
123
|
+
generated-members = []
|
|
124
|
+
good-names-rgxs = "^[_a-zA-Z][_a-z0-9]?$"
|
|
125
|
+
ignore-paths = []
|
|
126
|
+
jobs = 0
|
|
127
|
+
ignored-classes = ["TensorDataclass"]
|
|
128
|
+
disable = [
|
|
129
|
+
"duplicate-code",
|
|
130
|
+
"fixme",
|
|
131
|
+
"logging-fstring-interpolation",
|
|
132
|
+
"too-many-arguments",
|
|
133
|
+
"too-many-branches",
|
|
134
|
+
"too-many-instance-attributes",
|
|
135
|
+
"too-many-locals",
|
|
136
|
+
"unnecessary-ellipsis",
|
|
137
|
+
]
|
|
138
|
+
|
|
139
|
+
[tool.pyright]
|
|
140
|
+
include = ["src/vuer_cli"]
|
|
141
|
+
exclude = ["**/node_modules", "**/__pycache__"]
|
|
142
|
+
defineConstant = { DEBUG = true }
|
|
143
|
+
reportMissingImports = true
|
|
144
|
+
reportMissingTypeStubs = false
|
|
145
|
+
reportPrivateImportUsage = false
|
|
146
|
+
reportUndefinedVariable = false
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""Vuer CLI - Environment Manager for Vuer Hub."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from typing import Optional
|
|
6
|
+
|
|
7
|
+
from params_proto import proto
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# -- Configuration with environment variable defaults --
|
|
11
|
+
|
|
12
|
+
@proto.prefix
|
|
13
|
+
class Hub:
|
|
14
|
+
"""Vuer Hub connection settings."""
|
|
15
|
+
url: str = os.environ.get("VUER_HUB", "https://hub.vuer.ai/api") # Base URL of the Vuer Hub API
|
|
16
|
+
auth_token: str = os.environ.get("VUER_AUTH_TOKEN", "") # JWT token for authentication
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# -- Subcommand dataclasses for top-level commands --
|
|
20
|
+
|
|
21
|
+
@dataclass
|
|
22
|
+
class Sync:
|
|
23
|
+
"""Pull all included environments from vuer.json."""
|
|
24
|
+
output: str = "downloads" # Destination directory for downloaded environments
|
|
25
|
+
timeout: int = 300 # Request timeout in seconds
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass
|
|
29
|
+
class Add:
|
|
30
|
+
"""Add an environment to vuer.json."""
|
|
31
|
+
env: str = "" # Environment ID to add
|
|
32
|
+
name: Optional[str] = None # Optional name for the environment
|
|
33
|
+
version: str = "latest" # Version to track
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@dataclass
|
|
37
|
+
class Remove:
|
|
38
|
+
"""Remove an environment from vuer.json."""
|
|
39
|
+
env: str = "" # Environment ID to remove
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass
|
|
43
|
+
class Upgrade:
|
|
44
|
+
"""Upgrade environments in vuer.json."""
|
|
45
|
+
env: Optional[str] = None # Specific environment ID to upgrade (all if not specified)
|
|
46
|
+
version: Optional[str] = None # New version to set
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# -- Subcommand dataclasses for `vuer envs` --
|
|
50
|
+
|
|
51
|
+
@dataclass
|
|
52
|
+
class EnvsCreate:
|
|
53
|
+
"""Create a workspace for a new environment."""
|
|
54
|
+
name: str = "" # Environment name (slug format, no spaces)
|
|
55
|
+
timeout: int = 300 # Request timeout in seconds
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@dataclass
|
|
59
|
+
class EnvsPublish:
|
|
60
|
+
"""Publish a new version of an environment."""
|
|
61
|
+
env_id: str = "" # Environment ID to publish to
|
|
62
|
+
file: str = "" # Path to the package file (zip/tar/etc.)
|
|
63
|
+
version: str = "" # Semver-compliant version string
|
|
64
|
+
description: str = "" # Optional description
|
|
65
|
+
env_type: str = "" # Environment type (isaac, mujoco, etc.)
|
|
66
|
+
visibility: str = "PUBLIC" # Visibility (PUBLIC, PRIVATE, ORG_MEMBERS)
|
|
67
|
+
timeout: int = 300 # Request timeout in seconds
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@dataclass
|
|
71
|
+
class EnvsPull:
|
|
72
|
+
"""Download an environment by ID."""
|
|
73
|
+
id: str = "" # Environment ID to download
|
|
74
|
+
output: str = "downloads" # Destination directory
|
|
75
|
+
filename: Optional[str] = None # Override for saved filename
|
|
76
|
+
version: Optional[str] = None # Specific version to download
|
|
77
|
+
timeout: int = 300 # Request timeout in seconds
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@dataclass
|
|
81
|
+
class EnvsPush:
|
|
82
|
+
"""Upload a packaged environment (creates env if needed, then publishes)."""
|
|
83
|
+
file: str = "" # Path to the package file (zip/tar/etc.)
|
|
84
|
+
name: str = "" # Environment name without spaces
|
|
85
|
+
version: str = "" # Semver-compliant version string
|
|
86
|
+
description: str = "" # Optional description
|
|
87
|
+
env_type: str = "" # Environment type (isaac, mujoco, etc.)
|
|
88
|
+
visibility: str = "PUBLIC" # Visibility (PUBLIC, PRIVATE, ORG_MEMBERS)
|
|
89
|
+
push_timeout: int = 300 # Request timeout in seconds
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@proto.cli(prog="vuer")
|
|
93
|
+
def entrypoint(
|
|
94
|
+
command: Sync | Add | Remove | Upgrade | EnvsCreate | EnvsPublish | EnvsPull | EnvsPush,
|
|
95
|
+
):
|
|
96
|
+
"""Vuer Hub Environment Manager.
|
|
97
|
+
|
|
98
|
+
Manage, version-control, and distribute physical simulation environments.
|
|
99
|
+
|
|
100
|
+
Commands:
|
|
101
|
+
sync Pull all included environments from vuer.json
|
|
102
|
+
add Add an environment to vuer.json
|
|
103
|
+
remove Remove an environment from vuer.json
|
|
104
|
+
upgrade Upgrade environments in vuer.json
|
|
105
|
+
envs-create Create a workspace for an environment
|
|
106
|
+
envs-publish Publish an environment version
|
|
107
|
+
envs-pull Download an environment by ID
|
|
108
|
+
envs-push Upload a packaged environment
|
|
109
|
+
|
|
110
|
+
Environment Variables:
|
|
111
|
+
VUER_HUB Base URL of the Vuer Hub API (default: https://hub.vuer.ai/api)
|
|
112
|
+
VUER_AUTH_TOKEN JWT token for authentication
|
|
113
|
+
"""
|
|
114
|
+
# Dispatch based on command type
|
|
115
|
+
pass
|