Spaces:
Sleeping
Sleeping
Commit ·
cc5137a
1
Parent(s): d073844
Use template space in new_project
Browse files
main.py
CHANGED
|
@@ -142,7 +142,7 @@ class HF:
|
|
| 142 |
def user(self) -> str | None:
|
| 143 |
return self._user
|
| 144 |
|
| 145 |
-
async def create(self, name: str, secrets: dict[str, str] | None = None) -> dict[str, Any]:
|
| 146 |
if not self._ok:
|
| 147 |
return {"error": "no hf token"}
|
| 148 |
try:
|
|
@@ -150,13 +150,24 @@ class HF:
|
|
| 150 |
sn = name.lower().replace(" ", "-").replace("_", "-")
|
| 151 |
rid = f"{self._user}/{sn}"
|
| 152 |
async with httpx.AsyncClient() as c:
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
if not r.is_success:
|
| 159 |
return {"error": r.text[:200]}
|
|
|
|
| 160 |
if secrets:
|
| 161 |
for k, v in secrets.items():
|
| 162 |
await c.post(
|
|
@@ -263,6 +274,7 @@ async def new_project(body: CreateIn):
|
|
| 263 |
sp = await hf.create(
|
| 264 |
body.name or f"oc-{e.id}",
|
| 265 |
{"HF_TOKEN": os.environ.get("HF_TOKEN", ""), "PROJECT": e.id},
|
|
|
|
| 266 |
)
|
| 267 |
if "error" not in sp:
|
| 268 |
e.space_id = sp["space"]
|
|
|
|
| 142 |
def user(self) -> str | None:
|
| 143 |
return self._user
|
| 144 |
|
| 145 |
+
async def create(self, name: str, secrets: dict[str, str] | None = None, template_repo: str | None = None) -> dict[str, Any]:
|
| 146 |
if not self._ok:
|
| 147 |
return {"error": "no hf token"}
|
| 148 |
try:
|
|
|
|
| 150 |
sn = name.lower().replace(" ", "-").replace("_", "-")
|
| 151 |
rid = f"{self._user}/{sn}"
|
| 152 |
async with httpx.AsyncClient() as c:
|
| 153 |
+
if template_repo:
|
| 154 |
+
# Duplicate from template
|
| 155 |
+
r = await c.post(
|
| 156 |
+
f"https://huggingface.co/api/repos/{template_repo}/duplicate",
|
| 157 |
+
headers={"Authorization": f"Bearer {self._token}", "Content-Type": "application/json"},
|
| 158 |
+
json={"name": sn, "type": "space"},
|
| 159 |
+
)
|
| 160 |
+
else:
|
| 161 |
+
# Create blank
|
| 162 |
+
r = await c.post(
|
| 163 |
+
"https://huggingface.co/api/repos/create",
|
| 164 |
+
headers={"Authorization": f"Bearer {self._token}", "Content-Type": "application/json"},
|
| 165 |
+
json={"name": sn, "type": "space", "sdk": "docker"},
|
| 166 |
+
)
|
| 167 |
+
|
| 168 |
if not r.is_success:
|
| 169 |
return {"error": r.text[:200]}
|
| 170 |
+
|
| 171 |
if secrets:
|
| 172 |
for k, v in secrets.items():
|
| 173 |
await c.post(
|
|
|
|
| 274 |
sp = await hf.create(
|
| 275 |
body.name or f"oc-{e.id}",
|
| 276 |
{"HF_TOKEN": os.environ.get("HF_TOKEN", ""), "PROJECT": e.id},
|
| 277 |
+
template_repo="asterioskryos/opencode-agent-template"
|
| 278 |
)
|
| 279 |
if "error" not in sp:
|
| 280 |
e.space_id = sp["space"]
|