Skip to content

Commit 7400d35

Browse files
Merge pull request #2544 from redis/DOC-6100-set-dt-notebooks
DOC-6100 set data type notebooks
2 parents deef1a3 + 7d177f9 commit 7400d35

File tree

16 files changed

+2652
-728
lines changed

16 files changed

+2652
-728
lines changed

build/jupyterize/SPECIFICATION.md

Lines changed: 435 additions & 0 deletions
Large diffs are not rendered by default.

build/jupyterize/config.py

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Configuration management for jupyterize.
4+
5+
Handles loading language-specific configuration and managing Jupyter kernel
6+
specifications.
7+
"""
8+
9+
import json
10+
import logging
11+
import os
12+
13+
14+
# Jupyter kernel specifications for different languages
15+
KERNEL_SPECS = {
16+
'python': {
17+
'name': 'python3',
18+
'display_name': 'Python 3',
19+
'language': 'python',
20+
'language_info': {
21+
'name': 'python',
22+
'version': '3.x.x',
23+
'mimetype': 'text/x-python',
24+
'file_extension': '.py'
25+
}
26+
},
27+
'node.js': {
28+
'name': 'javascript',
29+
'display_name': 'JavaScript (Node.js)',
30+
'language': 'javascript',
31+
'language_info': {
32+
'name': 'javascript',
33+
'version': '20.0.0',
34+
'mimetype': 'application/javascript',
35+
'file_extension': '.js'
36+
}
37+
},
38+
'go': {
39+
'name': 'gophernotes',
40+
'display_name': 'Go',
41+
'language': 'go',
42+
'language_info': {
43+
'name': 'go',
44+
'version': '1.x.x',
45+
'mimetype': 'text/x-go',
46+
'file_extension': '.go'
47+
}
48+
},
49+
'c#': {
50+
'name': '.net-csharp',
51+
'display_name': '.NET (C#)',
52+
'language': 'C#',
53+
'language_info': {
54+
'name': 'C#',
55+
'version': '12.0',
56+
'mimetype': 'text/x-csharp',
57+
'file_extension': '.cs',
58+
'pygments_lexer': 'csharp'
59+
}
60+
},
61+
'java': {
62+
'name': 'java',
63+
'display_name': 'Java',
64+
'language': 'java',
65+
'language_info': {
66+
'name': 'java',
67+
'version': '11.0.0',
68+
'mimetype': 'text/x-java-source',
69+
'file_extension': '.java'
70+
}
71+
},
72+
'php': {
73+
'name': 'php',
74+
'display_name': 'PHP',
75+
'language': 'php',
76+
'language_info': {
77+
'name': 'php',
78+
'version': '8.0.0',
79+
'mimetype': 'application/x-php',
80+
'file_extension': '.php'
81+
}
82+
},
83+
'rust': {
84+
'name': 'rust',
85+
'display_name': 'Rust',
86+
'language': 'rust',
87+
'language_info': {
88+
'name': 'rust',
89+
'version': '1.x.x',
90+
'mimetype': 'text/x-rust',
91+
'file_extension': '.rs'
92+
}
93+
}
94+
}
95+
96+
97+
def load_language_config(language):
98+
"""
99+
Load language-specific configuration from jupyterize_config.json.
100+
101+
Args:
102+
language: Language name (e.g., 'python', 'c#')
103+
104+
Returns:
105+
dict: Configuration for the language, or empty dict if not found
106+
"""
107+
config_file = os.path.join(os.path.dirname(__file__), 'jupyterize_config.json')
108+
if not os.path.exists(config_file):
109+
logging.debug(f"Configuration file not found: {config_file}")
110+
return {}
111+
112+
try:
113+
with open(config_file, 'r', encoding='utf-8') as f:
114+
config = json.load(f)
115+
return config.get(language.lower(), {})
116+
except json.JSONDecodeError as e:
117+
logging.warning(f"Failed to parse configuration file: {e}")
118+
return {}
119+
except Exception as e:
120+
logging.warning(f"Error loading configuration: {e}")
121+
return {}
122+
123+
124+
def get_kernel_spec(language):
125+
"""
126+
Get kernel specification for a language.
127+
128+
Args:
129+
language: Language name (e.g., 'python', 'c#')
130+
131+
Returns:
132+
dict: Kernel specification, or None if not found
133+
134+
Raises:
135+
ValueError: If language is not supported
136+
"""
137+
kernel_spec = KERNEL_SPECS.get(language.lower())
138+
if not kernel_spec:
139+
raise ValueError(f"No kernel specification for language: {language}")
140+
return kernel_spec
141+

0 commit comments

Comments
 (0)