mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-08 18:44:10 +00:00
run generate-scope-table.py without jupyterhub deps
This commit is contained in:
@@ -14,26 +14,52 @@ The files are:
|
|||||||
scopes descriptions are updated in it.
|
scopes descriptions are updated in it.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from subprocess import run
|
|
||||||
|
|
||||||
from pytablewriter import MarkdownTableWriter
|
from pytablewriter import MarkdownTableWriter
|
||||||
from ruamel.yaml import YAML
|
from ruamel.yaml import YAML
|
||||||
|
|
||||||
|
HERE = Path(__file__).parent.absolute()
|
||||||
|
DOCS = HERE / ".." / ".."
|
||||||
|
REST_API_YAML = DOCS.joinpath("source", "_static", "rest-api.yml")
|
||||||
|
SCOPE_TABLE_MD = HERE.joinpath("scope-table.md")
|
||||||
|
|
||||||
|
|
||||||
|
def _load_jupyterhub_info():
|
||||||
|
"""
|
||||||
|
The equivalent of
|
||||||
|
|
||||||
from jupyterhub import __version__
|
from jupyterhub import __version__
|
||||||
from jupyterhub.scopes import scope_definitions
|
from jupyterhub.scopes import scope_definitions
|
||||||
|
|
||||||
HERE = os.path.abspath(os.path.dirname(__file__))
|
but without needing to install JupyterHub and dependencies
|
||||||
DOCS = Path(HERE).parent.parent.absolute()
|
so that we can run this pre-commit
|
||||||
REST_API_YAML = DOCS.joinpath("source", "_static", "rest-api.yml")
|
"""
|
||||||
SCOPE_TABLE_MD = Path(HERE).joinpath("scope-table.md")
|
root = HERE / ".." / ".." / ".."
|
||||||
|
g = {}
|
||||||
|
exec((root / "jupyterhub" / "_version.py").read_text(), g)
|
||||||
|
|
||||||
|
# To avoid parsing the whole of scope_definitions.py just pull out
|
||||||
|
# the relevant lines
|
||||||
|
scopes_file = root / "jupyterhub" / "scopes.py"
|
||||||
|
scopes_lines = []
|
||||||
|
for line in scopes_file.read_text().splitlines():
|
||||||
|
if not scopes_lines and line == "scope_definitions = {":
|
||||||
|
scopes_lines.append(line)
|
||||||
|
elif scopes_lines:
|
||||||
|
scopes_lines.append(line)
|
||||||
|
if line == "}":
|
||||||
|
break
|
||||||
|
|
||||||
|
exec("\n".join(scopes_lines), g)
|
||||||
|
|
||||||
|
return g["__version__"], g["scope_definitions"]
|
||||||
|
|
||||||
|
|
||||||
class ScopeTableGenerator:
|
class ScopeTableGenerator:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.scopes = scope_definitions
|
self.version, self.scopes = _load_jupyterhub_info()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_writer(cls, table_name, headers, values):
|
def create_writer(cls, table_name, headers, values):
|
||||||
@@ -131,7 +157,7 @@ class ScopeTableGenerator:
|
|||||||
with open(filename) as f:
|
with open(filename) as f:
|
||||||
content = yaml.load(f.read())
|
content = yaml.load(f.read())
|
||||||
|
|
||||||
content["info"]["version"] = __version__
|
content["info"]["version"] = self.version
|
||||||
for scope in self.scopes:
|
for scope in self.scopes:
|
||||||
description = self.scopes[scope]['description']
|
description = self.scopes[scope]['description']
|
||||||
doc_description = self.scopes[scope].get('doc_description', '')
|
doc_description = self.scopes[scope].get('doc_description', '')
|
||||||
@@ -145,12 +171,6 @@ class ScopeTableGenerator:
|
|||||||
with open(filename, 'w') as f:
|
with open(filename, 'w') as f:
|
||||||
yaml.dump(content, f)
|
yaml.dump(content, f)
|
||||||
|
|
||||||
run(
|
|
||||||
['pre-commit', 'run', 'prettier', '--files', filename],
|
|
||||||
cwd=HERE,
|
|
||||||
check=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
table_generator = ScopeTableGenerator()
|
table_generator = ScopeTableGenerator()
|
||||||
|
Reference in New Issue
Block a user