apyefa 0.0.5__tar.gz → 0.0.7__tar.gz

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.

Potentially problematic release.


This version of apyefa might be problematic. Click here for more details.

Files changed (52) hide show
  1. {apyefa-0.0.5 → apyefa-0.0.7}/PKG-INFO +3 -5
  2. {apyefa-0.0.5 → apyefa-0.0.7}/README.md +2 -4
  3. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/__init__.py +2 -0
  4. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/client.py +2 -4
  5. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/command.py +3 -1
  6. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/command_departures.py +4 -2
  7. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/command_serving_lines.py +4 -2
  8. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/command_stop_finder.py +8 -2
  9. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/command_system_info.py +4 -2
  10. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/command_trip.py +5 -1
  11. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/data_classes.py +1 -1
  12. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa.egg-info/PKG-INFO +3 -5
  13. {apyefa-0.0.5 → apyefa-0.0.7}/pyproject.toml +1 -1
  14. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/test_cmd.py +1 -1
  15. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/test_cmd_departures.py +1 -1
  16. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/test_cmd_serving_lines.py +3 -3
  17. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/test_cmd_stop_finder.py +2 -2
  18. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/test_cmd_system_info.py +5 -4
  19. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/test_commands.py +8 -5
  20. {apyefa-0.0.5 → apyefa-0.0.7}/.github/labeler.yml +0 -0
  21. {apyefa-0.0.5 → apyefa-0.0.7}/.github/release-drafter.yml +0 -0
  22. {apyefa-0.0.5 → apyefa-0.0.7}/.github/workflows/labeler.yml +0 -0
  23. {apyefa-0.0.5 → apyefa-0.0.7}/.github/workflows/python-package.yml +0 -0
  24. {apyefa-0.0.5 → apyefa-0.0.7}/.github/workflows/release_drafter.yml +0 -0
  25. {apyefa-0.0.5 → apyefa-0.0.7}/.gitignore +0 -0
  26. {apyefa-0.0.5 → apyefa-0.0.7}/.vscode/settings.json +0 -0
  27. {apyefa-0.0.5 → apyefa-0.0.7}/LICENSE +0 -0
  28. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/__init__.py +0 -0
  29. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/parsers/__init__.py +0 -0
  30. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/parsers/parser.py +0 -0
  31. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/parsers/rapid_json_parser.py +0 -0
  32. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/commands/parsers/xml_parser.py +0 -0
  33. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/exceptions.py +0 -0
  34. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa/helpers.py +0 -0
  35. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa.egg-info/SOURCES.txt +0 -0
  36. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa.egg-info/dependency_links.txt +0 -0
  37. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa.egg-info/requires.txt +0 -0
  38. {apyefa-0.0.5 → apyefa-0.0.7}/apyefa.egg-info/top_level.txt +0 -0
  39. {apyefa-0.0.5 → apyefa-0.0.7}/examples.py +0 -0
  40. {apyefa-0.0.5 → apyefa-0.0.7}/setup.cfg +0 -0
  41. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/__init__.py +0 -0
  42. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/parsers/__init__.py +0 -0
  43. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/parsers/test_json_parser.py +0 -0
  44. {apyefa-0.0.5 → apyefa-0.0.7}/tests/commands/parsers/test_xml_parser.py +0 -0
  45. {apyefa-0.0.5 → apyefa-0.0.7}/tests/conftest.py +0 -0
  46. {apyefa-0.0.5 → apyefa-0.0.7}/tests/data_classes/__init__.py +0 -0
  47. {apyefa-0.0.5 → apyefa-0.0.7}/tests/data_classes/test_departure.py +0 -0
  48. {apyefa-0.0.5 → apyefa-0.0.7}/tests/data_classes/test_location.py +0 -0
  49. {apyefa-0.0.5 → apyefa-0.0.7}/tests/data_classes/test_system_info.py +0 -0
  50. {apyefa-0.0.5 → apyefa-0.0.7}/tests/data_classes/test_transportation.py +0 -0
  51. {apyefa-0.0.5 → apyefa-0.0.7}/tests/test_client.py +0 -0
  52. {apyefa-0.0.5 → apyefa-0.0.7}/tests/test_helpers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apyefa
3
- Version: 0.0.5
3
+ Version: 0.0.7
4
4
  Summary: Python API for EFA(Elektronische Fahrplanauskunft) async requests
5
5
  Author-email: Alex Jung <jungdevelop@gmail.com>
6
6
  License: MIT License
