fameio 3.2.0__py3-none-any.whl → 3.3.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/convert_results.py +4 -6
- fameio/cli/make_config.py +3 -5
- fameio/cli/options.py +6 -4
- fameio/cli/parser.py +53 -29
- fameio/cli/reformat.py +58 -0
- fameio/input/__init__.py +4 -4
- fameio/input/loader/__init__.py +4 -6
- fameio/input/loader/controller.py +11 -16
- fameio/input/loader/loader.py +11 -9
- fameio/input/metadata.py +26 -29
- fameio/input/resolver.py +4 -6
- fameio/input/scenario/agent.py +18 -16
- fameio/input/scenario/attribute.py +85 -31
- fameio/input/scenario/contract.py +23 -28
- fameio/input/scenario/exception.py +3 -6
- fameio/input/scenario/fameiofactory.py +7 -12
- fameio/input/scenario/generalproperties.py +7 -8
- fameio/input/scenario/scenario.py +14 -18
- fameio/input/scenario/stringset.py +5 -6
- fameio/input/schema/agenttype.py +8 -10
- fameio/input/schema/attribute.py +30 -36
- fameio/input/schema/java_packages.py +6 -7
- fameio/input/schema/schema.py +9 -11
- fameio/input/validator.py +178 -41
- fameio/input/writer.py +20 -29
- fameio/logs.py +28 -19
- fameio/output/agent_type.py +14 -16
- fameio/output/conversion.py +9 -12
- fameio/output/csv_writer.py +33 -23
- fameio/output/data_transformer.py +11 -11
- fameio/output/execution_dao.py +170 -0
- fameio/output/input_dao.py +16 -19
- fameio/output/output_dao.py +7 -7
- fameio/output/reader.py +8 -10
- fameio/output/yaml_writer.py +2 -3
- fameio/scripts/__init__.py +15 -4
- fameio/scripts/convert_results.py +18 -17
- fameio/scripts/exception.py +1 -1
- fameio/scripts/make_config.py +3 -4
- fameio/scripts/reformat.py +71 -0
- fameio/scripts/reformat.py.license +3 -0
- fameio/series.py +78 -47
- fameio/time.py +15 -18
- fameio/tools.py +42 -4
- {fameio-3.2.0.dist-info → fameio-3.3.0.dist-info}/METADATA +33 -23
- fameio-3.3.0.dist-info/RECORD +60 -0
- {fameio-3.2.0.dist-info → fameio-3.3.0.dist-info}/entry_points.txt +1 -0
- fameio-3.2.0.dist-info/RECORD +0 -56
- {fameio-3.2.0.dist-info → fameio-3.3.0.dist-info}/LICENSE.txt +0 -0
- {fameio-3.2.0.dist-info → fameio-3.3.0.dist-info}/LICENSES/Apache-2.0.txt +0 -0
- {fameio-3.2.0.dist-info → fameio-3.3.0.dist-info}/LICENSES/CC-BY-4.0.txt +0 -0
- {fameio-3.2.0.dist-info → fameio-3.3.0.dist-info}/LICENSES/CC0-1.0.txt +0 -0
- {fameio-3.2.0.dist-info → fameio-3.3.0.dist-info}/WHEEL +0 -0
fameio/time.py
CHANGED
@@ -20,11 +20,11 @@ FAME_FIRST_DATETIME = dt.datetime.strptime(START_IN_REAL_TIME, DATE_FORMAT)
|
|
20
20
|
|
21
21
|
|
22
22
|
class ConversionError(InputError, OutputError):
|
23
|
-
"""Indicates that time stamp conversion failed"""
|
23
|
+
"""Indicates that time stamp conversion failed."""
|
24
24
|
|
25
25
|
|
26
26
|
class TimeUnit(Enum):
|
27
|
-
"""Time units defined in FAME"""
|
27
|
+
"""Time units defined in FAME."""
|
28
28
|
|
29
29
|
SECONDS = auto()
|
30
30
|
MINUTES = auto()
|
@@ -36,7 +36,7 @@ class TimeUnit(Enum):
|
|
36
36
|
|
37
37
|
|
38
38
|
class Constants:
|
39
|
-
"""Time steps in FAME simulations associated with corresponding TimeUnits"""
|
39
|
+
"""Time steps in FAME simulations associated with corresponding TimeUnits."""
|
40
40
|
|
41
41
|
FIRST_YEAR = 2000
|
42
42
|
STEPS_PER_SECOND = 1
|
@@ -63,7 +63,7 @@ class Constants:
|
|
63
63
|
|
64
64
|
|
65
65
|
class FameTime:
|
66
|
-
"""Handles conversion of TimeSteps and TimeDurations into TimeStamps and vice versa"""
|
66
|
+
"""Handles conversion of TimeSteps and TimeDurations into TimeStamps and vice versa."""
|
67
67
|
|
68
68
|
_TIME_UNIT_UNKNOWN = "TimeUnit conversion of '{}' not implemented."
|
69
69
|
_FORMAT_INVALID = "'{}' is not recognised as time stamp string - check its format."
|
@@ -74,8 +74,7 @@ class FameTime:
|
|
74
74
|
|
75
75
|
@staticmethod
|
76
76
|
def convert_datetime_to_fame_time_step(datetime_string: str) -> int:
|
77
|
-
"""
|
78
|
-
Converts Datetime string to FAME time step
|
77
|
+
"""Converts Datetime string to FAME time step.
|
79
78
|
|
80
79
|
Args:
|
81
80
|
datetime_string: a datetime in FAME formatting
|
@@ -101,8 +100,7 @@ class FameTime:
|
|
101
100
|
|
102
101
|
@staticmethod
|
103
102
|
def _convert_to_datetime(datetime_string: str) -> dt.datetime:
|
104
|
-
"""
|
105
|
-
Converts given `datetime_string` in FAME formatting to real-world datetime
|
103
|
+
"""Converts given `datetime_string` in FAME formatting to real-world datetime.
|
106
104
|
|
107
105
|
Args:
|
108
106
|
datetime_string: to be converted to datetime
|
@@ -120,8 +118,7 @@ class FameTime:
|
|
120
118
|
|
121
119
|
@staticmethod
|
122
120
|
def convert_fame_time_step_to_datetime(fame_time_steps: int, date_format: str = DATE_FORMAT) -> str:
|
123
|
-
"""
|
124
|
-
Converts given `fame_time_steps` to corresponding real-world datetime string in `date_format`
|
121
|
+
"""Converts given `fame_time_steps` to corresponding real-world datetime string in `date_format`.
|
125
122
|
|
126
123
|
Args:
|
127
124
|
fame_time_steps: an integer representing time in FAME's internal format
|
@@ -146,8 +143,7 @@ class FameTime:
|
|
146
143
|
|
147
144
|
@staticmethod
|
148
145
|
def convert_time_span_to_fame_time_steps(value: int, unit: TimeUnit) -> int:
|
149
|
-
"""
|
150
|
-
Converts value of `TimeUnit.UNIT` to FAME time steps
|
146
|
+
"""Converts value of `TimeUnit.UNIT` to FAME time steps.
|
151
147
|
|
152
148
|
Args:
|
153
149
|
value: amount of the units to be converted
|
@@ -166,14 +162,14 @@ class FameTime:
|
|
166
162
|
|
167
163
|
@staticmethod
|
168
164
|
def is_datetime(string: Any) -> bool:
|
169
|
-
"""Returns `True` if given `string` matches Datetime string format and can be converted to FAME time step"""
|
165
|
+
"""Returns `True` if given `string` matches Datetime string format and can be converted to FAME time step."""
|
170
166
|
if isinstance(string, str):
|
171
167
|
return DATE_REGEX.fullmatch(string.strip()) is not None
|
172
168
|
return False
|
173
169
|
|
174
170
|
@staticmethod
|
175
171
|
def is_fame_time_compatible(value: int | str) -> bool:
|
176
|
-
"""Returns `True` if given int or string `value` can be converted to a FAME time step"""
|
172
|
+
"""Returns `True` if given int or string `value` can be converted to a FAME time step."""
|
177
173
|
if isinstance(value, int):
|
178
174
|
return True
|
179
175
|
if isinstance(value, str):
|
@@ -182,7 +178,7 @@ class FameTime:
|
|
182
178
|
|
183
179
|
@staticmethod
|
184
180
|
def _is_integer(string: str) -> bool:
|
185
|
-
"""Returns `True` if given string can be interpreted as integer"""
|
181
|
+
"""Returns `True` if given string can be interpreted as integer."""
|
186
182
|
try:
|
187
183
|
int(string)
|
188
184
|
except ValueError:
|
@@ -191,9 +187,10 @@ class FameTime:
|
|
191
187
|
|
192
188
|
@staticmethod
|
193
189
|
def convert_string_if_is_datetime(value: int | str) -> int:
|
194
|
-
"""
|
195
|
-
|
196
|
-
|
190
|
+
"""Returns FAME time steps of given `value`.
|
191
|
+
|
192
|
+
If it is a valid FAME datetime string it is converted to FAME time steps.
|
193
|
+
Else if given `value` is an integer, it is returned without modification.
|
197
194
|
|
198
195
|
Args:
|
199
196
|
value: to be converted
|
fameio/tools.py
CHANGED
@@ -6,25 +6,63 @@ from __future__ import annotations
|
|
6
6
|
from pathlib import Path
|
7
7
|
from typing import Any
|
8
8
|
|
9
|
+
from fameio.logs import log_error
|
10
|
+
|
11
|
+
CSV_FILE_SUFFIX = ".csv"
|
12
|
+
|
13
|
+
_ERR_INVALID_PATTERN = "Pattern '{}' cannot be used here due to: '{}'"
|
14
|
+
|
9
15
|
|
10
16
|
def keys_to_lower(dictionary: dict[str, Any]) -> dict[str, Any]:
|
11
|
-
"""Returns new dictionary content of given `dictionary` but its top-level `keys` in lower case"""
|
17
|
+
"""Returns new dictionary content of given `dictionary` but its top-level `keys` in lower case."""
|
12
18
|
return {keys.lower(): value for keys, value in dictionary.items()}
|
13
19
|
|
14
20
|
|
15
21
|
def ensure_is_list(value: Any) -> list:
|
16
|
-
"""Returns a list: Either the provided `value` if it is a list, or a new list containing the provided value"""
|
22
|
+
"""Returns a list: Either the provided `value` if it is a list, or a new list containing the provided value."""
|
17
23
|
if isinstance(value, list):
|
18
24
|
return value
|
19
25
|
return [value]
|
20
26
|
|
21
27
|
|
22
28
|
def ensure_path_exists(path: Path | str):
|
23
|
-
"""Creates a specified path if not already existent"""
|
29
|
+
"""Creates a specified path if not already existent."""
|
24
30
|
Path(path).mkdir(parents=True, exist_ok=True)
|
25
31
|
|
26
32
|
|
27
33
|
def clean_up_file_name(name: str) -> str:
|
28
|
-
"""Returns given `name` replacing spaces and colons with underscore, and slashed with a dash"""
|
34
|
+
"""Returns given `name` replacing spaces and colons with underscore, and slashed with a dash."""
|
29
35
|
translation_table = str.maketrans({" ": "_", ":": "_", "/": "-"})
|
30
36
|
return name.translate(translation_table)
|
37
|
+
|
38
|
+
|
39
|
+
def get_csv_files_with_pattern(base_path: Path, pattern: str) -> list[Path]:
|
40
|
+
"""Find all csv files matching the given `pattern` based on the given `base_path`.
|
41
|
+
|
42
|
+
Args:
|
43
|
+
base_path: to start the search from
|
44
|
+
pattern: to match the files against that are to be found
|
45
|
+
|
46
|
+
Returns:
|
47
|
+
Full file paths for files ending with ".csv" and matching the given pattern
|
48
|
+
|
49
|
+
Raises:
|
50
|
+
ValueError: if pattern cannot be used to search path, logged with level "ERROR"
|
51
|
+
"""
|
52
|
+
try:
|
53
|
+
return [file for file in base_path.glob(pattern) if file.suffix.lower() == CSV_FILE_SUFFIX]
|
54
|
+
except NotImplementedError as e:
|
55
|
+
raise log_error(ValueError(_ERR_INVALID_PATTERN.format(pattern, e))) from e
|
56
|
+
|
57
|
+
|
58
|
+
def extend_file_name(original_file: Path, appendix: str) -> Path:
|
59
|
+
"""Return original file path, but appending `FILE_NAME_APPENDIX` before the suffix.
|
60
|
+
|
61
|
+
Args:
|
62
|
+
original_file: from which to derive the new path
|
63
|
+
appendix: to be added to the end of the file name before the suffix
|
64
|
+
|
65
|
+
Returns:
|
66
|
+
new file path including the appendix in the file name
|
67
|
+
"""
|
68
|
+
return Path(original_file.parent, original_file.stem + appendix + original_file.suffix)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: fameio
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.3.0
|
4
4
|
Summary: Tools for input preparation and output digestion of FAME models
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: FAME,fameio,agent-based modelling,energy systems
|
@@ -47,8 +47,7 @@ SPDX-License-Identifier: Apache-2.0 -->
|
|
47
47
|
*Tools for input preparation and output digestion of FAME models*
|
48
48
|
|
49
49
|
FAME-Io compiles input for FAME models in protobuf format and extracts model outputs to human-readable files.
|
50
|
-
Please visit the [FAME-Wiki](https://gitlab.com/fame-framework/wiki/-/wikis/home) to get an explanation of FAME and its
|
51
|
-
components.
|
50
|
+
Please visit the [FAME-Wiki](https://gitlab.com/fame-framework/wiki/-/wikis/home) to get an explanation of FAME and its components.
|
52
51
|
|
53
52
|
# Installation
|
54
53
|
|
@@ -56,30 +55,26 @@ We recommend installing `fameio` using PyPI:
|
|
56
55
|
|
57
56
|
pip install fameio
|
58
57
|
|
59
|
-
You may also use `pipx`. For detailed information please refer to the
|
60
|
-
official `pipx` [documentation](https://github.com/pypa/pipx).
|
58
|
+
You may also use `pipx`. For detailed information please refer to the official `pipx` [documentation](https://github.com/pypa/pipx).
|
61
59
|
|
62
60
|
pipx install fameio
|
63
61
|
|
64
|
-
`fameio` is currently developed and tested for Python 3.
|
62
|
+
`fameio` is currently developed and tested for Python 3.9 or higher.
|
65
63
|
See the `pyproject.toml` for a complete listing of dependencies.
|
66
64
|
|
67
65
|
# Usage
|
68
66
|
|
69
|
-
FAME-Io currently offers two main scripts `makeFameRunConfig` and `convertFameResults
|
70
|
-
|
67
|
+
FAME-Io currently offers two main scripts `makeFameRunConfig` and `convertFameResults`, plus a helper script `reformatTimeSeries`
|
68
|
+
All are automatically installed with the package.
|
71
69
|
The first one creates a protobuf file for FAME applications using YAML definition files and CSV files.
|
72
|
-
The
|
70
|
+
The second one reads output files from FAME applications in protobuf format and converts them to CSV files.
|
71
|
+
The third script reformats time series CSV files to FAME format.
|
73
72
|
|
74
|
-
You may use the [example data](https://gitlab.com/dlr-ve/esy/amiris/examples) provided for
|
75
|
-
the [AMIRIS](https://gitlab.com/dlr-ve/esy/amiris/amiris) model which can be used to simulate electricity markets
|
76
|
-
in [Germany](https://gitlab.com/dlr-ve/esy/amiris/examples/-/tree/main/Germany2019), [Austria](https://gitlab.com/dlr-ve/esy/amiris/examples/-/tree/main/Austria2019),
|
77
|
-
and a simple [proof-of-concept model](https://gitlab.com/dlr-ve/esy/amiris/examples/-/tree/main/Simple).
|
73
|
+
You may use the [example data](https://gitlab.com/dlr-ve/esy/amiris/examples) provided for the [AMIRIS](https://gitlab.com/dlr-ve/esy/amiris/amiris) model which can be used to simulate electricity markets in [Germany](https://gitlab.com/dlr-ve/esy/amiris/examples/-/tree/main/Germany2019), [Austria](https://gitlab.com/dlr-ve/esy/amiris/examples/-/tree/main/Austria2019), and a simple [proof-of-concept model](https://gitlab.com/dlr-ve/esy/amiris/examples/-/tree/main/Simple).
|
78
74
|
|
79
75
|
## Make a FAME run configuration
|
80
76
|
|
81
|
-
Digests configuration files in YAML format, combines them with CSV data files and creates a single input file for FAME
|
82
|
-
applications in protobuf format.
|
77
|
+
Digests configuration files in YAML format, combines them with CSV data files and creates a single input file for FAME applications in protobuf format.
|
83
78
|
Call structure:
|
84
79
|
|
85
80
|
makeFameRunConfig -f <path/to/scenario.yaml>
|
@@ -644,10 +639,8 @@ TIME_SERIES inputs are not directly fed into the Scenario YAML file.
|
|
644
639
|
Instead, TIME_SERIES reference a CSV file that can be stored some place else.
|
645
640
|
These CSV files follow a specific structure:
|
646
641
|
|
647
|
-
* They should contain exactly two columns - any other columns are ignored.
|
648
|
-
|
649
|
-
* The first column must be a time stamp in form `YYYY-MM-DD_hh:mm:ss` or
|
650
|
-
a [FAME-Timestamp](https://gitlab.com/fame-framework/wiki/-/wikis/architecture/decisions/TimeStamp) integer value.
|
642
|
+
* They should contain exactly two columns - any other columns are ignored. A warning is raised if more than two non-empty columns are detected.
|
643
|
+
* The first column must be a time stamp in form `YYYY-MM-DD_hh:mm:ss` or a [FAME-Timestamp](https://gitlab.com/fame-framework/wiki/-/wikis/architecture/decisions/TimeStamp) integer value.
|
651
644
|
* The second column must be a numerical value (either integer or floating-point)
|
652
645
|
* The separator of the two columns is a semicolon
|
653
646
|
* The data must **not** have headers, except for comments marked with `#`
|
@@ -663,11 +656,10 @@ Exemplary content of a valid CSV file:
|
|
663
656
|
2016-01-01_00:00:00;42 # optional comment on this particular data point
|
664
657
|
2017-01-01_00:00:00;0.1
|
665
658
|
|
666
|
-
Please refer also to the detailed article about `TimeStamps` in
|
667
|
-
the
|
668
|
-
For large CSV files (with more than 20,000 rows) we recommend using the integer representation of FAME-Timestamps in the
|
669
|
-
first column (instead of text representation) to improve conversion speed.
|
659
|
+
Please refer also to the detailed article about `TimeStamps` in the [FAME-Wiki](https://gitlab.com/fame-framework/wiki/-/wikis/TimeStamp).
|
660
|
+
For large CSV files (with more than 20,000 rows) we recommend using the integer representation of FAME-Timestamps in the first column (instead of text representation) to improve conversion speed.
|
670
661
|
A warning will be raised for very large files (exceeding 50,000 rows) that require time stamp conversion.
|
662
|
+
Use `reformatTimeSeries` to convert one or multiple timeseries CSV files into FAME format to improve conversion speed and avoid this warning.
|
671
663
|
|
672
664
|
### Split and join multiple YAML files
|
673
665
|
|
@@ -936,6 +928,24 @@ run_config = handle_args(my_arg_string, my_defaults)
|
|
936
928
|
convert_results(run_config)
|
937
929
|
```
|
938
930
|
|
931
|
+
## Reformat time series
|
932
|
+
|
933
|
+
Takes CSV time series files and reformats them into FAME time format.
|
934
|
+
This improves speed of run configuration creation but also reduces readability of the CSV files' content.
|
935
|
+
Thus, we recommend to apply this reformatting only for CSV time series files with more than 20,000 lines.
|
936
|
+
|
937
|
+
Call structure:
|
938
|
+
|
939
|
+
reformatTimeSeries -fp <file_or_file_pattern*.csv>
|
940
|
+
|
941
|
+
You may also specify any of the following arguments:
|
942
|
+
|
943
|
+
| Command | Action |
|
944
|
+
|-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
945
|
+
| `-l` or `--log` <option> | Sets the logging level. Default is `WARNING`. Options are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`. |
|
946
|
+
| `-lf` or `--logfile` <file> | Sets the logging file. Default is `None`. If `None` is provided, all logs get only printed to the console. |
|
947
|
+
| `--replace` or `--no-replace` | If `--replace` is specified, existing csv files are replaced with the new content. Otherwise and by default, new files are created extending the original file name by "_reformatted". |
|
948
|
+
|
939
949
|
## Cite FAME-Io
|
940
950
|
|
941
951
|
If you use FAME-Io for academic work, please cite as follows.
|
@@ -0,0 +1,60 @@
|
|
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=hSdxWFsF7Q6Z9sWRRJso-xFqxBgAyToTy32aJJnOSH4,3451
|
4
|
+
fameio/cli/make_config.py,sha256=vfxREWB4NUf_eZior0L4cu-B3DQZAtUq5splAnN36m0,2720
|
5
|
+
fameio/cli/options.py,sha256=WG07XKzRTat4Pk57DkdEDv0iTM7SzijrSLr7HXwRKkY,1322
|
6
|
+
fameio/cli/parser.py,sha256=yV5YNve0Rv_cVDpZhRK-wmnXyxCJ0_587aR2c3wVCuU,10441
|
7
|
+
fameio/cli/reformat.py,sha256=4UyxaDbT7f-nDs7crgt38s9RYXfM--bNLL4jiCtdJEw,2181
|
8
|
+
fameio/input/__init__.py,sha256=WNyeYBuu0aQ363JX_ULUhI6OQtC123y_3k5zl1TUJS0,508
|
9
|
+
fameio/input/loader/__init__.py,sha256=VtDJtTItjHTZ04uB30t70kRn4-ElWr2C-hj6y1_cnLs,2753
|
10
|
+
fameio/input/loader/controller.py,sha256=lpzcn8iGgWV6wAMduE-1P7unNFvVFESX5iMj6boKI0E,7714
|
11
|
+
fameio/input/loader/loader.py,sha256=zvsmFuK5vNOhBFwFPR2wQ-vcl-Mwip-NgTJUXpfTwYw,5321
|
12
|
+
fameio/input/metadata.py,sha256=oV11xeI9fXyY1Qcl79mV1UyA3K4eH1751qHKAMa8cYE,6568
|
13
|
+
fameio/input/resolver.py,sha256=NakBjnCCWRMz-8gTC_Ggx-2tXq-u6OPjfBOua0Rd2nA,1902
|
14
|
+
fameio/input/scenario/__init__.py,sha256=Pb8O9rVOTwEo48WIgiq1kBnpovpc4D_syC6EjTFGHew,404
|
15
|
+
fameio/input/scenario/agent.py,sha256=n0H8nHwQFfAeTwdJceJpi9VV1muYjJu_PjmzC_vrP84,5526
|
16
|
+
fameio/input/scenario/attribute.py,sha256=pp9cquxfBUKNFwV3bTDBkDXv1k8ThBiAL6Eh-ag4kQk,11386
|
17
|
+
fameio/input/scenario/contract.py,sha256=QPjsChndKMXphIpB_f0IeAiksZG7xz8U-xeLkvYRJUA,13211
|
18
|
+
fameio/input/scenario/exception.py,sha256=o64hd7FQrkTF6Ze075Cbt4TM3OkcyJFVSi4qexLuMoU,1939
|
19
|
+
fameio/input/scenario/fameiofactory.py,sha256=HgLHVQGKsTPEFy8K1ILB7F_lJtHoMhu89inOgDWYP5k,2800
|
20
|
+
fameio/input/scenario/generalproperties.py,sha256=C3ND-PLb1FrCRheIBIyxXHKsZVMW8GZVHUidyInqrOw,3749
|
21
|
+
fameio/input/scenario/scenario.py,sha256=GeS-IDYB-Q6-26QPeKQgA1-FVW90tBHHTBcfrNiwYJA,8376
|
22
|
+
fameio/input/scenario/stringset.py,sha256=a1PehtkMVaVd1S_HCu9-3DxEWCXflzM32HDdqFZSCDY,2529
|
23
|
+
fameio/input/schema/__init__.py,sha256=oIsJVC0hUhwJf_XIBpd1NNTR8sOWEthAy98m6uR7gKc,327
|
24
|
+
fameio/input/schema/agenttype.py,sha256=pOXRJXpiOWDfIq7el52CcPqbnnt8lkiXtIcT_i4F_xc,5684
|
25
|
+
fameio/input/schema/attribute.py,sha256=Q5pn2BK2QP6L0t8xI7QN5SVqylWYIfyBJoTvIoiTHkw,14901
|
26
|
+
fameio/input/schema/java_packages.py,sha256=WlU7Vjesscqiiv8i24J1AhEwsJwG4QviC6k6QOddG24,2944
|
27
|
+
fameio/input/schema/schema.py,sha256=5KXd1d9KxQ6JCMYqI81yOEBUX4s_uEPXM8twXzDEjaA,3851
|
28
|
+
fameio/input/validator.py,sha256=VMgj1u-qedarKuMrD3fkBZhdYVWvYha768iEdI58Fvc,24040
|
29
|
+
fameio/input/writer.py,sha256=XE70AysjcJgmIjepzdzYV7S3lmb4F8V0Yvs8krRzXRo,15867
|
30
|
+
fameio/logs.py,sha256=kRaGxHjvmB2WjxKSHr-G9IoVCexkWaALzE4Mtky7Kik,4519
|
31
|
+
fameio/output/__init__.py,sha256=ixupBH6NNsC36gL4egdS6jg1fcpH1nFqJGeAUKDrS3E,211
|
32
|
+
fameio/output/agent_type.py,sha256=qyt7sVOo6KY1NSbe384Io9dSjXxw0KJQ-RS7TZtcgPM,6551
|
33
|
+
fameio/output/conversion.py,sha256=qUC5Xfe8p72TKP5_PuxLnGUo2pPIevumV2PH-GB5aRA,4692
|
34
|
+
fameio/output/csv_writer.py,sha256=WIILdfS2gk4z9LIE8Ds58_ZLA3PfglMGJrdEsk0_71k,8103
|
35
|
+
fameio/output/data_transformer.py,sha256=mlyCrOdvVM9s-A6ROekequPif56qOaRAKvQjK86dXY0,5251
|
36
|
+
fameio/output/execution_dao.py,sha256=w7_6a462RAF1D4URnzMGOT4aKqV9oNGAZMHZR2yLb4A,6803
|
37
|
+
fameio/output/input_dao.py,sha256=NC9LMj9I93Ugt1BfFJH1j8sfpuO7cYXw0Ypoqa3LS7c,8460
|
38
|
+
fameio/output/output_dao.py,sha256=1j39qH_utLEE_AYRw2aoWLAomEUgScFECDIphwYysUA,4888
|
39
|
+
fameio/output/reader.py,sha256=uuhZnNeT1plV5iO_qkoI2L1k87WaU8uhmSUFpFnO0hI,6569
|
40
|
+
fameio/output/yaml_writer.py,sha256=vxbJTeqBGVMao7P6_ODpv20ANtswlPYPIob9T7tn5GI,1091
|
41
|
+
fameio/scripts/__init__.py,sha256=obt5YXd1mRl9VLswVQnLJzkkU0rbv5TbxoQoPdro3qM,1278
|
42
|
+
fameio/scripts/__init__.py.license,sha256=2-OqCNxP4504xY2XQqseYypJi1_Qx4xJSzO3t7c3ACM,107
|
43
|
+
fameio/scripts/convert_results.py,sha256=ML7v7XxyDW3bjCHRfG07rnudjEafpyfJSyXjfL9Bycc,7994
|
44
|
+
fameio/scripts/convert_results.py.license,sha256=EXKiZn-aoR7nO3auGMNGk9upHbobPLHAIBYUO0S6LUg,107
|
45
|
+
fameio/scripts/exception.py,sha256=q0tewaxn_xM1QgqSYVw_rjth2e9DPaTgWWCjDtYxjLg,236
|
46
|
+
fameio/scripts/make_config.py,sha256=O6GghQ1M1Y6bxlaS1c9joB066SCaCWvG_V-WTFqFreU,2016
|
47
|
+
fameio/scripts/make_config.py.license,sha256=EXKiZn-aoR7nO3auGMNGk9upHbobPLHAIBYUO0S6LUg,107
|
48
|
+
fameio/scripts/reformat.py,sha256=jYJsl0UkXtZyn2GyA-QVAARilkHa_ZBWa5CGNIGNDuo,2850
|
49
|
+
fameio/scripts/reformat.py.license,sha256=EXKiZn-aoR7nO3auGMNGk9upHbobPLHAIBYUO0S6LUg,107
|
50
|
+
fameio/series.py,sha256=ipjDsDmgVlVzaYvXwXcWM8fpCy5w8hTNWTi4hPmvOuM,13654
|
51
|
+
fameio/time.py,sha256=rJbcX304bjmZqmr7DozwZAvvNf4FCpxUYjUppl0BFb0,8431
|
52
|
+
fameio/tools.py,sha256=metmgKuZ0lubmTIPY3w_ertDxSLQtHIa6OlpcapyIk4,2478
|
53
|
+
fameio-3.3.0.dist-info/entry_points.txt,sha256=IUbTceB_CLFOHulubEf9jgiCFsV2TchlzCssmjbiOKI,176
|
54
|
+
fameio-3.3.0.dist-info/LICENSE.txt,sha256=eGHBZnhr9CWjE95SWjRfmhtK1lvVn5X4Fpf3KrrAZDg,10391
|
55
|
+
fameio-3.3.0.dist-info/LICENSES/Apache-2.0.txt,sha256=eGHBZnhr9CWjE95SWjRfmhtK1lvVn5X4Fpf3KrrAZDg,10391
|
56
|
+
fameio-3.3.0.dist-info/LICENSES/CC-BY-4.0.txt,sha256=y9WvMYKGt0ZW8UXf9QkZB8wj1tjJrQngKR7CSXeSukE,19051
|
57
|
+
fameio-3.3.0.dist-info/LICENSES/CC0-1.0.txt,sha256=9Ofzc7m5lpUDN-jUGkopOcLZC3cl6brz1QhKInF60yg,7169
|
58
|
+
fameio-3.3.0.dist-info/METADATA,sha256=10ZT26KgUXe2-ko_ZFfmqS2Z9eLTzim_9PST-aQwOHQ,41721
|
59
|
+
fameio-3.3.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
60
|
+
fameio-3.3.0.dist-info/RECORD,,
|
fameio-3.2.0.dist-info/RECORD
DELETED
@@ -1,56 +0,0 @@
|
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|