shepherd-core 2023.12.1__py3-none-any.whl → 2024.4.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- shepherd_core/__init__.py +3 -2
- shepherd_core/data_models/base/calibration.py +3 -1
- shepherd_core/data_models/base/content.py +11 -4
- shepherd_core/data_models/base/shepherd.py +2 -0
- shepherd_core/data_models/content/energy_environment.py +1 -1
- shepherd_core/data_models/content/virtual_harvester.py +1 -1
- shepherd_core/data_models/content/virtual_source.py +18 -13
- shepherd_core/data_models/experiment/experiment.py +10 -10
- shepherd_core/data_models/experiment/observer_features.py +5 -6
- shepherd_core/data_models/task/observer_tasks.py +1 -1
- shepherd_core/data_models/task/testbed_tasks.py +7 -3
- shepherd_core/data_models/testbed/cape.py +1 -1
- shepherd_core/data_models/testbed/gpio.py +1 -1
- shepherd_core/data_models/testbed/mcu.py +1 -1
- shepherd_core/data_models/testbed/observer.py +1 -1
- shepherd_core/data_models/testbed/target.py +1 -1
- shepherd_core/data_models/testbed/testbed.py +1 -1
- shepherd_core/decoder_waveform/uart.py +1 -0
- shepherd_core/fw_tools/validation.py +1 -2
- shepherd_core/inventory/__init__.py +51 -1
- shepherd_core/inventory/system.py +8 -0
- shepherd_core/reader.py +19 -16
- shepherd_core/testbed_client/cache_path.py +15 -0
- shepherd_core/testbed_client/client.py +2 -3
- shepherd_core/testbed_client/fixtures.py +4 -1
- shepherd_core/testbed_client/user_model.py +6 -4
- shepherd_core/vsource/virtual_converter_model.py +1 -1
- shepherd_core/vsource/virtual_harvester_model.py +1 -0
- shepherd_core/vsource/virtual_source_model.py +1 -0
- shepherd_core/writer.py +5 -2
- {shepherd_core-2023.12.1.dist-info → shepherd_core-2024.4.1.dist-info}/METADATA +49 -34
- shepherd_core-2024.4.1.dist-info/RECORD +64 -0
- {shepherd_core-2023.12.1.dist-info → shepherd_core-2024.4.1.dist-info}/WHEEL +1 -1
- {shepherd_core-2023.12.1.dist-info → shepherd_core-2024.4.1.dist-info}/top_level.txt +0 -1
- shepherd_core/data_models/content/_external_fixtures.yaml +0 -394
- shepherd_core/data_models/content/energy_environment_fixture.yaml +0 -50
- shepherd_core/data_models/content/virtual_harvester_fixture.yaml +0 -159
- shepherd_core/data_models/content/virtual_source_fixture.yaml +0 -229
- shepherd_core/data_models/testbed/cape_fixture.yaml +0 -94
- shepherd_core/data_models/testbed/gpio_fixture.yaml +0 -166
- shepherd_core/data_models/testbed/mcu_fixture.yaml +0 -19
- shepherd_core/data_models/testbed/observer_fixture.yaml +0 -220
- shepherd_core/data_models/testbed/target_fixture.yaml +0 -137
- shepherd_core/data_models/testbed/testbed_fixture.yaml +0 -25
- shepherd_core-2023.12.1.dist-info/RECORD +0 -117
- tests/__init__.py +0 -0
- tests/conftest.py +0 -64
- tests/data_models/__init__.py +0 -0
- tests/data_models/conftest.py +0 -14
- tests/data_models/example_cal_data.yaml +0 -31
- tests/data_models/example_cal_data_faulty.yaml +0 -29
- tests/data_models/example_cal_meas.yaml +0 -178
- tests/data_models/example_cal_meas_faulty1.yaml +0 -142
- tests/data_models/example_cal_meas_faulty2.yaml +0 -136
- tests/data_models/example_config_emulator.yaml +0 -41
- tests/data_models/example_config_experiment.yaml +0 -16
- tests/data_models/example_config_experiment_alternative.yaml +0 -14
- tests/data_models/example_config_harvester.yaml +0 -15
- tests/data_models/example_config_testbed.yaml +0 -26
- tests/data_models/example_config_virtsource.yaml +0 -78
- tests/data_models/test_base_models.py +0 -205
- tests/data_models/test_content_fixtures.py +0 -41
- tests/data_models/test_content_models.py +0 -282
- tests/data_models/test_examples.py +0 -48
- tests/data_models/test_experiment_models.py +0 -277
- tests/data_models/test_task_generation.py +0 -52
- tests/data_models/test_task_models.py +0 -131
- tests/data_models/test_testbed_fixtures.py +0 -47
- tests/data_models/test_testbed_models.py +0 -187
- tests/decoder_waveform/__init__.py +0 -0
- tests/decoder_waveform/test_decoder.py +0 -34
- tests/fw_tools/__init__.py +0 -0
- tests/fw_tools/conftest.py +0 -5
- tests/fw_tools/test_converter.py +0 -76
- tests/fw_tools/test_patcher.py +0 -66
- tests/fw_tools/test_validation.py +0 -56
- tests/inventory/__init__.py +0 -0
- tests/inventory/test_inventory.py +0 -20
- tests/test_cal_hw.py +0 -34
- tests/test_examples.py +0 -40
- tests/test_logger.py +0 -15
- tests/test_reader.py +0 -283
- tests/test_writer.py +0 -169
- tests/testbed_client/__init__.py +0 -0
- tests/vsource/__init__.py +0 -0
- tests/vsource/conftest.py +0 -49
- tests/vsource/test_converter.py +0 -161
- tests/vsource/test_harvester.py +0 -73
- tests/vsource/test_z.py +0 -5
- {shepherd_core-2023.12.1.dist-info → shepherd_core-2024.4.1.dist-info}/zip-safe +0 -0
|
@@ -41,8 +41,7 @@ class TestbedClient:
|
|
|
41
41
|
|
|
42
42
|
@validate_call
|
|
43
43
|
def connect(self, server: Optional[str] = None, token: Union[str, Path, None] = None) -> bool:
|
|
44
|
-
"""
|
|
45
|
-
server: either "local" to use demo-fixtures or something like "https://HOST:PORT"
|
|
44
|
+
"""server: either "local" to use demo-fixtures or something like "https://HOST:PORT"
|
|
46
45
|
token: your account validation
|
|
47
46
|
"""
|
|
48
47
|
if isinstance(token, Path):
|
|
@@ -120,7 +119,7 @@ class TestbedClient:
|
|
|
120
119
|
return self._fixtures[model_type].inheritance(values)
|
|
121
120
|
|
|
122
121
|
def try_completing_model(self, model_type: str, values: dict) -> (dict, list):
|
|
123
|
-
"""
|
|
122
|
+
"""Init by name/id, for none existing instances raise Exception"""
|
|
124
123
|
if len(values) == 1 and next(iter(values.keys())) in {"id", "name"}:
|
|
125
124
|
value = next(iter(values.values()))
|
|
126
125
|
if (
|
|
@@ -18,6 +18,7 @@ from ..data_models.base.timezone import local_now
|
|
|
18
18
|
from ..data_models.base.timezone import local_tz
|
|
19
19
|
from ..data_models.base.wrapper import Wrapper
|
|
20
20
|
from ..logger import logger
|
|
21
|
+
from .cache_path import cache_user_path
|
|
21
22
|
|
|
22
23
|
# Proposed field-name:
|
|
23
24
|
# - inheritance
|
|
@@ -174,10 +175,11 @@ class Fixtures:
|
|
|
174
175
|
else:
|
|
175
176
|
self.file_path = file_path
|
|
176
177
|
self.components: Dict[str, Fixture] = {}
|
|
177
|
-
save_path =
|
|
178
|
+
save_path = cache_user_path / "fixtures.pickle"
|
|
178
179
|
|
|
179
180
|
if save_path.exists() and not file_older_than(save_path, timedelta(hours=24)) and not reset:
|
|
180
181
|
# speedup
|
|
182
|
+
# TODO: also add version as criterion
|
|
181
183
|
with save_path.open("rb", buffering=-1) as fd:
|
|
182
184
|
self.components = pickle.load(fd) # noqa: S301
|
|
183
185
|
logger.debug(" -> found & used pickled fixtures")
|
|
@@ -192,6 +194,7 @@ class Fixtures:
|
|
|
192
194
|
for file in files:
|
|
193
195
|
self.insert_file(file)
|
|
194
196
|
|
|
197
|
+
save_path.parent.mkdir(parents=True, exist_ok=True)
|
|
195
198
|
with save_path.open("wb", buffering=-1) as fd:
|
|
196
199
|
pickle.dump(self.components, fd)
|
|
197
200
|
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import secrets
|
|
2
2
|
from hashlib import pbkdf2_hmac
|
|
3
3
|
from typing import Optional
|
|
4
|
+
from typing import Union
|
|
5
|
+
from uuid import uuid4
|
|
4
6
|
|
|
7
|
+
from pydantic import UUID4
|
|
5
8
|
from pydantic import EmailStr
|
|
6
9
|
from pydantic import Field
|
|
7
10
|
from pydantic import SecretBytes
|
|
@@ -11,10 +14,8 @@ from pydantic import model_validator
|
|
|
11
14
|
from pydantic import validate_call
|
|
12
15
|
from typing_extensions import Annotated
|
|
13
16
|
|
|
14
|
-
from ..data_models.base.content import IdInt
|
|
15
17
|
from ..data_models.base.content import NameStr
|
|
16
18
|
from ..data_models.base.content import SafeStr
|
|
17
|
-
from ..data_models.base.content import id_default
|
|
18
19
|
from ..data_models.base.shepherd import ShpModel
|
|
19
20
|
|
|
20
21
|
|
|
@@ -34,9 +35,10 @@ def hash_password(pw: Annotated[str, StringConstraints(min_length=20, max_length
|
|
|
34
35
|
class User(ShpModel):
|
|
35
36
|
"""meta-data representation of a testbed-component (physical object)"""
|
|
36
37
|
|
|
37
|
-
id:
|
|
38
|
+
# id: UUID4 = Field( # TODO db-migration - temp fix for documentation
|
|
39
|
+
id: Union[UUID4, int] = Field(
|
|
38
40
|
description="Unique ID",
|
|
39
|
-
default_factory=
|
|
41
|
+
default_factory=uuid4,
|
|
40
42
|
)
|
|
41
43
|
name: NameStr
|
|
42
44
|
description: Optional[SafeStr] = None
|
shepherd_core/writer.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"""Writer that inherits from Reader-Baseclass
|
|
2
|
-
|
|
1
|
+
"""Writer that inherits from Reader-Baseclass"""
|
|
2
|
+
|
|
3
3
|
import logging
|
|
4
4
|
import math
|
|
5
5
|
import pathlib
|
|
@@ -87,6 +87,7 @@ class Writer(Reader):
|
|
|
87
87
|
otherwise a unique name will be found
|
|
88
88
|
compression: (str) use either None, lzf or "1" (gzips compression level)
|
|
89
89
|
verbose: (bool) provides more debug-info
|
|
90
|
+
|
|
90
91
|
"""
|
|
91
92
|
|
|
92
93
|
comp_default: int = 1
|
|
@@ -285,6 +286,7 @@ class Writer(Reader):
|
|
|
285
286
|
timestamp: just start of buffer or whole ndarray
|
|
286
287
|
voltage: ndarray as raw unsigned integers
|
|
287
288
|
current: ndarray as raw unsigned integers
|
|
289
|
+
|
|
288
290
|
"""
|
|
289
291
|
len_new = min(voltage.size, current.size)
|
|
290
292
|
|
|
@@ -326,6 +328,7 @@ class Writer(Reader):
|
|
|
326
328
|
-> provide start of buffer or whole ndarray
|
|
327
329
|
voltage: ndarray in physical-unit V
|
|
328
330
|
current: ndarray in physical-unit A
|
|
331
|
+
|
|
329
332
|
"""
|
|
330
333
|
timestamp = self._cal.time.si_to_raw(timestamp)
|
|
331
334
|
voltage = self._cal.voltage.si_to_raw(voltage)
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
|
-
Name:
|
|
3
|
-
Version:
|
|
2
|
+
Name: shepherd_core
|
|
3
|
+
Version: 2024.4.1
|
|
4
4
|
Summary: Programming- and CLI-Interface for the h5-dataformat of the Shepherd-Testbed
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Project-URL: Tracker, https://github.com/orgua/shepherd-datalib/issues
|
|
11
|
-
Project-URL: Source, https://github.com/orgua/shepherd-datalib
|
|
5
|
+
Author-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
6
|
+
Maintainer-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
7
|
+
Project-URL: Documentation, https://github.com/orgua/shepherd-datalib/blob/main/README.md
|
|
8
|
+
Project-URL: Issues, https://github.com/orgua/shepherd-datalib/issues
|
|
9
|
+
Project-URL: Source, https://pypi.org/project/shepherd-core/
|
|
12
10
|
Keywords: testbed,beaglebone,pru,batteryless,energyharvesting,solar
|
|
13
11
|
Platform: unix
|
|
14
12
|
Platform: linux
|
|
@@ -35,8 +33,8 @@ Requires-Dist: numpy
|
|
|
35
33
|
Requires-Dist: pyYAML
|
|
36
34
|
Requires-Dist: chromalog
|
|
37
35
|
Requires-Dist: pydantic[email] >2.0.0
|
|
38
|
-
Requires-Dist: tqdm
|
|
39
36
|
Requires-Dist: scipy
|
|
37
|
+
Requires-Dist: tqdm
|
|
40
38
|
Requires-Dist: intelhex
|
|
41
39
|
Requires-Dist: requests
|
|
42
40
|
Requires-Dist: pyelftools
|
|
@@ -63,7 +61,7 @@ Requires-Dist: coverage ; extra == 'test'
|
|
|
63
61
|
[](https://github.com/orgua/shepherd-datalib/actions/workflows/py_unittest.yml)
|
|
64
62
|
[](https://github.com/astral-sh/ruff)
|
|
65
63
|
|
|
66
|
-
**Documentation**: <https://orgua.github.io/shepherd
|
|
64
|
+
**Main Documentation**: <https://orgua.github.io/shepherd>
|
|
67
65
|
|
|
68
66
|
**Source Code**: <https://github.com/orgua/shepherd-datalib>
|
|
69
67
|
|
|
@@ -71,53 +69,42 @@ Requires-Dist: coverage ; extra == 'test'
|
|
|
71
69
|
|
|
72
70
|
---
|
|
73
71
|
|
|
74
|
-
|
|
72
|
+
`shepherd-core` is designed as a library and bundles data-models and file-access-routines for the shepherd-testbed, that are used by several codebases.
|
|
75
73
|
|
|
76
|
-
For postprocessing shepherds .h5-files
|
|
74
|
+
For postprocessing shepherds .h5-files usage of [shepherd_data](https://pypi.org/project/shepherd_data) is recommended.
|
|
77
75
|
|
|
78
76
|
## Features
|
|
79
77
|
|
|
80
78
|
- read and write shepherds hdf5-files
|
|
81
|
-
- create, read, write and convert experiments for the testbed
|
|
79
|
+
- create, read, write and convert experiments for the testbed
|
|
80
|
+
- all required data-models are included
|
|
82
81
|
- simulate the virtual source, including virtual harvesters (and virtual converter as a whole)
|
|
83
|
-
- connect and query the testbed via a webclient (TestbedClient)
|
|
82
|
+
- connect and query the testbed via a webclient (TestbedClient in alpha-stage)
|
|
84
83
|
- offline usage defaults to static demo-fixtures loaded from yaml-files in the model-directories
|
|
85
84
|
- work with target-firmwares
|
|
86
85
|
- embed, modify, verify, convert
|
|
87
86
|
- **Note**: working with ELF-files requires external dependencies, see ``Installation``-Chapter
|
|
88
87
|
- decode waveforms (gpio-state & timestamp) to UART
|
|
89
|
-
- create an inventory (
|
|
88
|
+
- create an inventory (for deployed versions of software, hardware)
|
|
90
89
|
|
|
91
|
-
See [
|
|
90
|
+
See [official documentation](https://orgua.github.io/shepherd) or [example scripts](https://github.com/orgua/shepherd-datalib/tree/main/shepherd_core/examples) for more details and usage. Most functionality is showcased in both. The [extra](https://github.com/orgua/shepherd-datalib/tree/main/shepherd_core/extra)-directory holds data-generators relevant for the testbed. Notably is a [trafficbench](https://github.com/orgua/TrafficBench)-experiment that's used to derive the link-matrix of the testbed-nodes.
|
|
92
91
|
|
|
93
|
-
|
|
92
|
+
## Config-Models in Detail
|
|
94
93
|
|
|
95
|
-
|
|
96
|
-
|---------|--------------|--------------------------------------------|
|
|
97
|
-
| Ubuntu | 3.8 - 3.12 | |
|
|
98
|
-
| Windows | 3.8 - 3.12 | no support for elf and hex-conversions yet |
|
|
99
|
-
| MacOS | 3.8 - 3.12 | hex-conversion missing |
|
|
94
|
+
These pydantic data-models are used throughout all shepherd interfaces. Users can create an experiment, include their own content and feed it to the testbed.
|
|
100
95
|
|
|
101
|
-
|
|
102
|
-
- hex-conversion needs a working and accessible objcopy
|
|
103
|
-
- elf-supports needs
|
|
104
|
-
- ``shepherd-core[elf]`` installs ``pwntools-elf-only``
|
|
105
|
-
- most elf-features also still utilize hex-conversion
|
|
106
|
-
|
|
107
|
-
### Data-Models in Detail
|
|
108
|
-
|
|
109
|
-
- new orchestration ``/data-models`` with focus on remote shepherd-testbed
|
|
96
|
+
- orchestration ``/data-models`` with focus on remote shepherd-testbed
|
|
110
97
|
- classes of sub-models
|
|
111
98
|
- ``/base``: base-classes, configuration and -functionality for all models
|
|
112
99
|
- ``/testbed``: meta-data representation of all testbed-components
|
|
113
|
-
- ``/content``: reusable meta-data for fw, h5 and vsrc-definitions
|
|
100
|
+
- ``/content``: reusable user-defined meta-data for fw, h5 and vsrc-definitions
|
|
114
101
|
- ``/experiment``: configuration-models including sub-systems
|
|
115
102
|
- ``/task``: digestible configs for shepherd-herd or -sheep
|
|
116
103
|
- behavior controlled by ``ShpModel`` and ``content``-model
|
|
117
104
|
- a basic database is available as fixtures through a ``tb_client``
|
|
118
105
|
- fixtures selectable by name & ID
|
|
119
106
|
- fixtures support inheritance
|
|
120
|
-
- models support
|
|
107
|
+
- the models support
|
|
121
108
|
- auto-completion with neutral / sensible values
|
|
122
109
|
- complex and custom datatypes (i.e. PositiveInt, lists-checks on length)
|
|
123
110
|
- checking of inputs and type-casting
|
|
@@ -130,6 +117,20 @@ Notes:
|
|
|
130
117
|
- exposes no internal paths
|
|
131
118
|
- experiments can be transformed to task-sets (``TestbedTasks.from_xp()``)
|
|
132
119
|
|
|
120
|
+
## Compatibility
|
|
121
|
+
|
|
122
|
+
| OS | PyVersion | Comment |
|
|
123
|
+
|---------|--------------|--------------------------------------------|
|
|
124
|
+
| Ubuntu | 3.8 - 3.12 | |
|
|
125
|
+
| Windows | 3.8 - 3.12 | no support for elf and hex-conversions yet |
|
|
126
|
+
| MacOS | 3.8 - 3.12 | hex-conversion missing |
|
|
127
|
+
|
|
128
|
+
Notes:
|
|
129
|
+
- hex-conversion needs a working and accessible objcopy
|
|
130
|
+
- elf-supports needs
|
|
131
|
+
- ``shepherd-core[elf]`` installs ``pwntools-elf-only``
|
|
132
|
+
- most elf-features also still utilize hex-conversion
|
|
133
|
+
|
|
133
134
|
## Installation
|
|
134
135
|
|
|
135
136
|
The Library is available via PyPI and can be installed with
|
|
@@ -166,3 +167,17 @@ For creating an inventory of the host-system you should install
|
|
|
166
167
|
```shell
|
|
167
168
|
pip install shepherd-core[inventory]
|
|
168
169
|
```
|
|
170
|
+
|
|
171
|
+
## Unittests
|
|
172
|
+
|
|
173
|
+
To run the testbench, follow these steps:
|
|
174
|
+
|
|
175
|
+
1. Navigate your host-shell into the package-folder and
|
|
176
|
+
2. install dependencies
|
|
177
|
+
3. run the testbench (~ 320 tests):
|
|
178
|
+
|
|
179
|
+
```Shell
|
|
180
|
+
cd shepherd-datalib/shepherd_core
|
|
181
|
+
pip3 install ./[tests]
|
|
182
|
+
pytest
|
|
183
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
shepherd_core/__init__.py,sha256=UPDbfToRQ7BvvtGOE2ogINDK22SdlYdS3Z4TQp9JLUI,1358
|
|
2
|
+
shepherd_core/calibration_hw_def.py,sha256=VBPgekKtoA6xc5pLOADGdAIuJUNz5kdDf3pm3A13F0U,2158
|
|
3
|
+
shepherd_core/commons.py,sha256=8HLrOq30Zrgh0AcrtakJYyu3hwMgQks7mF7JyaBMcdw,170
|
|
4
|
+
shepherd_core/logger.py,sha256=mIJQ5eCpamsCnc_R7qoceYVXe8JM4-YZriqfzvTt9Yk,1656
|
|
5
|
+
shepherd_core/reader.py,sha256=NPpyMa0aArTyfz1vPHNbIzOGZQxkii96JUMX3jZ6_dY,26082
|
|
6
|
+
shepherd_core/writer.py,sha256=VeBqJZYw6M5CeswPaYWWeAjtQ2xH9ROqA6ziEBK-Npg,14355
|
|
7
|
+
shepherd_core/data_models/__init__.py,sha256=mem0m4nZY3EgG1ctBdGGGt128lhmglF9a4e5w9OGJu0,1651
|
|
8
|
+
shepherd_core/data_models/doc_virtual_source.py,sha256=KizMcfGKj7BnHIbaJHT7KeTF01SV__UXv01qV_DGHSs,6057
|
|
9
|
+
shepherd_core/data_models/base/__init__.py,sha256=ugVEWXfYRCmK4o94RG4N_GKR7AbBQLfn5PCbEKVpZMU,44
|
|
10
|
+
shepherd_core/data_models/base/cal_measurement.py,sha256=ZlSnHXOiY--AzQ1-g0BnU7I4g9sMDqF3g52jsl5IHDY,2873
|
|
11
|
+
shepherd_core/data_models/base/calibration.py,sha256=QTUGpW_YZ4slvfzUwkImp67u13gX90r5ua_qgbVPRXw,9711
|
|
12
|
+
shepherd_core/data_models/base/content.py,sha256=oCefaykxq9HnuRe-6ruk_hC96WECZldriBFeX-PBb8M,2254
|
|
13
|
+
shepherd_core/data_models/base/shepherd.py,sha256=kasSaMZ2baq160WNJMwEhdko2x13fsWYtE5VfHhg8Fs,5822
|
|
14
|
+
shepherd_core/data_models/base/timezone.py,sha256=OBzPPfrD__z1aTO7qlVWD1uD8eZFJ6CoDLac_mTrYCg,443
|
|
15
|
+
shepherd_core/data_models/base/wrapper.py,sha256=mzAMdX9-BeSAeTzlWKFnjj3v2wV6NJgaSHULFHEiWes,600
|
|
16
|
+
shepherd_core/data_models/content/__init__.py,sha256=JLj2zzjDeyqLrz9KiWDMW1shCeJjj676zjcXj8ly10Y,545
|
|
17
|
+
shepherd_core/data_models/content/energy_environment.py,sha256=bH6jB93e_XAAZ_NixNPlF2syEKzRtpMbImA7aD3lyTo,1342
|
|
18
|
+
shepherd_core/data_models/content/firmware.py,sha256=cuh8tURI39ZzTF-wuh4ofsNfRC1TK8lHrGKYm-o9SC0,5533
|
|
19
|
+
shepherd_core/data_models/content/firmware_datatype.py,sha256=WHVJu-LIP_snjeITIKkuZo7aIapoTIZeFXkUNqyEqy8,154
|
|
20
|
+
shepherd_core/data_models/content/virtual_harvester.py,sha256=M23YRfmXPkW145GNFoMHJvsVvJE8wUc_sNOU3OBXZtc,9268
|
|
21
|
+
shepherd_core/data_models/content/virtual_source.py,sha256=rBjfX1a22x_JF4MiQiEpaaWz2LVoHplMSrkHQnqHjDQ,13958
|
|
22
|
+
shepherd_core/data_models/experiment/__init__.py,sha256=DX9kylCe8zFm4PpVT8YS4csip7-MDoSrdah3nhBdiJE,651
|
|
23
|
+
shepherd_core/data_models/experiment/experiment.py,sha256=-qsmogEgHbijxrSfV0mLWj8biOMmDU1sEssZHo97HNI,3912
|
|
24
|
+
shepherd_core/data_models/experiment/observer_features.py,sha256=80z_U3fVFagROtMlWy2vZdbLn1-G8fZm9k8rZlyo4Lo,4997
|
|
25
|
+
shepherd_core/data_models/experiment/target_config.py,sha256=IBWxf3yVF5dUBi7mS5mJXfN1rL2S7QYhu_4IL6u6Yig,3532
|
|
26
|
+
shepherd_core/data_models/task/__init__.py,sha256=g0l4dtIgTPKhfFvnClJrCm3zLFiZpBVbbQ2f4gzdwK0,3180
|
|
27
|
+
shepherd_core/data_models/task/emulation.py,sha256=HE7L3GWKdsAkUPgvdDHxYJG92GNodP9CUEtKgQJghjA,6221
|
|
28
|
+
shepherd_core/data_models/task/firmware_mod.py,sha256=8uXMFVk3Z96gUW0gVY95VeUx-YtZnMc2yw3paC5S5Mw,2730
|
|
29
|
+
shepherd_core/data_models/task/harvest.py,sha256=QcNJjgixiq70NogdcYXwpj91_6Jl7s7CaAnEw_xEWck,3254
|
|
30
|
+
shepherd_core/data_models/task/observer_tasks.py,sha256=_fgG_xqPHQN34jdWxXVvtgJuY_05YiLGPftTGtglTfk,3437
|
|
31
|
+
shepherd_core/data_models/task/programming.py,sha256=uO6IZR8wb0N3791QgAZE7AF0CB7XoyOkFBiDH395IvE,2244
|
|
32
|
+
shepherd_core/data_models/task/testbed_tasks.py,sha256=5T_aTUE6Fby-TG5ZZAcqXVolzs4oCQ_ttNXoinREE4U,1966
|
|
33
|
+
shepherd_core/data_models/testbed/__init__.py,sha256=kQG0EUqJ5ylGRuwYZTbppWue9zDcSytpsHtUnohbGgA,566
|
|
34
|
+
shepherd_core/data_models/testbed/cape.py,sha256=_u38jvy_7yv_J3HSjGblwZXX3iOm0JF7IpTEkF9zhyg,1140
|
|
35
|
+
shepherd_core/data_models/testbed/gpio.py,sha256=9LlaxsWzEnjwaCobO-YcCWi1HZ67OsPKg5ExvtnVglQ,2086
|
|
36
|
+
shepherd_core/data_models/testbed/mcu.py,sha256=enaKdwgmasJuyHlru3UqMIA-mUq1xAoafqAgzVITxoU,1287
|
|
37
|
+
shepherd_core/data_models/testbed/observer.py,sha256=OjdvVa6uxreqIV9VM8jK1OM-RPsH4FGbKklY25_oTqg,3096
|
|
38
|
+
shepherd_core/data_models/testbed/target.py,sha256=bKrPpVcdUNYcpEudbySQ6mPFibedeNsPy9kzUMu-Um0,1762
|
|
39
|
+
shepherd_core/data_models/testbed/testbed.py,sha256=dR4yEwQKSMSXSGyPsuQ7zG2cp2LqCAQZjAzmuFOWvJo,3260
|
|
40
|
+
shepherd_core/decoder_waveform/__init__.py,sha256=HEdjRcm3m4ySEXpJ_D3lZqnxiuobJqC8axZAaAHBwDk,43
|
|
41
|
+
shepherd_core/decoder_waveform/uart.py,sha256=M4k5ymWeGP28i-_tl2FMG0YivY_WGpiZN2JOwSzlSBQ,10672
|
|
42
|
+
shepherd_core/fw_tools/__init__.py,sha256=9W-MXU5j3iJ8AgRzoGUaljD0bN29jh8LtY-pyj5HWbY,2071
|
|
43
|
+
shepherd_core/fw_tools/converter.py,sha256=2g0CZBZLn-CfUTpJljghf8AEpjIt4X7Q1FoCTsmx3A0,3273
|
|
44
|
+
shepherd_core/fw_tools/converter_elf.py,sha256=SEkrPuYUsr1VICDlZiZzr0B1njWcl9mW3J_oZk32Sb4,1008
|
|
45
|
+
shepherd_core/fw_tools/patcher.py,sha256=nXgYKGQjcEE4IYd8yNl4-t5kjlB43iFdp24oYlEaras,3774
|
|
46
|
+
shepherd_core/fw_tools/validation.py,sha256=pdZ4Q7_GyMUarELBt3OOTPIqZIGtDF3MBqOhlF75n4E,4261
|
|
47
|
+
shepherd_core/inventory/__init__.py,sha256=vTeAXOHk3paE3McpWQNBlsll40wY-IQT8alPh3n_1dE,3690
|
|
48
|
+
shepherd_core/inventory/python.py,sha256=Ar_M4cmmQgViY4caU5XH9Iye5X3jNFDnJiWGaZwNpo4,1168
|
|
49
|
+
shepherd_core/inventory/system.py,sha256=lD70oYMF0dPDvYDglhYIXIfjEFtxVoY9Zhoiwvj-oo0,2181
|
|
50
|
+
shepherd_core/inventory/target.py,sha256=XywiKmDpYKIBQt1Jo_k3bJeCOKxnzy5ob_9PYdFrjGE,421
|
|
51
|
+
shepherd_core/testbed_client/__init__.py,sha256=V38uxXOhwB8tlAjR0jH1MPSWB1LltwC0g8ipwaIyC9o,103
|
|
52
|
+
shepherd_core/testbed_client/cache_path.py,sha256=ZAoYi0je5Bg6fcP_OJa32zL6rXNPL5Ef-8vSungW9_M,401
|
|
53
|
+
shepherd_core/testbed_client/client.py,sha256=83RynaL7MiezZky-Iw-K6m8QWqRV4hAHW8awKNcTUFk,5776
|
|
54
|
+
shepherd_core/testbed_client/fixtures.py,sha256=vhSYWd3OgMP4fL5I_n1Y6flR68aSJlJnR6yFwX-D38Y,9233
|
|
55
|
+
shepherd_core/testbed_client/user_model.py,sha256=6HfDSRs4WgttEA1znVLdNwV8Pv7R_0YKxK0b30hr6mQ,2026
|
|
56
|
+
shepherd_core/vsource/__init__.py,sha256=x84_0M8Dg8R7DLKE5zyNAAGFiuOHPehDOWPt2KeBhKw,344
|
|
57
|
+
shepherd_core/vsource/virtual_converter_model.py,sha256=DCNf-O3gFmU1DIbZkESNvveCJ5sN-5dZoqAxBUogzO4,10332
|
|
58
|
+
shepherd_core/vsource/virtual_harvester_model.py,sha256=MoMa2S0VKfK1Q8fZ9CEx7sNnr3b3ae8M4YhsyY5DSgY,7764
|
|
59
|
+
shepherd_core/vsource/virtual_source_model.py,sha256=5AcNG7s_GqGn4hTzCWKTz0CNIBjF8g3YsZtc8HF0D5Q,2724
|
|
60
|
+
shepherd_core-2024.4.1.dist-info/METADATA,sha256=G0Lc2ETRLVsNDAKlpq3Od7xYsClqjbwjJiYyeEwFiv0,7618
|
|
61
|
+
shepherd_core-2024.4.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
62
|
+
shepherd_core-2024.4.1.dist-info/top_level.txt,sha256=wy-t7HRBrKARZxa-Y8_j8d49oVHnulh-95K9ikxVhew,14
|
|
63
|
+
shepherd_core-2024.4.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
64
|
+
shepherd_core-2024.4.1.dist-info/RECORD,,
|