@@ -185,16 +185,14 @@ async with EfaClient("https://efa.vgn.de/vgnExt_oeffi/") as client:
185
185
  ```
186
186
 
187
187
  ## locations_by_coord()
188
- Find localities by coordinates.
189
-
190
- > :x: Currently test endpoint does not sent any answers for this request
188
+ Find localities by their coordinates.
191
189
 
192
190
  ### Arguments
193
191
  |Arguments|Type |Required|Description|
194
192
  |---------|--------------------|--------|-----------|
195
193
  |coord_x |float |required|X-coordinate|
196
194
  |coord_y |float |required|Y-coordinate|
197
- |format |[CoordFormat](#coordformat)|optional|Coordinates format used for request|
195
+ |format |[CoordFormat](#coordformat)|optional|Coordinates format used for request. Default to WGS84.|
198
196
  |limit |int |optional|Max size of returned list. Default value is `10`|
199
197
 
200
198
  ### Return value
@@ -140,16 +140,14 @@ async with EfaClient("https://efa.vgn.de/vgnExt_oeffi/") as client:
140
140
  ```
141
141
 
142
142
  ## locations_by_coord()
143
- Find localities by coordinates.
144
-
145
- > :x: Currently test endpoint does not sent any answers for this request
143
+ Find localities by their coordinates.
146
144
 
147
145
  ### Arguments
148
146
  |Arguments|Type |Required|Description|
149
147
  |---------|--------------------|--------|-----------|
150
148
  |coord_x |float |required|X-coordinate|
151
149
  |coord_y |float |required|Y-coordinate|
