Skip to content

Commit 9eff24a

Browse files
committed
Fix figure paths
1 parent 3f9ba57 commit 9eff24a

File tree

5 files changed

+21
-17
lines changed

5 files changed

+21
-17
lines changed

snooty/gizaparser/test_steps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
def test_step() -> None:
10-
project_path, project_config, project_diagnostics = ProjectConfig.open(Path('test_data'))
10+
project_config, project_diagnostics = ProjectConfig.open(Path('test_data'))
1111
assert project_diagnostics == []
1212

1313
category = GizaStepsCategory(project_config)

snooty/parser.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
class JSONVisitor:
2424
"""Node visitor that creates a JSON-serializable structure."""
2525
def __init__(self,
26-
project_root: Path,
26+
source_path: Path,
2727
docpath: PurePath,
2828
document: docutils.nodes.document) -> None:
29-
self.project_root = project_root
29+
self.source_path = source_path
3030
self.docpath = docpath
3131
self.document = document
3232
self.state: List[Dict[str, Any]] = []
@@ -163,7 +163,6 @@ def handle_directive(self, node: docutils.nodes.Node, doc: Dict[str, Serializabl
163163
static_asset = self.add_static_asset(Path(argument_text))
164164
options['checksum'] = static_asset.checksum
165165
except OSError as err:
166-
print(util.get_line(node))
167166
msg = '"figure" could not open "{}": {}'.format(
168167
argument_text, os.strerror(err.errno))
169168
self.diagnostics.append(Diagnostic.error(msg, util.get_line(node)))
@@ -172,7 +171,7 @@ def handle_directive(self, node: docutils.nodes.Node, doc: Dict[str, Serializabl
172171
doc['options'] = options
173172

174173
def add_static_asset(self, path: Path) -> StaticAsset:
175-
fileid, path = util.reroot_path(path, self.docpath, self.project_root)
174+
fileid, path = util.reroot_path(path, self.docpath, self.source_path)
176175
static_asset = StaticAsset.load(fileid.as_posix(), path)
177176
self.static_assets.add(static_asset)
178177
return static_asset
@@ -181,7 +180,7 @@ def add_diagnostics(self, diagnostics: Iterable[Diagnostic]) -> None:
181180
self.diagnostics.extend(diagnostics)
182181

183182
def __make_child_visitor(self) -> 'JSONVisitor':
184-
visitor = type(self)(self.project_root, self.docpath, self.document)
183+
visitor = type(self)(self.source_path, self.docpath, self.document)
185184
visitor.diagnostics = self.diagnostics
186185
return visitor
187186

@@ -253,13 +252,13 @@ def __init__(self,
253252
root: Path,
254253
backend: ProjectBackend) -> None:
255254
root = root.resolve(strict=True)
256-
root, self.config, config_diagnostics = ProjectConfig.open(root)
255+
self.config, config_diagnostics = ProjectConfig.open(root)
257256

258257
if config_diagnostics:
259-
backend.on_diagnostics(root, config_diagnostics)
258+
backend.on_diagnostics(self.config.root, config_diagnostics)
260259
raise ProjectConfigError()
261260

262-
self.root = root
261+
self.root = self.config.source_path
263262
self.parser = rstparser.Parser(self.config, JSONVisitor)
264263
self.static_assets: Dict[PurePath, Set[StaticAsset]] = collections.defaultdict(set)
265264
self.backend = backend

snooty/rstparser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def parse(self, path: Path, text: Optional[str]) -> Tuple[_V, str]:
364364

365365
parser.parse(text, document)
366366

367-
visitor = self.visitor_class(self.project_config.root, path, document)
367+
visitor = self.visitor_class(self.project_config.source_path, path, document)
368368
visitor.add_diagnostics(diagnostics)
369369
document.walkabout(visitor)
370370
return visitor, text

snooty/test_types.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
def test_project() -> None:
66
path = Path('test_data/bad_project')
7-
root_path, project_config, project_diagnostics = ProjectConfig.open(path)
7+
project_config, project_diagnostics = ProjectConfig.open(path)
88
assert len(project_diagnostics) == 1
99
assert project_config.constants == {
1010
'version': '3.4',
@@ -13,11 +13,11 @@ def test_project() -> None:
1313
}
1414

1515
path = Path('test_data/empty_project')
16-
root_path, project_config, project_diagnostics = ProjectConfig.open(path)
16+
project_config, project_diagnostics = ProjectConfig.open(path)
1717
assert project_config.constants == {}
1818

1919
# Test missing project behavior
20-
root_path, project_config, project_diagnostics = ProjectConfig.open(Path('.').resolve())
20+
project_config, project_diagnostics = ProjectConfig.open(Path('.').resolve())
2121
assert project_config.name == 'untitled'
2222
assert len(project_diagnostics) == 0
2323

snooty/types.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,23 +125,28 @@ def get_id(self) -> PurePath:
125125
class ProjectConfig:
126126
root: Path
127127
name: str
128+
source: str = field(default='source')
128129
constants: Dict[str, object] = field(default_factory=dict)
129130

131+
@property
132+
def source_path(self) -> Path:
133+
return self.root.joinpath(self.source)
134+
130135
@classmethod
131-
def open(cls, root: Path) -> Tuple[Path, 'ProjectConfig', List[Diagnostic]]:
136+
def open(cls, root: Path) -> Tuple['ProjectConfig', List[Diagnostic]]:
132137
path = root
133138
while path.parent != path:
134139
try:
135140
with path.joinpath('snooty.toml').open() as f:
136141
data = toml.load(f)
137-
data['root'] = root
142+
data['root'] = path
138143
result, diagnostics = check_type(ProjectConfig, data).render_constants()
139-
return path, result, diagnostics
144+
return result, diagnostics
140145
except FileNotFoundError:
141146
pass
142147
path = path.parent
143148

144-
return root, cls(root, 'untitled'), []
149+
return cls(root, 'untitled'), []
145150

146151
def render_constants(self) -> Tuple['ProjectConfig', List[Diagnostic]]:
147152
if not self.constants:

0 commit comments

Comments
 (0)