|
3 | 3 | from dataclasses import dataclass |
4 | 4 | from datetime import datetime |
5 | 5 | from functools import partial |
| 6 | +from io import StringIO |
6 | 7 | from math import log2 |
7 | 8 | from os import PathLike |
8 | 9 | from pathlib import Path |
@@ -164,18 +165,13 @@ def from_url( |
164 | 165 |
|
165 | 166 | response = requests.get(url, timeout=timeout) |
166 | 167 | text = response.text |
167 | | - |
168 | | - device = read_schema(text, include_common_registers) |
169 | | - if base_path is None: |
170 | | - base_path = Path(device.device).absolute().resolve() |
171 | | - else: |
172 | | - base_path = Path(base_path).absolute().resolve() |
173 | | - |
174 | | - reg_readers = { |
175 | | - name: _create_register_handler(device, name, _ReaderParams(base_path, epoch, keep_type)) |
176 | | - for name in device.registers.keys() |
177 | | - } |
178 | | - return cls(device, reg_readers) |
| 168 | + return cls.from_str( |
| 169 | + text, |
| 170 | + base_path=base_path, |
| 171 | + include_common_registers=include_common_registers, |
| 172 | + epoch=epoch, |
| 173 | + keep_type=keep_type, |
| 174 | + ) |
179 | 175 |
|
180 | 176 | @classmethod |
181 | 177 | def from_str( |
@@ -211,12 +207,12 @@ def from_str( |
211 | 207 | can be accessed using dot notation using the name of the register as the |
212 | 208 | key. |
213 | 209 | """ |
214 | | - |
215 | | - device = read_schema(schema, include_common_registers) |
| 210 | + device = read_schema(StringIO(schema), include_common_registers) |
216 | 211 | if base_path is None: |
217 | 212 | base_path = Path(device.device).absolute().resolve() |
218 | 213 | else: |
219 | 214 | base_path = Path(base_path).absolute().resolve() |
| 215 | + base_path = base_path / device.device |
220 | 216 |
|
221 | 217 | reg_readers = { |
222 | 218 | name: _create_register_handler(device, name, _ReaderParams(base_path, epoch, keep_type)) |
@@ -258,6 +254,7 @@ def from_model( |
258 | 254 | base_path = Path(model.device).absolute().resolve() |
259 | 255 | else: |
260 | 256 | base_path = Path(base_path).absolute().resolve() |
| 257 | + base_path = base_path / model.device |
261 | 258 |
|
262 | 259 | reg_readers = { |
263 | 260 | name: _create_register_handler(model, name, _ReaderParams(base_path, epoch, keep_type)) |
|
0 commit comments