152
- |format |[CoordFormat](#coordformat)|optional|Coordinates format used for request|
150
+ |format |[CoordFormat](#coordformat)|optional|Coordinates format used for request. Default to WGS84.|
153
151
  |limit |int |optional|Max size of returned list. Default value is `10`|
154
152
 
155
153
  ### Return value
@@ -2,6 +2,7 @@ from apyefa.client import EfaClient
2
2
  from apyefa.data_classes import (
3
3
  Departure,
4
4
  Line,
5
+ LineRequestType,
5
6
  Location,
6
7
  LocationFilter,
7
8
  LocationType,
@@ -12,6 +13,7 @@ from apyefa.data_classes import (
12
13
  __all__ = [
13
14
  "LocationFilter",
14
15
  "Location",
16
+ "LineRequestType",
15
17
  "LocationType",
16
18
  "Departure",
17
19
  "SystemInfo",
@@ -79,14 +79,13 @@ class EfaClient:
79
79
  _LOGGER.debug(f"limit: {limit}")
80
80
 
81
81
  command = CommandStopFinder("any", name)
82
- command.add_param("anyMaxSizeHitList", limit)
83
82
 
84
83
  if filters:
85
84
  command.add_param("anyObjFilter_sf", sum(filters))
86
85
 
87
86
  response = await self._run_query(self._build_url(command))
88
87
 
89
- return command.parse(response)
88
+ return command.parse(response)[:limit]
90
89
 
91
90
  async def location_by_coord(
92
91
  self,
@@ -113,11 +112,10 @@ class EfaClient:
113
112
  _LOGGER.debug(f"limit: {limit}")
114
113
 
115
114
  command = CommandStopFinder("coord", f"{coord_x}:{coord_y}:{format}")
116
- command.add_param("anyMaxSizeHitList", limit)
117
115
 
118
116
  response = await self._run_query(self._build_url(command))
119
117
 
120
- return command.parse(response)
118
+ return command.parse(response)[:limit]
121
119
 
122
120
  async def trip(self):
123
121
  raise NotImplementedError
@@ -7,6 +7,8 @@ from apyefa.commands.parsers.rapid_json_parser import RapidJsonParser
7
7
  from apyefa.exceptions import EfaFormatNotSupported, EfaParameterError
8
8
  from apyefa.helpers import is_date, is_datetime, is_time
9
9
 
10
+ from ..data_classes import CoordFormat
11
+
10
12
  _LOGGER = logging.getLogger(__name__)
11
13
 
12
14
 
@@ -18,7 +20,7 @@ class Command:
18
20
  self._format: str = output_format
19
21
 
20
22
  self.add_param("outputFormat", output_format)
21
- self.add_param("coordOutputFormat", "WGS84")
23
+ self.add_param("coordOutputFormat", CoordFormat.WGS84.value)
22
24
 
23
25
  def add_param(self, param: str, value: str):
24
26
  if not param or not value:
@@ -3,7 +3,7 @@ import logging
3
3
  from voluptuous import Any, Date, Datetime, Optional, Required, Schema
4
4
 
5
5
  from apyefa.commands.command import Command
6
- from apyefa.data_classes import Departure
6
+ from apyefa.data_classes import CoordFormat, Departure
7
7
 
8
8
  _LOGGER = logging.getLogger(__name__)
9
9
 
@@ -32,7 +32,9 @@ class CommandDepartures(Command):
32
32
  return Schema(
33
33
  {
34
34
  Required("outputFormat", default="rapidJSON"): Any("rapidJSON"),
35
- Required("coordOutputFormat", default="WGS84"): Any("WGS84"),
35
+ Required("coordOutputFormat", default="WGS84"): Any(
36
+ *[x.value for x in CoordFormat]
37
+ ),
36
38
  Required("name_dm"): str,
37
39
  Required("type_dm", default="stop"): Any("any", "stop"),
38
40
  Required("mode", default="direct"): Any("any", "direct"),
@@ -3,7 +3,7 @@ import logging
3
3
  from voluptuous import Any, Optional, Range, Required, Schema
4
4
 
5
5
  from apyefa.commands.command import Command
6
- from apyefa.data_classes import Line, LineRequestType
6
+ from apyefa.data_classes import CoordFormat, Line, LineRequestType
7
7
 
8
8
  _LOGGER = logging.getLogger(__name__)
9
9
 
@@ -41,7 +41,9 @@ class CommandServingLines(Command):
41
41
  return Schema(
42
42
  {
43
43
  Required("outputFormat", default="rapidJSON"): Any("rapidJSON"),
44
- Required("coordOutputFormat", default="WGS84"): Any("WGS84"),
44
+ Required("coordOutputFormat", default="WGS84"): Any(
45
+ *[x.value for x in CoordFormat]
46
+ ),
45
47
  Required("mode", default="line"): Any("odv", "line"),
46
48
  # mode 'odv'
47
49
  Optional("type_sl"): Any("stopID"),
@@ -3,7 +3,7 @@ import logging
3
3
  from voluptuous import Any, Optional, Range, Required, Schema
4
4
 
5
5
  from apyefa.commands.command import Command
6
- from apyefa.data_classes import Location, LocationFilter
6
+ from apyefa.data_classes import CoordFormat, Location, LocationFilter
7
7
 
8
8
  _LOGGER = logging.getLogger(__name__)
9
9
 
@@ -33,7 +33,9 @@ class CommandStopFinder(Command):
33
33
  return Schema(
34
34
  {
35
35
  Required("outputFormat", default="rapidJSON"): Any("rapidJSON"),
36
- Required("coordOutputFormat", default="WGS84"): Any("WGS84"),
36
+ Required("coordOutputFormat", default="WGS84"): Any(
37
+ *[x.value for x in CoordFormat]
38
+ ),
37
39
  Required("type_sf", default="any"): Any("any", "coord"),
38
40
  Required("name_sf"): str,
39
41
  Optional("anyMaxSizeHitList"): int,
@@ -41,6 +43,10 @@ class CommandStopFinder(Command):
41
43
  Optional("anyResSort_sf"): str,
42
44
  Optional("anyObjFilter_sf"): int,
43
45
  Optional("doNotSearchForStops_sf"): Any("0", "1", 0, 1),
46
+ Optional("locationInfoActive_sf"): Any("0", "1", 0, 1),
47
+ Optional("useHouseNumberList_sf"): Any("0", "1", 0, 1),
48
+ Optional("useLocalityMainStop"): Any("0", "1", 0, 1),
49
+ Optional("prMinQu"): int,
44
50
  Optional("anyObjFilter_origin"): Range(
45
51
  min=0, max=sum([x.value for x in LocationFilter])
46
52
  ),
@@ -3,7 +3,7 @@ import logging
3
3
  from voluptuous import Any, Optional, Required, Schema
4
4
 
5
5
  from apyefa.commands.command import Command
6
- from apyefa.data_classes import SystemInfo
6
+ from apyefa.data_classes import CoordFormat, SystemInfo
7
7
 
8
8
  _LOGGER = logging.getLogger(__name__)
9
9
 
@@ -23,6 +23,8 @@ class CommandSystemInfo(Command):
23
23
  return Schema(
24
24
  {
25
25
  Required("outputFormat", default="rapidJSON"): Any("rapidJSON"),
26
- Optional("coordOutputFormat", default="WGS84"): Any("WGS84"),
26
+ Optional("coordOutputFormat", default="WGS84"): Any(
27
+ *[x.value for x in CoordFormat]
28
+ ),
27
29
  }
28
30
  )
@@ -4,6 +4,8 @@ from voluptuous import Any, Optional, Required, Schema
4
4
 
5
5
  from apyefa.commands.command import Command
6
6
 
7
+ from ..data_classes import CoordFormat
8
+
7
9
  _LOGGER = logging.getLogger(__name__)
8
10
 
9
11
 
@@ -18,7 +20,9 @@ class CommandTrip(Command):
18
20
  return Schema(
19
21
  {
20
22
  Required("outputFormat", default="rapidJSON"): Any("rapidJSON"),
21
- Required("coordOutputFormat", default="WGS84"): Any("WGS84"),
23
+ Required("coordOutputFormat", default="WGS84"): Any(
24
+ *[x.value for x in CoordFormat]
25
+ ),
22
26
  Required("type_origin", default="any"): Any("any", "coord"),
23
27
  Required("name_origin"): str,
24
28
  Required("type_destination", default="any"): Any("any", "coord"),
@@ -97,7 +97,7 @@ def IsLocationType(type: str):
97
97
 
98
98
  SCHEMA_PROPERTIES = vol.Schema(
99
99
  {
100
- vol.Required("stopId"): str,
100
+ vol.Optional("stopId"): str,
101
101
  vol.Optional("downloads"): list,
102
102
  vol.Optional("area"): str,
103
103
  vol.Optional("platform"): str,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apyefa
3
- Version: 0.0.5
3
+ Version: 0.0.7
4
4
  Summary: Python API for EFA(Elektronische Fahrplanauskunft) async requests
5
5
  Author-email: Alex Jung <jungdevelop@gmail.com>
6
6
  License: MIT License
@@ -185,16 +185,14 @@ async with EfaClient("https://efa.vgn.de/vgnExt_oeffi/") as client:
185
185
  ```
186
186
 
187
187
  ## locations_by_coord()
188
- Find localities by coordinates.
189
-
190
- > :x: Currently test endpoint does not sent any answers for this request
188
+ Find localities by their coordinates.
191
189
 
192
190
  ### Arguments
193
191
  |Arguments|Type |Required|Description|
194
192
  |---------|--------------------|--------|-----------|
195
193
  |coord_x |float |required|X-coordinate|
196
194
  |coord_y |float |required|Y-coordinate|
197
- |format |[CoordFormat](#coordformat)|optional|Coordinates format used for request|
195
+ |format |[CoordFormat](#coordformat)|optional|Coordinates format used for request. Default to WGS84.|
198
196
  |limit |int |optional|Max size of returned list. Default value is `10`|
199
197
 
200
198
  ### Return value
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "apyefa"
10
- version = "0.0.5"
10
+ version = "0.0.7"
11
11
  requires-python = ">= 3.11"
12
12
  description = "Python API for EFA(Elektronische Fahrplanauskunft) async requests"
13
13
  authors = [
@@ -48,7 +48,7 @@ def test_command_init(mock_command):
48
48
  def test_command_to_str_default_params(mock_command):
49
49
  assert (
50
50
  str(mock_command)
51
- == "my_name?commonMacro=my_macro&outputFormat=rapidJSON&coordOutputFormat=WGS84"
51
+ == "my_name?commonMacro=my_macro&outputFormat=rapidJSON&coordOutputFormat=WGS84[dd.ddddd]"
52
52
  )
53
53
 
54
54
 
@@ -28,7 +28,7 @@ def test_init_name_and_macro(command):
28
28
  def test_init_params(command):
29
29
  expected_params = {
30
30
  "outputFormat": "rapidJSON",
31
- "coordOutputFormat": "WGS84",
31
+ "coordOutputFormat": "WGS84[dd.ddddd]",
32
32
  "name_dm": "my_stop",
33
33
  }
34
34
 
@@ -29,7 +29,7 @@ def test_init_params_mode_odv():
29
29
 
30
30
  expected_params = {
31
31
  "outputFormat": "rapidJSON",
32
- "coordOutputFormat": "WGS84",
32
+ "coordOutputFormat": "WGS84[dd.ddddd]",
33
33
  "mode": "odv",
34
34
  "name_sl": "my_value",
35
35
  "type_sl": "stopID",
@@ -43,7 +43,7 @@ def test_init_params_mode_line():
43
43
 
44
44
  expected_params = {
45
45
  "outputFormat": "rapidJSON",
46
- "coordOutputFormat": "WGS84",
46
+ "coordOutputFormat": "WGS84[dd.ddddd]",
47
47
  "mode": "line",
48
48
  "lineName": "my_value",
49
49
  }
@@ -89,6 +89,6 @@ def test_add_param_failed(command, param, value):
89
89
 
90
90
  # test 'to_str() and __str()__'
91
91
  def test_to_str(command):
92
- expected_str = f"{NAME}?commonMacro={MACRO}&outputFormat=rapidJSON&coordOutputFormat=WGS84&type_sl=stopID&name_sl=my_name&mode=odv"
92
+ expected_str = f"{NAME}?commonMacro={MACRO}&outputFormat=rapidJSON&coordOutputFormat=WGS84[dd.ddddd]&type_sl=stopID&name_sl=my_name&mode=odv"
93
93
 
94
94
  assert command.to_str() == expected_str and str(command) == expected_str
@@ -24,7 +24,7 @@ def test_init_name_and_macro(command):
24
24
  def test_init_params(command):
25
25
  expected_params = {
26
26
  "outputFormat": "rapidJSON",
27
- "coordOutputFormat": "WGS84",
27
+ "coordOutputFormat": "WGS84[dd.ddddd]",
28
28
  "type_sf": "any",
29
29
  "name_sf": "my_name",
30
30
  }
@@ -49,7 +49,7 @@ def test_add_param_failed(command, param, value):
49
49
 
50
50
  # test 'to_str() and __str()__'
51
51
  def test_to_str(command):
52
- expected_str = f"{NAME}?commonMacro={MACRO}&outputFormat=rapidJSON&coordOutputFormat=WGS84&type_sf=any&name_sf=my_name"
52
+ expected_str = f"{NAME}?commonMacro={MACRO}&outputFormat=rapidJSON&coordOutputFormat=WGS84[dd.ddddd]&type_sf=any&name_sf=my_name"
53
53
 
54
54
  assert command.to_str() == expected_str and str(command) == expected_str
55
55
 
@@ -23,7 +23,10 @@ def test_init_name_and_macro(command):
23
23
 
24
24
 
25
25
  def test_init_parameters(command):
26
- expected_params = {"outputFormat": "rapidJSON", "coordOutputFormat": "WGS84"}
26
+ expected_params = {
27
+ "outputFormat": "rapidJSON",
28
+ "coordOutputFormat": "WGS84[dd.ddddd]",
29
+ }
27
30
 
28
31
  assert command._parameters == expected_params
29
32
 
@@ -45,9 +48,7 @@ def test_add_param_failed(command, param, value):
45
48
 
46
49
  # test 'to_str() and __str()__'
47
50
  def test_to_str(command):
48
- expected_str = (
49
- f"{NAME}?commonMacro={MACRO}&outputFormat=rapidJSON&coordOutputFormat=WGS84"
50
- )
51
+ expected_str = f"{NAME}?commonMacro={MACRO}&outputFormat=rapidJSON&coordOutputFormat=WGS84[dd.ddddd]"
51
52
 
52
53
  assert command.to_str() == expected_str and str(command) == expected_str
53
54
 
@@ -53,17 +53,20 @@ def test_init_macro_and_name(command, cmd_name, cmd_macro, request):
53
53
  [
54
54
  (
55
55
  "system_info_command",
56
- {"outputFormat": "rapidJSON", "coordOutputFormat": "WGS84"},
56
+ {"outputFormat": "rapidJSON", "coordOutputFormat": "WGS84[dd.ddddd]"},
57
57
  ),
58
58
  (
59
59
  "departures_command",
60
60
  {
61
61
  "outputFormat": "rapidJSON",
62
- "coordOutputFormat": "WGS84",
62
+ "coordOutputFormat": "WGS84[dd.ddddd]",
63
63
  "name_dm": "my_stop",
64
64
  },
65
65
  ),
66
- ("trip_command", {"outputFormat": "rapidJSON", "coordOutputFormat": "WGS84"}),
66
+ (
67
+ "trip_command",
68
+ {"outputFormat": "rapidJSON", "coordOutputFormat": "WGS84[dd.ddddd]"},
69
+ ),
67
70
  ],
68
71
  )
69
72
  def test_init_parameters(command, expected, request):
@@ -79,7 +82,7 @@ def test_init_parameters_serving_lines():
79
82
  cmd = CommandServingLines("line", "my_value")
80
83
  assert cmd._parameters == {
81
84
  "outputFormat": "rapidJSON",
82
- "coordOutputFormat": "WGS84",
85
+ "coordOutputFormat": "WGS84[dd.ddddd]",
83
86
  "lineName": "my_value",
84
87
  "mode": "line",
85
88
  }
@@ -87,7 +90,7 @@ def test_init_parameters_serving_lines():
87
90
  cmd = CommandServingLines("odv", "my_value")
88
91
  assert cmd._parameters == {
89
92
  "outputFormat": "rapidJSON",
90
- "coordOutputFormat": "WGS84",
93
+ "coordOutputFormat": "WGS84[dd.ddddd]",
91
94
  "type_sl": "stopID",
92
95
  "name_sl": "my_value",
93
96
  "mode": "odv",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes