Skip to content

Commit 8225ed6

Browse files
authored
Merge pull request #60 from martindurant/hf
Add minimal hf (read license)
2 parents 2fa5358 + 3bc911d commit 8225ed6

File tree

5 files changed

+44
-4
lines changed

5 files changed

+44
-4
lines changed

docs/source/api.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ User Classes
4242
proj.documentation.MDBook
4343
proj.documentation.RTD
4444
proj.git.GitRepo
45+
proj.hf.HuggingFaceRepo
4546
proj.ide.JetbrainsIDE
4647
proj.ide.NvidiaAIWorkbench
4748
proj.ide.VSCode
@@ -77,6 +78,7 @@ User Classes
7778
.. autoclass:: projspec.proj.documentation.MDBook
7879
.. autoclass:: projspec.proj.documentation.RTD
7980
.. autoclass:: projspec.proj.git.GitRepo
81+
.. autoclass:: projspec.proj.hf.HuggingFaceRepo
8082
.. autoclass:: projspec.proj.ide.JetbrainsIDE
8183
.. autoclass:: projspec.proj.ide.NvidiaAIWorkbench
8284
.. autoclass:: projspec.proj.ide.VSCode

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ dependencies = [
2828
"toml",
2929
"fsspec",
3030
"click",
31-
"jinja2"
31+
"jinja2",
3232
]
3333

3434
[project.optional-dependencies]

src/projspec/proj/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from projspec.proj.documentation import RTD, MDBook
77
from projspec.proj.git import GitRepo
88
from projspec.proj.golang import Golang
9+
from projspec.proj.hf import HuggingFaceRepo
910
from projspec.proj.ide import JetbrainsIDE, NvidiaAIWorkbench, VSCode
1011
from projspec.proj.node import JLabExtension, Node, Yarn
1112
from projspec.proj.pixi import Pixi
@@ -25,6 +26,7 @@
2526
"CondaProject",
2627
"Golang",
2728
"GitRepo",
29+
"HuggingFaceRepo",
2830
"JetbrainsIDE",
2931
"JLabExtension",
3032
"Marimo",

src/projspec/proj/hf.py

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,47 @@ def match(self) -> bool:
1818
return self.proj.fs.exists(readme)
1919

2020
def parse(self) -> None:
21-
# for now, we just stash the metadata declaration
21+
from projspec.content.metadata import DescriptiveMetadata, License
2222
import yaml
2323

2424
readme = f"{self.proj.url}/README.md"
2525

26-
with self.proj.fs.open(readme) as f:
26+
with self.proj.fs.open(readme, "rt") as f:
2727
txt = f.read()
2828
meta = txt.split("---\n")[1]
29-
self.meta = yaml.safe_load(StringIO(meta))
29+
meta = yaml.safe_load(StringIO(meta))
30+
if "licence" in meta:
31+
self.contents["license"] = License(
32+
proj=self.proj,
33+
shortname=meta["licence"],
34+
fullname=meta.get("license_name"),
35+
url=meta.get("license_link"),
36+
artifacts=set(),
37+
)
38+
self.contents["desciptive_metadata"] = DescriptiveMetadata(
39+
proj=self.proj,
40+
meta={
41+
k: meta[k] for k in ["language", "library_name", "tags"] if k in meta
42+
},
43+
artifacts=set(),
44+
)
45+
46+
@staticmethod
47+
def _create(path: str) -> None:
48+
with open(f"{path}/README.md", "w") as f:
49+
f.write(
50+
"""---
51+
license: other
52+
license_name: coqui-public-model-license
53+
license_link: https://coqui.ai/cpml
54+
library_name: flair
55+
tags:
56+
- flair
57+
base_model: HuggingFaceH4/zephyr-7b-beta
58+
new_version: 0.1
59+
datasets:
60+
- stanfordnlp/imdb
61+
- HuggingFaceFW/fineweb
62+
---
63+
"""
64+
)

tests/test_roundtrips.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"dash",
2222
"panel",
2323
"Golang",
24+
"HuggingFaceRepo",
2425
],
2526
)
2627
def test_compliant(tmpdir, cls_name):

0 commit comments

Comments
 (0)