fameio 3.1.0__py3-none-any.whl → 3.2.0__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.
- fameio/cli/__init__.py +2 -3
- fameio/cli/convert_results.py +6 -4
- fameio/cli/make_config.py +6 -4
- fameio/cli/options.py +3 -3
- fameio/cli/parser.py +43 -31
- fameio/input/__init__.py +1 -9
- fameio/input/loader/__init__.py +9 -7
- fameio/input/loader/controller.py +64 -14
- fameio/input/loader/loader.py +14 -7
- fameio/input/metadata.py +37 -18
- fameio/input/resolver.py +5 -4
- fameio/input/scenario/__init__.py +7 -8
- fameio/input/scenario/agent.py +52 -19
- fameio/input/scenario/attribute.py +28 -29
- fameio/input/scenario/contract.py +161 -52
- fameio/input/scenario/exception.py +45 -22
- fameio/input/scenario/fameiofactory.py +63 -7
- fameio/input/scenario/generalproperties.py +17 -6
- fameio/input/scenario/scenario.py +111 -28
- fameio/input/scenario/stringset.py +27 -8
- fameio/input/schema/__init__.py +5 -5
- fameio/input/schema/agenttype.py +29 -11
- fameio/input/schema/attribute.py +174 -84
- fameio/input/schema/java_packages.py +8 -5
- fameio/input/schema/schema.py +35 -9
- fameio/input/validator.py +58 -42
- fameio/input/writer.py +139 -41
- fameio/logs.py +23 -17
- fameio/output/__init__.py +5 -1
- fameio/output/agent_type.py +93 -27
- fameio/output/conversion.py +48 -30
- fameio/output/csv_writer.py +88 -18
- fameio/output/data_transformer.py +12 -21
- fameio/output/input_dao.py +68 -32
- fameio/output/output_dao.py +26 -4
- fameio/output/reader.py +61 -18
- fameio/output/yaml_writer.py +18 -9
- fameio/scripts/__init__.py +9 -2
- fameio/scripts/convert_results.py +144 -52
- fameio/scripts/convert_results.py.license +1 -1
- fameio/scripts/exception.py +7 -0
- fameio/scripts/make_config.py +34 -12
- fameio/scripts/make_config.py.license +1 -1
- fameio/series.py +132 -47
- fameio/time.py +88 -37
- fameio/tools.py +9 -8
- {fameio-3.1.0.dist-info → fameio-3.2.0.dist-info}/METADATA +19 -13
- fameio-3.2.0.dist-info/RECORD +56 -0
- {fameio-3.1.0.dist-info → fameio-3.2.0.dist-info}/WHEEL +1 -1
- CHANGELOG.md +0 -279
- fameio-3.1.0.dist-info/RECORD +0 -56
- {fameio-3.1.0.dist-info → fameio-3.2.0.dist-info}/LICENSE.txt +0 -0
- {fameio-3.1.0.dist-info → fameio-3.2.0.dist-info}/LICENSES/Apache-2.0.txt +0 -0
- {fameio-3.1.0.dist-info → fameio-3.2.0.dist-info}/LICENSES/CC-BY-4.0.txt +0 -0
- {fameio-3.1.0.dist-info → fameio-3.2.0.dist-info}/LICENSES/CC0-1.0.txt +0 -0
- {fameio-3.1.0.dist-info → fameio-3.2.0.dist-info}/entry_points.txt +0 -0
fameio/time.py
CHANGED
@@ -1,14 +1,17 @@
|
|
1
|
-
# SPDX-FileCopyrightText:
|
1
|
+
# SPDX-FileCopyrightText: 2025 German Aerospace Center <fame@dlr.de>
|
2
2
|
#
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
from __future__ import annotations
|
4
5
|
|
5
6
|
import datetime as dt
|
6
7
|
import math
|
7
8
|
import re
|
8
9
|
from enum import Enum, auto
|
9
|
-
from typing import
|
10
|
+
from typing import Any
|
10
11
|
|
11
|
-
from fameio.
|
12
|
+
from fameio.input import InputError
|
13
|
+
from fameio.logs import log_error
|
14
|
+
from fameio.output import OutputError
|
12
15
|
|
13
16
|
START_IN_REAL_TIME = "2000-01-01_00:00:00"
|
14
17
|
DATE_FORMAT = "%Y-%m-%d_%H:%M:%S"
|
@@ -16,10 +19,8 @@ DATE_REGEX = re.compile("[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}:[0-9]{2}:[0-9]{2}")
|
|
16
19
|
FAME_FIRST_DATETIME = dt.datetime.strptime(START_IN_REAL_TIME, DATE_FORMAT)
|
17
20
|
|
18
21
|
|
19
|
-
class ConversionError(
|
20
|
-
"""Indicates that
|
21
|
-
|
22
|
-
pass
|
22
|
+
class ConversionError(InputError, OutputError):
|
23
|
+
"""Indicates that time stamp conversion failed"""
|
23
24
|
|
24
25
|
|
25
26
|
class TimeUnit(Enum):
|
@@ -48,9 +49,9 @@ class Constants:
|
|
48
49
|
STEPS_PER_DAY = STEPS_PER_HOUR * HOURS_PER_DAY
|
49
50
|
STEPS_PER_YEAR = STEPS_PER_DAY * DAYS_PER_YEAR
|
50
51
|
STEPS_PER_WEEK = STEPS_PER_DAY * 7
|
51
|
-
STEPS_PER_MONTH = STEPS_PER_YEAR / 12
|
52
|
+
STEPS_PER_MONTH = int(STEPS_PER_YEAR / 12)
|
52
53
|
|
53
|
-
steps_per_unit = {
|
54
|
+
steps_per_unit: dict[TimeUnit, int] = {
|
54
55
|
TimeUnit.SECONDS: STEPS_PER_SECOND,
|
55
56
|
TimeUnit.MINUTES: STEPS_PER_MINUTE,
|
56
57
|
TimeUnit.HOURS: STEPS_PER_HOUR,
|
@@ -73,32 +74,64 @@ class FameTime:
|
|
73
74
|
|
74
75
|
@staticmethod
|
75
76
|
def convert_datetime_to_fame_time_step(datetime_string: str) -> int:
|
76
|
-
"""
|
77
|
+
"""
|
78
|
+
Converts Datetime string to FAME time step
|
79
|
+
|
80
|
+
Args:
|
81
|
+
datetime_string: a datetime in FAME formatting
|
82
|
+
|
83
|
+
Returns:
|
84
|
+
corresponding FAME time step
|
85
|
+
|
86
|
+
Raises:
|
87
|
+
ConversionError: if string could not be interpreted or does not represent a valid FAME time step,
|
88
|
+
logged with level "ERROR"
|
89
|
+
"""
|
77
90
|
if not FameTime.is_datetime(datetime_string):
|
78
|
-
|
91
|
+
raise log_error(ConversionError(FameTime._FORMAT_INVALID.format(datetime_string)))
|
79
92
|
datetime = FameTime._convert_to_datetime(datetime_string)
|
80
93
|
years_since_start_time = datetime.year - FAME_FIRST_DATETIME.year
|
81
94
|
beginning_of_year = dt.datetime(year=datetime.year, month=1, day=1, hour=0, minute=0, second=0)
|
82
95
|
seconds_since_beginning_of_year = int((datetime - beginning_of_year).total_seconds())
|
83
96
|
steps_since_beginning_of_year = seconds_since_beginning_of_year * Constants.STEPS_PER_SECOND
|
84
97
|
if steps_since_beginning_of_year > Constants.STEPS_PER_YEAR:
|
85
|
-
|
98
|
+
raise log_error(ConversionError(FameTime._INVALID_TOO_LARGE.format(datetime_string)))
|
86
99
|
year_offset = years_since_start_time * Constants.STEPS_PER_YEAR
|
87
100
|
return year_offset + steps_since_beginning_of_year
|
88
101
|
|
89
102
|
@staticmethod
|
90
103
|
def _convert_to_datetime(datetime_string: str) -> dt.datetime:
|
91
|
-
"""
|
104
|
+
"""
|
105
|
+
Converts given `datetime_string` in FAME formatting to real-world datetime
|
106
|
+
|
107
|
+
Args:
|
108
|
+
datetime_string: to be converted to datetime
|
109
|
+
|
110
|
+
Returns:
|
111
|
+
datetime representation of provided string
|
112
|
+
|
113
|
+
Raises:
|
114
|
+
ConversionError: if provided string could not be converted, logged with level "ERROR"
|
115
|
+
"""
|
92
116
|
try:
|
93
117
|
return dt.datetime.strptime(datetime_string, DATE_FORMAT)
|
94
|
-
except ValueError:
|
95
|
-
|
118
|
+
except ValueError as e:
|
119
|
+
raise log_error(ConversionError(FameTime._INVALID_TIMESTAMP.format(datetime_string))) from e
|
96
120
|
|
97
121
|
@staticmethod
|
98
122
|
def convert_fame_time_step_to_datetime(fame_time_steps: int, date_format: str = DATE_FORMAT) -> str:
|
99
123
|
"""
|
100
|
-
Converts given `fame_time_steps` to corresponding real-world datetime string in `date_format
|
101
|
-
|
124
|
+
Converts given `fame_time_steps` to corresponding real-world datetime string in `date_format`
|
125
|
+
|
126
|
+
Args:
|
127
|
+
fame_time_steps: an integer representing time in FAME's internal format
|
128
|
+
date_format: to be used for datetime representation
|
129
|
+
|
130
|
+
Returns:
|
131
|
+
string representing the real-world datetime of the provided time steps
|
132
|
+
|
133
|
+
Raises:
|
134
|
+
ConversionError: if `date_format` is invalid, logged with level "ERROR"
|
102
135
|
"""
|
103
136
|
years_since_start_time = math.floor(fame_time_steps / Constants.STEPS_PER_YEAR)
|
104
137
|
current_year = years_since_start_time + Constants.FIRST_YEAR
|
@@ -108,31 +141,42 @@ class FameTime:
|
|
108
141
|
datetime = beginning_of_year + dt.timedelta(seconds=seconds_in_current_year)
|
109
142
|
try:
|
110
143
|
return datetime.strftime(date_format)
|
111
|
-
except ValueError:
|
112
|
-
|
144
|
+
except ValueError as e:
|
145
|
+
raise log_error(ConversionError(FameTime._INVALID_DATE_FORMAT.format(date_format))) from e
|
113
146
|
|
114
147
|
@staticmethod
|
115
148
|
def convert_time_span_to_fame_time_steps(value: int, unit: TimeUnit) -> int:
|
116
|
-
"""
|
149
|
+
"""
|
150
|
+
Converts value of `TimeUnit.UNIT` to FAME time steps
|
151
|
+
|
152
|
+
Args:
|
153
|
+
value: amount of the units to be converted
|
154
|
+
unit: base time unit
|
155
|
+
|
156
|
+
Returns:
|
157
|
+
FAME time steps equivalent of `value x unit`
|
158
|
+
|
159
|
+
Raises:
|
160
|
+
ConversionError: if an unknown time unit is used, logged with level "ERROR"
|
161
|
+
"""
|
117
162
|
steps = Constants.steps_per_unit.get(unit)
|
118
163
|
if steps:
|
119
164
|
return steps * value
|
120
|
-
|
121
|
-
log_error_and_raise(ConversionError(FameTime._TIME_UNIT_UNKNOWN.format(unit)))
|
165
|
+
raise log_error(ConversionError(FameTime._TIME_UNIT_UNKNOWN.format(unit)))
|
122
166
|
|
123
167
|
@staticmethod
|
124
|
-
def is_datetime(string:
|
168
|
+
def is_datetime(string: Any) -> bool:
|
125
169
|
"""Returns `True` if given `string` matches Datetime string format and can be converted to FAME time step"""
|
126
170
|
if isinstance(string, str):
|
127
171
|
return DATE_REGEX.fullmatch(string.strip()) is not None
|
128
172
|
return False
|
129
173
|
|
130
174
|
@staticmethod
|
131
|
-
def is_fame_time_compatible(value:
|
175
|
+
def is_fame_time_compatible(value: int | str) -> bool:
|
132
176
|
"""Returns `True` if given int or string `value` can be converted to a FAME time step"""
|
133
177
|
if isinstance(value, int):
|
134
178
|
return True
|
135
|
-
|
179
|
+
if isinstance(value, str):
|
136
180
|
return FameTime.is_datetime(value) or FameTime._is_integer(value)
|
137
181
|
return False
|
138
182
|
|
@@ -143,20 +187,27 @@ class FameTime:
|
|
143
187
|
int(string)
|
144
188
|
except ValueError:
|
145
189
|
return False
|
146
|
-
|
147
|
-
return True
|
190
|
+
return True
|
148
191
|
|
149
192
|
@staticmethod
|
150
|
-
def convert_string_if_is_datetime(value:
|
193
|
+
def convert_string_if_is_datetime(value: int | str) -> int:
|
151
194
|
"""
|
152
|
-
Returns FAME time steps
|
153
|
-
|
154
|
-
|
195
|
+
Returns FAME time steps of given `value`. If it is a valid FAME datetime string it is converted to
|
196
|
+
FAME time steps, or, if given `value` is an integer, it is returned without modification.
|
197
|
+
|
198
|
+
Args:
|
199
|
+
value: to be converted
|
200
|
+
|
201
|
+
Returns:
|
202
|
+
FAME time steps equivalent of provided value
|
203
|
+
|
204
|
+
Raises:
|
205
|
+
ConversionError: if given `value` is neither a FAME datetime string nor an integer value,
|
206
|
+
logged with level "ERROR"
|
155
207
|
"""
|
156
208
|
if FameTime.is_datetime(value):
|
157
|
-
return int(FameTime.convert_datetime_to_fame_time_step(value))
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
log_error_and_raise(ConversionError(FameTime._NO_TIMESTAMP.format(value)))
|
209
|
+
return int(FameTime.convert_datetime_to_fame_time_step(value)) # type: ignore[arg-type]
|
210
|
+
try:
|
211
|
+
return int(value)
|
212
|
+
except ValueError as e:
|
213
|
+
raise log_error(ConversionError(FameTime._NO_TIMESTAMP.format(value))) from e
|
fameio/tools.py
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
# SPDX-FileCopyrightText:
|
1
|
+
# SPDX-FileCopyrightText: 2025 German Aerospace Center <fame@dlr.de>
|
2
2
|
#
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
from __future__ import annotations
|
5
|
+
|
4
6
|
from pathlib import Path
|
5
|
-
from typing import Any
|
7
|
+
from typing import Any
|
6
8
|
|
7
9
|
|
8
10
|
def keys_to_lower(dictionary: dict[str, Any]) -> dict[str, Any]:
|
@@ -14,16 +16,15 @@ def ensure_is_list(value: Any) -> list:
|
|
14
16
|
"""Returns a list: Either the provided `value` if it is a list, or a new list containing the provided value"""
|
15
17
|
if isinstance(value, list):
|
16
18
|
return value
|
17
|
-
|
18
|
-
return [value]
|
19
|
+
return [value]
|
19
20
|
|
20
21
|
|
21
|
-
def ensure_path_exists(path:
|
22
|
+
def ensure_path_exists(path: Path | str):
|
22
23
|
"""Creates a specified path if not already existent"""
|
23
24
|
Path(path).mkdir(parents=True, exist_ok=True)
|
24
25
|
|
25
26
|
|
26
27
|
def clean_up_file_name(name: str) -> str:
|
27
|
-
"""Returns given `name` with
|
28
|
-
|
29
|
-
return name.translate(
|
28
|
+
"""Returns given `name` replacing spaces and colons with underscore, and slashed with a dash"""
|
29
|
+
translation_table = str.maketrans({" ": "_", ":": "_", "/": "-"})
|
30
|
+
return name.translate(translation_table)
|
@@ -1,8 +1,7 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.3
|
2
2
|
Name: fameio
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.2.0
|
4
4
|
Summary: Tools for input preparation and output digestion of FAME models
|
5
|
-
Home-page: https://gitlab.com/fame-framework/wiki/-/wikis/home
|
6
5
|
License: Apache-2.0
|
7
6
|
Keywords: FAME,fameio,agent-based modelling,energy systems
|
8
7
|
Author: Felix Nitsch
|
@@ -20,24 +19,28 @@ Classifier: Programming Language :: Python :: 3.9
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.10
|
21
20
|
Classifier: Programming Language :: Python :: 3.11
|
22
21
|
Classifier: Programming Language :: Python :: 3.12
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
23
23
|
Classifier: Topic :: Scientific/Engineering
|
24
|
-
Requires-Dist: fameprotobuf (>=2.0.2,<3.0
|
24
|
+
Requires-Dist: fameprotobuf (>=2.0.2,<3.0)
|
25
25
|
Requires-Dist: pandas (>=1.0,<3.0)
|
26
26
|
Requires-Dist: pyyaml (>=6.0,<7.0)
|
27
|
-
Project-URL:
|
27
|
+
Project-URL: Changelog, https://gitlab.com/fame-framework/fame-io/-/blob/main/CHANGELOG.md
|
28
|
+
Project-URL: Homepage, https://helmholtz.software/software/fame
|
29
|
+
Project-URL: Issue Tracking, https://gitlab.com/fame-framework/fame-io/-/issues
|
30
|
+
Project-URL: Repository, https://gitlab.com/fame-framework/fame-io
|
28
31
|
Description-Content-Type: text/markdown
|
29
32
|
|
30
33
|
<!-- SPDX-FileCopyrightText: 2025 German Aerospace Center <fame@dlr.de>
|
31
34
|
|
32
35
|
SPDX-License-Identifier: Apache-2.0 -->
|
33
36
|
|
34
|
-
| |
|
35
|
-
|
36
|
-
| **Package** |
|
37
|
-
| **
|
38
|
-
| **Activity** |  
|
39
|
-
| **Style** | [](https://github.com/psf/black) [](https://doi.org/10.21105/joss.04958) [](https://doi.org/10.5281/zenodo.4314337)
|
37
|
+
| | |
|
38
|
+
|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
39
|
+
| **Package** |   [](https://badge.fury.io/py/fameio) [](https://api.reuse.software/info/gitlab.com/fame-framework/fame-io) |
|
40
|
+
| **Test** | [](https://gitlab.com/fame-framework/fame-io/commits/main) [](https://gitlab.com/fame-framework/fame-io/-/commits/main) |
|
41
|
+
| **Activity** |   |
|
42
|
+
| **Style** | [](https://github.com/psf/black) [](https://common-changelog.org/)  [](https://github.com/pylint-dev/pylint) |
|
43
|
+
| **Reference** | [](https://doi.org/10.21105/joss.04958) [](https://doi.org/10.5281/zenodo.4314337) |
|
41
44
|
|
42
45
|
# FAME-Io
|
43
46
|
|
@@ -362,7 +365,9 @@ Agent Parameters:
|
|
362
365
|
* `Attributes` Optional; if the agent has any attributes, specify them here in the format "AttributeName: value"; please
|
363
366
|
see attribute table above
|
364
367
|
* `Metadata` Optional; can be assigned to each instance of an Agent, as well as to each of its Attributes
|
368
|
+
* `Ext` Optional; Reserved key for parameters not used by fameio but its extensions, e.g., FAME-Gui
|
365
369
|
|
370
|
+
A warning is logged for any other key at this level.
|
366
371
|
The specified `Attributes` for each agent must match the specified `Attributes` options in the linked Schema (see
|
367
372
|
above).
|
368
373
|
For better structure and readability of the `scenario.yaml`, `Attributes` may also be specified in a nested way as
|
@@ -642,7 +647,7 @@ These CSV files follow a specific structure:
|
|
642
647
|
* They should contain exactly two columns - any other columns are ignored.
|
643
648
|
A warning is raised if more than two non-empty columns are detected.
|
644
649
|
* The first column must be a time stamp in form `YYYY-MM-DD_hh:mm:ss` or
|
645
|
-
a [FAME-Timestamp](https://gitlab.com/fame-framework/wiki/-/wikis/architecture/decisions/TimeStamp) integer value
|
650
|
+
a [FAME-Timestamp](https://gitlab.com/fame-framework/wiki/-/wikis/architecture/decisions/TimeStamp) integer value.
|
646
651
|
* The second column must be a numerical value (either integer or floating-point)
|
647
652
|
* The separator of the two columns is a semicolon
|
648
653
|
* The data must **not** have headers, except for comments marked with `#`
|
@@ -662,6 +667,7 @@ Please refer also to the detailed article about `TimeStamps` in
|
|
662
667
|
the [FAME-Wiki](https://gitlab.com/fame-framework/wiki/-/wikis/TimeStamp).
|
663
668
|
For large CSV files (with more than 20,000 rows) we recommend using the integer representation of FAME-Timestamps in the
|
664
669
|
first column (instead of text representation) to improve conversion speed.
|
670
|
+
A warning will be raised for very large files (exceeding 50,000 rows) that require time stamp conversion.
|
665
671
|
|
666
672
|
### Split and join multiple YAML files
|
667
673
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
fameio/__init__.py,sha256=LiE7kRXW0pMIB4hTPC0T_ppGz9O0swd0Ca1-b99hOMc,229
|
2
|
+
fameio/cli/__init__.py,sha256=YAxIBl8azJDFaKr0iGaba94UH3Xy-KhQtxrGtwz3FpM,179
|
3
|
+
fameio/cli/convert_results.py,sha256=ix5pcmci8GG6q5JTteA9m-na1YmyJTqOuqfEs5CSKGE,3460
|
4
|
+
fameio/cli/make_config.py,sha256=-kw6-I4mFU5NRi2MjKhnRzU9WxEqGNlrzjX6lHr9Wpo,2734
|
5
|
+
fameio/cli/options.py,sha256=k_bVfVo8GEoqJzLLfzVpfrol51IA9AWjIGASQsATruY,1269
|
6
|
+
fameio/cli/parser.py,sha256=8T3FRpeiBm-6VkILTd_XVatFYpopiZjFRGNSs_l35Vo,8909
|
7
|
+
fameio/input/__init__.py,sha256=73a3vchTU9c--1uJcJTTaB8CGajnTD-ufraQjNtzh8k,504
|
8
|
+
fameio/input/loader/__init__.py,sha256=yo-sEnI7i0puMpKHENw9zaNq6VfYDLVyw6T0GXiOu6Q,2715
|
9
|
+
fameio/input/loader/controller.py,sha256=yb7lLc3KDBzdZ7myZ6Q6FPBwX3DkSfHU7f8ArtAbcuI,7769
|
10
|
+
fameio/input/loader/loader.py,sha256=uxIt6lwPuo6gpme-BA-W6eLayVic9cH5m6M7ZnJ-xGk,5324
|
11
|
+
fameio/input/metadata.py,sha256=vaDSKmk433XMvZhehAU60LdASEhrs29mp1zpQJ0NffY,6544
|
12
|
+
fameio/input/resolver.py,sha256=RK6X4mSv2OPEO_ZXc6VJWN0pfvA0okkSse7fHuCOVP0,1920
|
13
|
+
fameio/input/scenario/__init__.py,sha256=Pb8O9rVOTwEo48WIgiq1kBnpovpc4D_syC6EjTFGHew,404
|
14
|
+
fameio/input/scenario/agent.py,sha256=D2rt94jNqoCpvVDVa2TUXrxw2D_L9dCzOOGXleDVQE8,5451
|
15
|
+
fameio/input/scenario/attribute.py,sha256=T7eTDU80HFAVZqpjkh1W7-PSnE9epQZ_gdLTMHdeEv4,9720
|
16
|
+
fameio/input/scenario/contract.py,sha256=H6XWbVUmRJzpAfWMFW7R4f8upuYAWtEumUOy-Rqx-Uk,13174
|
17
|
+
fameio/input/scenario/exception.py,sha256=uZSiudjgQ0cwIDJPJoowsTRJxm6MmcobEOpzSDDZfUI,1944
|
18
|
+
fameio/input/scenario/fameiofactory.py,sha256=-LHVHirqa_TXA0RvABRQSV_tM--VTYtDpWlt4K9kmIw,2847
|
19
|
+
fameio/input/scenario/generalproperties.py,sha256=gEiOPN0vRDy0ChsN4aG7D5GyKVfTTEAl6G7ZIoVLfgc,3751
|
20
|
+
fameio/input/scenario/scenario.py,sha256=9jdJ37MFSUoklAyVi2q_4719o8vcHXtAQCig2B3mkiY,8396
|
21
|
+
fameio/input/scenario/stringset.py,sha256=qm2C8HTWVcZIf20gj456FpTfkD1fVu6icoc4NpkMJ5w,2534
|
22
|
+
fameio/input/schema/__init__.py,sha256=oIsJVC0hUhwJf_XIBpd1NNTR8sOWEthAy98m6uR7gKc,327
|
23
|
+
fameio/input/schema/agenttype.py,sha256=vouiTB_p63y1ceXZXpsUaGdh6QLx_TroFA7peoTcgIE,5699
|
24
|
+
fameio/input/schema/attribute.py,sha256=XpCfbZybuftLv5iQlsoJQ99MJEdNt3sGu38gxuJ_V8s,14916
|
25
|
+
fameio/input/schema/java_packages.py,sha256=nbvOcj1P0GPyKDQFwK7fO0rS16ElOd7YPEKt5qteYF0,2948
|
26
|
+
fameio/input/schema/schema.py,sha256=D6mkCm1CjNxe4xPATkaFf9hqfX9fbBRtbZp3gb8lqLE,3844
|
27
|
+
fameio/input/validator.py,sha256=gDAW51la4p3kzjoWbL1G_Hjoab1d5hYFD88rMOfUKSs,19213
|
28
|
+
fameio/input/writer.py,sha256=QUd1m3a-xMlgoWoO1JTrFG2IVWst-gVh9ZSa4XAIhtA,15937
|
29
|
+
fameio/logs.py,sha256=idBSshztqzXQM92yZWDIB9pNAUMQIsY4JyRh2fqdXz0,4252
|
30
|
+
fameio/output/__init__.py,sha256=ixupBH6NNsC36gL4egdS6jg1fcpH1nFqJGeAUKDrS3E,211
|
31
|
+
fameio/output/agent_type.py,sha256=2GGDzyMRNIn7B8fzwwx_6TSwRkDTEA6w5eHs67ck3jM,6462
|
32
|
+
fameio/output/conversion.py,sha256=Zps-U1SMvRkYGtTm3T2EYbjmmpKYvV5XoI_sxiYto0I,4676
|
33
|
+
fameio/output/csv_writer.py,sha256=Ye26DZ0A_xDvOTi0zPQp7MqtfIibQqWYrNaypI67c0o,7602
|
34
|
+
fameio/output/data_transformer.py,sha256=haQFtuiplfndfG5uAZjiEf39zeOhRXVV8ZXH0-PLEfU,5250
|
35
|
+
fameio/output/input_dao.py,sha256=PZuZO6FpcVsTvOhr4JLiC0oHW2lSkongtUDmfmr2nCg,8432
|
36
|
+
fameio/output/output_dao.py,sha256=slKQJM--dlyr48ZaHp6fsmsyxaokPGSizQETbM7S2as,4890
|
37
|
+
fameio/output/reader.py,sha256=fiitnvTGLv4uEz4GT2-2UdCZRlj_AOUrQqQA_8irOaU,6599
|
38
|
+
fameio/output/yaml_writer.py,sha256=vuXqbCsO5yvKJreoEbI7qiMg1rNEkhGzK9XYZiMmDTs,1095
|
39
|
+
fameio/scripts/__init__.py,sha256=9HlariFV2QOJ69XIJtLSIyKBBGmJN2Vgih3r1K7Ln5Y,937
|
40
|
+
fameio/scripts/__init__.py.license,sha256=2-OqCNxP4504xY2XQqseYypJi1_Qx4xJSzO3t7c3ACM,107
|
41
|
+
fameio/scripts/convert_results.py,sha256=2k9cYh1rzA5ukfQEbrGH8GIK86v7z8PyS0FNRHx-sVY,7694
|
42
|
+
fameio/scripts/convert_results.py.license,sha256=EXKiZn-aoR7nO3auGMNGk9upHbobPLHAIBYUO0S6LUg,107
|
43
|
+
fameio/scripts/exception.py,sha256=sgGGTIVKUzflp0J7H4lEsPBgALHqZ898BILeCVrJRzs,235
|
44
|
+
fameio/scripts/make_config.py,sha256=htGUKVUJtTL6i8kF1PJPGZEGJCqPvNKoW-dMg0BLhrE,2021
|
45
|
+
fameio/scripts/make_config.py.license,sha256=EXKiZn-aoR7nO3auGMNGk9upHbobPLHAIBYUO0S6LUg,107
|
46
|
+
fameio/series.py,sha256=P5DvPOwzZxN5h4b0LFSqT0xw8WSqHXtb9-bp3j_povA,12192
|
47
|
+
fameio/time.py,sha256=-rF7-XEDgbvDmIL3nGSpOtJwtjfa05jfCysnyepQ2Wo,8458
|
48
|
+
fameio/tools.py,sha256=SsPWTeqc2vS4_F4bBkLXY2LX5fp6ITe0f2FTxkejmlY,1104
|
49
|
+
fameio-3.2.0.dist-info/entry_points.txt,sha256=jvQVfwJjZXPWQjJlhj1Dt6PTeblryTc1GxjKeK90twI,123
|
50
|
+
fameio-3.2.0.dist-info/LICENSE.txt,sha256=eGHBZnhr9CWjE95SWjRfmhtK1lvVn5X4Fpf3KrrAZDg,10391
|
51
|
+
fameio-3.2.0.dist-info/LICENSES/Apache-2.0.txt,sha256=eGHBZnhr9CWjE95SWjRfmhtK1lvVn5X4Fpf3KrrAZDg,10391
|
52
|
+
fameio-3.2.0.dist-info/LICENSES/CC-BY-4.0.txt,sha256=y9WvMYKGt0ZW8UXf9QkZB8wj1tjJrQngKR7CSXeSukE,19051
|
53
|
+
fameio-3.2.0.dist-info/LICENSES/CC0-1.0.txt,sha256=9Ofzc7m5lpUDN-jUGkopOcLZC3cl6brz1QhKInF60yg,7169
|
54
|
+
fameio-3.2.0.dist-info/METADATA,sha256=2k0dbtDQhG3ep0HyXlt8UQf0Xy1b4kc-ysGL--Etp6I,39946
|
55
|
+
fameio-3.2.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
56
|
+
fameio-3.2.0.dist-info/RECORD,,
|