hpackage 0.2.2__py3-none-any.whl

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,291 @@
1
+ Metadata-Version: 2.4
2
+ Name: hpackage
3
+ Version: 0.2.2
4
+ Summary: Houdini package manager command-line tool
5
+ Author-email: SideFX <support@sidefx.com>
6
+ License-Expression: LicenseRef-SideFX-EULA
7
+ Project-URL: Homepage, https://www.sidefx.com
8
+ Project-URL: Issues, https://www.sidefx.com/support-programs/
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: requests>=2.31
15
+ Dynamic: license-file
16
+
17
+ # hpackage command reference
18
+ This guide walks you through downloading/installing packages first, then
19
+ authoring and uploading your own. Commands are shown exactly as you’d type
20
+ them.
21
+
22
+ > Tip: run hpackage -h or hpackage &lt;subcommand&gt; -h for built-in help.
23
+
24
+ ## Installing & managing packages
25
+
26
+ ### Install a package
27
+ ```
28
+ hpackage install mytoolkit
29
+ ```
30
+ * If you don’t specify a version, the latest available version is chosen.
31
+ * Dependencies are resolved automatically. If a dependency has `max_version`,
32
+ that version is used; otherwise the latest is used.
33
+
34
+ ### Install a specific version
35
+ ```
36
+ hpackage install mytoolkit==1.2.3
37
+ ```
38
+
39
+ ### Install from a requirements file
40
+ ```
41
+ hpackage install -r hrequirements.txt
42
+ ```
43
+
44
+ Where hrequirements.txt lists one package per line, e.g.:
45
+ ```
46
+ coollib
47
+ otherlib==2.0
48
+ # comments and blank lines are ignored
49
+ ```
50
+
51
+ ### Upgrade a package to its latest version
52
+ ```
53
+ hpackage install -U mytoolkit
54
+ ```
55
+
56
+ ### List installed packages
57
+ ```
58
+ hpackage list
59
+ hpackage list --show-location # also prints paths
60
+ ```
61
+
62
+ ### Uninstall a package
63
+ ```
64
+ hpackage uninstall mytoolkit
65
+ ```
66
+ If Houdini is running, note that dynamic libraries loaded by the package won’t
67
+ unload unless Houdini is restarted.
68
+
69
+ If other packages depend on it, you’ll be warned. To skip the prompt:
70
+ ```
71
+ hpackage uninstall -y mytoolkit
72
+ ```
73
+
74
+ ### How downloads work
75
+ * Downloads resume automatically if interrupted.
76
+ * A progress bar is shown by default (-v controls verbosity).
77
+ * After download, the file size and MD5 are verified; a mismatch aborts install.
78
+
79
+ ## Authentication
80
+ You only need to sign in if you:
81
+ * install a package that requires a grant, or
82
+ * use author upload/publish features.
83
+
84
+ ### Sign in (via browser session)
85
+ ```
86
+ $ hpackage auth login
87
+ Waiting for you to log in via a browser (press Ctrl+C to quit)
88
+
89
+ $hpackage auth status
90
+ username : yourusername
91
+ email : you@yourdomain.com
92
+ company : Your Company Name
93
+ Login method : Session
94
+ ```
95
+
96
+ To log out of the browser session:
97
+ ```
98
+ hpackage auth logout
99
+ ```
100
+
101
+ ### API key (non-interactive)
102
+ Create and install a key tied to your account:
103
+ ```
104
+ hpackage auth installkey
105
+ ```
106
+
107
+ This writes an API key to your hserver.ini file. These keys are also used by
108
+ Houdini’s licensing tools and the launcher. Commands to uninstall keys and
109
+ delete them from hpackage’s server also exist.
110
+
111
+ ```
112
+ $ hpackage auth status
113
+ username : yourusername
114
+ email : you@yourdomain.com
115
+ company : Your Company Name
116
+ Login method : API Key
117
+ API client id : <your-client-id>
118
+ ```
119
+
120
+ ## Authoring & uploading packages
121
+
122
+ ### 1) Reserve a package name and create a starter template
123
+ ```
124
+ hpackage author reserve mypkg
125
+ ```
126
+
127
+ This:
128
+ * verifies you are allowed to reserve the name,
129
+ * creates a starter package skeleton under your Houdini user packages directory,
130
+ * writes getting-started.txt with next steps.
131
+
132
+ If a folder/JSON already exists with that name, nothing is overwritten; you’ll
133
+ be asked to complete the required fields instead.
134
+
135
+ ### 2) Verify your package JSON
136
+ ```
137
+ hpackage author verifyjson mypkg
138
+ # Or provide a path to a JSON:
139
+ # hpackage author verifyjson /path/to/mypkg.json
140
+ ```
141
+
142
+ This validates:
143
+ * the JSON object structure and required keys and values (including env list entries),
144
+ * version format,
145
+ * a strict minimum Houdini version via enable, e.g.:<br/>
146
+ `"enable": "houdini_version >= '21.0'"`
147
+
148
+ If anything is wrong, you’ll get actionable error messages.
149
+
150
+ ### 3) Prepare your package folder
151
+ Your package folder typically looks like:
152
+
153
+ ```
154
+ mypkg.json
155
+ mypkg/
156
+ README.md # required by uploader
157
+ houdini/ # items in search path (otls, scripts, etc.)
158
+ ... # items you reference via $PCK_MYPKG
159
+ ```
160
+
161
+ Required: `README.md` in the package directory.<br/>
162
+ Remove `getting-started.txt` after you follow its steps; uploads will refuse to proceed while it exists.
163
+
164
+ ### 4) Upload (chunked, resumable)
165
+ ```
166
+ hpackage author upload mypkg
167
+ # or use a JSON path: hpackage author upload /path/to/mypkg.json
168
+ ```
169
+
170
+ * The CLI zips your JSON + package folder, computes MD5, starts an upload, and
171
+ streams chunks.
172
+ * If an earlier attempt partially succeeded, it automatically resumes from the
173
+ server-reported offset.
174
+ * Server-side checks verify the zip and JSON match the metadata, and then
175
+ queues a security scan.
176
+ * On success, the CLI prints your package page URL.
177
+ * Pass `-i` (or `-–interactive`) to fill out the contents of README.md and
178
+ delete getting-started.txt automatically.
179
+
180
+ Make the package require a grant to download
181
+ ```
182
+ hpackage author upload mypkg --requires-grant
183
+ ```
184
+ (You can later grant access and publish.)
185
+
186
+ ### 5) Check status (as author)
187
+ ```
188
+ hpackage author getstatus mypkg
189
+ ```
190
+
191
+ Shows the most recent version and its state (e.g., scanning / reviewing /
192
+ reviewed / unsafe / published).
193
+
194
+ ### 6) Grant access (for packages that require a grant)
195
+ ```
196
+ hpackage author grant mypkg user1@example.com user2@example.com
197
+ ```
198
+
199
+ ### 7) Publish
200
+ ```
201
+ hpackage author publish mypkg==1.2.3
202
+ ```
203
+
204
+ Publishing requires:
205
+ * your package version to be reviewed and not flagged unsafe,
206
+ * all minimum dependency versions to be published.
207
+
208
+ ### 8) Unpublish (time/usage limits may apply)
209
+ ```
210
+ hpackage author unpublish mypkg==1.2.3
211
+ ```
212
+
213
+ The server prevents you from unpublishing if it would break other published
214
+ packages depending on this version (subject to rules you’ll see as error
215
+ messages).
216
+
217
+ ### 9) Delete a version
218
+ ```
219
+ hpackage author delete mypkg==1.2.3
220
+ ```
221
+
222
+ If it’s published, it will first be unpublished (and must pass the same safety
223
+ checks as above).
224
+
225
+ ## Configuration & flags
226
+ * Verbosity: `-v 0|1|2|3` (default 2 but 3 if `HOUDINI_PACKAGE_VERBOSE` is set)
227
+ * Timeout: `--timeout <seconds>` (default 30)
228
+ * Server: `--server <url>` (intended for internal/testing use)
229
+
230
+ ## Troubleshooting
231
+ * **“You are not logged in”**<br/>
232
+ Run hpackage auth login (or use auth installkey to set an API key).
233
+ * **Upload refused due to getting-started.txt**<br/>
234
+ Complete the steps in that file and delete it before uploading.
235
+ * **JSON validation errors**<br/>
236
+ Use `hpackage author verifyjson` and follow the exact messages (e.g., env
237
+ must be a list; enable must contain a quoted two-segment Houdini version like
238
+ `"houdini_version >= '21.0'"`).
239
+
240
+ ## Examples
241
+ ```
242
+ # Install the latest version of a public package
243
+ hpackage install mushroomcloud
244
+ ```
245
+
246
+ ```
247
+ # Install a specific version
248
+ hpackage install mushroomcloud==2.3.1
249
+ ```
250
+
251
+ ```
252
+ # Install everything from a requirements file
253
+ hpackage install -r hrequirements.txt
254
+ ```
255
+
256
+ ```
257
+ # List installed packages (with locations)
258
+ hpackage list --show-location
259
+ ```
260
+
261
+ ```
262
+ # Uninstall
263
+ hpackage uninstall mushroomcloud
264
+ ```
265
+
266
+ ```
267
+ # Author flow
268
+ hpackage auth login
269
+ hpackage author reserve freetools
270
+ hpackage author verifyjson freetools
271
+ # (edit README.md, remove getting-started.txt, add files under
272
+ # freetools/)
273
+ hpackage author upload freetools
274
+ hpackage author getstatus freetools
275
+ # (wait until the status is “reviewed”)
276
+ hpackage author publish freetools
277
+ ```
278
+
279
+ ```
280
+ # Paid Content Author flow
281
+ hpackage auth login
282
+ hpackage author reserve paidtools
283
+ # (edit README.md, remove getting-started.txt, add files under
284
+ # paidtools/)
285
+ hpackage author upload paidtools --requires-grant
286
+ hpackage author getstatus paidtools
287
+ # (wait until the status is “reviewed”)
288
+ hpackage author publish paidtools
289
+ # (from your commerce website:)
290
+ hpackage author grant paidtools purchaser@example.com
291
+ ```
@@ -0,0 +1,7 @@
1
+ hpackage.py,sha256=Xw6BY0Rclf_McXIo0IuALT81mTxAbnK4ljnQSiNUcHQ,70259
2
+ hpackage-0.2.2.dist-info/licenses/LICENSE,sha256=RETLC8_U_d1zmf5a08hoWm9kTbtx_9xIOgqcSDliBIQ,74297
3
+ hpackage-0.2.2.dist-info/METADATA,sha256=hjVylXHYV5IkAMy2X_BAC8FRwgkwhQ0C7ipIiTTESlg,7894
4
+ hpackage-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
5
+ hpackage-0.2.2.dist-info/entry_points.txt,sha256=ugcPM-kQTuO3oaCn2jwZeuJmnlV6atPX5FfCyuvf6TU,43
6
+ hpackage-0.2.2.dist-info/top_level.txt,sha256=au0FlTJpTzo_NgO35prAh0v8_tXsWFxyuovLrBg92LY,9
7
+ hpackage-0.2.2.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ hpackage = hpackage:main