diff --git a/interlocking/infrastructureprovider/infrastructureprovider.py b/interlocking/infrastructureprovider/infrastructureprovider.py
index 3eff1c3..a6d66ef 100644
--- a/interlocking/infrastructureprovider/infrastructureprovider.py
+++ b/interlocking/infrastructureprovider/infrastructureprovider.py
@@ -74,16 +74,16 @@ def is_signal_covered(self, yaramo_signal: Signal):
return yaramo_signal.name in self.only_apply_for_signals or \
(len(self.only_apply_for_signals) == 0 and yaramo_signal.name not in self.apply_for_all_signals_except)
- async def call_set_signal_state(self, yaramo_signal: Signal, target_state: str):
+ async def call_set_signal_aspect(self, yaramo_signal: Signal, target_state: str):
if self.is_signal_covered(yaramo_signal):
- return await self.set_signal_state(yaramo_signal, target_state)
+ return await self.set_signal_aspect(yaramo_signal, target_state)
# return True to skip this call and not prevent successfully turning of signal.
return True
@abstractmethod
- async def set_signal_state(self, yaramo_signal: Signal, target_state: str):
- """This method will be called when the interlocking controller wants to change the signal-state of a specific signal.
- `yaramo_signal` corresponds to the identifier of the signal in the yaramo model; `target_state` is one of `"halt"` and `"go"`.
+ async def set_signal_aspect(self, yaramo_signal: Signal, target_aspect: str):
+ """This method will be called when the interlocking controller wants to change the signal-aspect of a specific signal.
+ `yaramo_signal` corresponds to the identifier of the signal in the yaramo model; `target_aspect` is one of `"halt"` and `"go"`.
"""
pass
diff --git a/interlocking/infrastructureprovider/logginginfrastructureprovider.py b/interlocking/infrastructureprovider/logginginfrastructureprovider.py
index e27e675..077ff63 100644
--- a/interlocking/infrastructureprovider/logginginfrastructureprovider.py
+++ b/interlocking/infrastructureprovider/logginginfrastructureprovider.py
@@ -8,8 +8,8 @@ class LoggingInfrastructureProvider(InfrastructureProvider):
def __init__(self, **kwargs):
super().__init__(**kwargs)
- async def set_signal_state(self, yaramo_signal, target_state):
- logging.info(f"{time.strftime('%X')} Set signal {yaramo_signal.name} to {target_state}")
+ async def set_signal_aspect(self, yaramo_signal, target_aspect):
+ logging.info(f"{time.strftime('%X')} Set signal {yaramo_signal.name} to {target_aspect}")
return True
async def turn_point(self, yaramo_point, target_orientation: str):
diff --git a/interlocking/infrastructureprovider/randomwaitinfrastructureprovider.py b/interlocking/infrastructureprovider/randomwaitinfrastructureprovider.py
index 95443ce..6fd638e 100644
--- a/interlocking/infrastructureprovider/randomwaitinfrastructureprovider.py
+++ b/interlocking/infrastructureprovider/randomwaitinfrastructureprovider.py
@@ -27,14 +27,14 @@ def __init__(self, fail_probability=0.0, signal_time_range: range = range(2, 5),
self.always_succeed_for = always_succeed_for
self.always_fail_for = always_fail_for
- async def set_signal_state(self, yaramo_signal: Signal, target_state):
+ async def set_signal_aspect(self, yaramo_signal: Signal, target_aspect: str):
wait = random.sample(self.signal_time_range, 1)[0]
await asyncio.sleep(wait)
if (random.random() >= self.fail_probability or yaramo_signal.name in self.always_succeed_for) \
and yaramo_signal.name not in self.always_fail_for:
- logging.info(f"{time.strftime('%X')} Completed setting signal {yaramo_signal.name} to {target_state} (waited {wait})")
+ logging.info(f"{time.strftime('%X')} Completed setting signal {yaramo_signal.name} to {target_aspect} (waited {wait})")
return True
- logging.warning(f"{time.strftime('%X')} Failed setting signal {yaramo_signal.name} to {target_state} (waited {wait})")
+ logging.warning(f"{time.strftime('%X')} Failed setting signal {yaramo_signal.name} to {target_aspect} (waited {wait})")
return False
async def turn_point(self, yaramo_point: Node, target_orientation: str):
diff --git a/interlocking/infrastructureprovider/sumoinfrastructureprovider.py b/interlocking/infrastructureprovider/sumoinfrastructureprovider.py
index c03d407..0e98548 100644
--- a/interlocking/infrastructureprovider/sumoinfrastructureprovider.py
+++ b/interlocking/infrastructureprovider/sumoinfrastructureprovider.py
@@ -8,10 +8,10 @@ def __init__(self, traci_instance, **kwargs):
super().__init__(**kwargs)
self.traci_instance = traci_instance
- async def set_signal_state(self, yaramo_signal, target_state):
- if target_state == "go":
+ async def set_signal_aspect(self, yaramo_signal, target_aspect):
+ if target_aspect == "go":
self.traci_instance.trafficlight.setRedYellowGreenState(yaramo_signal.name, "GG")
- elif target_state == "halt":
+ elif target_aspect == "halt":
if yaramo_signal.direction == SignalDirection.IN:
self.traci_instance.trafficlight.setRedYellowGreenState(yaramo_signal.name, "rG")
else:
diff --git a/interlocking/interlockingcontroller/flankprotectioncontroller.py b/interlocking/interlockingcontroller/flankprotectioncontroller.py
new file mode 100644
index 0000000..1e68fa8
--- /dev/null
+++ b/interlocking/interlockingcontroller/flankprotectioncontroller.py
@@ -0,0 +1,106 @@
+from .signalcontroller import SignalController
+from interlocking.model import Route, Point, OccupancyState, Signal
+from yaramo.model import SignalDirection, NodeConnectionDirection
+import logging
+
+
+class FlankProtectionController(object):
+
+ def __init__(self, point_controller, signal_controller: SignalController):
+ self.point_controller = point_controller
+ self.signal_controller = signal_controller
+
+ def reset(self):
+ for point in self.point_controller.points.values():
+ point.is_used_for_flank_protection = False
+ for signal in self.signal_controller.signals.values():
+ signal.is_used_for_flank_protection = False
+
+ async def add_flank_protection_for_point(self, point: Point, point_orientation: str,
+ route: Route, train_id: str) -> bool:
+ signals, points = self._get_flank_protection_elements_of_point(point, point_orientation)
+ results = []
+ for signal in signals:
+ logging.info(f"--- Use signal {signal.yaramo_signal.name} for flank protection as 'halt-zeigendes Signal'")
+ change_successful = await self.signal_controller.set_signal_halt(signal)
+ results.append(change_successful)
+ if change_successful:
+ signal.is_used_for_flank_protection = True
+ for point in points:
+ orientation = points[point]
+ if orientation is not None:
+ # In case of a Schutztansportweiche the orientation is not relevant (None).
+ logging.info(f"--- Use point {point.point_id} for flank protection as 'Schutzweiche'")
+ change_successful = await self.point_controller.turn_point(point, orientation)
+ results.append(change_successful)
+ if change_successful:
+ point.is_used_for_flank_protection = True
+ else:
+ logging.info(f"--- Use point {point.point_id} for flank protection as 'Schutztransportweiche'")
+ point.is_used_for_flank_protection = True
+ return all(results)
+
+ def free_flank_protection_of_point(self, point: Point, point_orientation: str):
+ signals, points = self._get_flank_protection_elements_of_point(point, point_orientation)
+ for signal in signals:
+ signal.is_used_for_flank_protection = False
+ for point in points:
+ point.is_used_for_flank_protection = False
+
+ def _get_flank_protection_elements_of_point(self,
+ point: Point,
+ point_orientation: str | None) -> tuple[list[Signal],
+ dict[Point, str | None]]:
+ flank_protection_tracks = []
+ if point_orientation is None:
+ # It's only none, iff there is a flank protection transport point (where the flank
+ # protection area comes from Spitze
+ flank_protection_tracks = [point.left, point.right]
+ elif point_orientation == "left":
+ flank_protection_tracks = [point.right]
+ elif point_orientation == "right":
+ flank_protection_tracks = [point.left]
+
+ signal_results: list[Signal] = []
+ point_results: dict[Point, str | None] = {}
+
+ for flank_protection_track in flank_protection_tracks:
+ # Search for signals
+ yaramo_edge = flank_protection_track.yaramo_edge
+ node_a = point.yaramo_node
+ node_b = yaramo_edge.get_other_node(node_a)
+ direction = yaramo_edge.get_direction_based_on_nodes(node_a, node_b)
+
+ opposite_direction = SignalDirection.IN
+ if direction == SignalDirection.IN:
+ opposite_direction = SignalDirection.GEGEN
+ yaramo_signals_in_direction = yaramo_edge.get_signals_with_direction_in_order(opposite_direction)
+ # If there is any signal, take the closest one to the point and use it as halt-showing signal.
+ found_signal = False
+ if len(yaramo_signals_in_direction) > 0:
+ yaramo_signal = yaramo_signals_in_direction[-1] # Take the last one, which is the closest one.
+ for signal_uuid in self.signal_controller.signals:
+ if signal_uuid == yaramo_signal.uuid:
+ signal_results.append(self.signal_controller.signals[signal_uuid])
+ found_signal = True
+ break
+
+ # No Halt zeigendes Signal detected. Try to find Schutzweiche
+ if not found_signal:
+ other_point: Point | None = None
+ for point_uuid in self.point_controller.points:
+ _point: Point = self.point_controller.points[point_uuid]
+ if node_b.uuid == _point.yaramo_node.uuid:
+ other_point = _point
+
+ if other_point is not None and other_point.is_point:
+ connection_direction = other_point.get_connection_direction_of_track(flank_protection_track)
+ if connection_direction == NodeConnectionDirection.Spitze:
+ point_results[other_point] = None
+ signal_results, sub_point_results = self._get_flank_protection_elements_of_point(other_point, None)
+ point_results = point_results | sub_point_results
+ elif connection_direction == NodeConnectionDirection.Links:
+ point_results[other_point] = "right"
+ elif connection_direction == NodeConnectionDirection.Rechts:
+ point_results[other_point] = "left"
+ return signal_results, point_results
diff --git a/interlocking/interlockingcontroller/overlapcontroller.py b/interlocking/interlockingcontroller/overlapcontroller.py
index a216356..b60c1e5 100644
--- a/interlocking/interlockingcontroller/overlapcontroller.py
+++ b/interlocking/interlockingcontroller/overlapcontroller.py
@@ -15,7 +15,7 @@ async def reserve_overlap_of_route(self, route, train_id: str):
if overlap is None:
raise ValueError("No reservable overlap found")
self.reserve_segments_of_overlap(overlap, train_id)
- success = await self.reserve_points_of_overlap(overlap, train_id)
+ success = await self.reserve_points_of_overlap(overlap, route, train_id)
route.overlap = overlap
return success
@@ -50,7 +50,7 @@ def reserve_segments_of_overlap(self, overlap, train_id: str):
segment.state = OccupancyState.RESERVED_OVERLAP
segment.used_by.add(train_id)
- async def reserve_points_of_overlap(self, overlap, train_id: str):
+ async def reserve_points_of_overlap(self, overlap, route, train_id: str):
tasks = []
async with asyncio.TaskGroup() as tg:
for point in overlap.points:
@@ -69,6 +69,9 @@ async def reserve_points_of_overlap(self, overlap, train_id: str):
raise ValueError("Overlap contains points without 2 of their tracks")
necessery_orientation = point.get_necessary_orientation(found_tracks[0], found_tracks[1])
tasks.append(tg.create_task(self.point_controller.turn_point(point, necessery_orientation)))
+ tasks.append(tg.create_task(self.point_controller.flank_protection_controller.
+ add_flank_protection_for_point(point, necessery_orientation, route,
+ train_id)))
return all(list(map(lambda task: task.result(), tasks)))
def free_overlap_of_route(self, route, train_id: str):
diff --git a/interlocking/interlockingcontroller/pointcontroller.py b/interlocking/interlockingcontroller/pointcontroller.py
index 2defc29..73c3434 100644
--- a/interlocking/interlockingcontroller/pointcontroller.py
+++ b/interlocking/interlockingcontroller/pointcontroller.py
@@ -1,20 +1,27 @@
from interlocking.model import OccupancyState, Point
+from interlocking.model.helper import Settings
+from interlocking.infrastructureprovider import InfrastructureProvider
+from .flankprotectioncontroller import FlankProtectionController
+from .signalcontroller import SignalController
import asyncio
import logging
class PointController(object):
- def __init__(self, infrastructure_providers, settings):
+ def __init__(self, signal_controller: SignalController, infrastructure_providers: list[InfrastructureProvider],
+ settings: Settings):
self.points: dict[str, Point] = {}
self.infrastructure_providers = infrastructure_providers
self.settings = settings
+ self.flank_protection_controller = FlankProtectionController(self, signal_controller)
def reset(self):
for point_id in self.points:
self.points[point_id].orientation = "undefined"
self.points[point_id].state = OccupancyState.FREE
self.points[point_id].used_by = set()
+ self.flank_protection_controller.reset()
async def set_route(self, route, train_id: str):
tasks = []
@@ -27,6 +34,7 @@ async def set_route(self, route, train_id: str):
if orientation == "left" or orientation == "right":
self.set_point_reserved(point, train_id)
tasks.append(tg.create_task(self.turn_point(point, orientation)))
+ tasks.append(tg.create_task(self.flank_protection_controller.add_flank_protection_for_point(point, orientation, route, train_id)))
else:
raise ValueError("Turn should happen but is not possible")
@@ -50,6 +58,10 @@ async def turn_point(self, point, orientation):
if point.orientation == orientation:
# Everything is fine
return True
+ if point.is_used_for_flank_protection is True:
+ logging.error(f"Can not turn point of point {point.point_id} to {orientation}, "
+ f"since it is used for flank protection.")
+ return False
logging.info(f"--- Move point {point.point_id} to {orientation}")
# tasks = []
results = []
@@ -77,6 +89,7 @@ def set_point_free(self, point, train_id: str):
logging.info(f"--- Set point {point.point_id} to free")
point.state = OccupancyState.FREE
point.used_by.remove(train_id)
+ self.flank_protection_controller.free_flank_protection_of_point(point, point.orientation)
def reset_route(self, route, train_id: str):
for point in route.get_points_of_route():
@@ -86,4 +99,5 @@ def print_state(self):
logging.debug("State of Points:")
for point_id in self.points:
point = self.points[point_id]
- logging.debug(f"{point.point_id}: {point.state} (Orientation: {point.orientation}) (used by: {point.used_by})")
+ logging.debug(f"{point.point_id}: {point.state} (Orientation: {point.orientation}) "
+ f"(used by: {point.used_by}) (is used for FP: {point.is_used_for_flank_protection})")
diff --git a/interlocking/interlockingcontroller/signalcontroller.py b/interlocking/interlockingcontroller/signalcontroller.py
index dd8950c..7eb5def 100644
--- a/interlocking/interlockingcontroller/signalcontroller.py
+++ b/interlocking/interlockingcontroller/signalcontroller.py
@@ -1,6 +1,6 @@
import asyncio
import logging
-from interlocking.model import Signal
+from interlocking.model import OccupancyState, Signal
class SignalController(object):
@@ -11,45 +11,70 @@ def __init__(self, infrastructure_providers):
async def reset(self):
# Run non-concurrently
- for signal_id in self.signals:
- await self.set_signal_halt(self.signals[signal_id])
+ for signal in self.signals.values():
+ await self.set_signal_halt(signal)
+ signal.state = OccupancyState.FREE
+ signal.used_by = set()
- async def set_route(self, route):
- return await self.set_signal_go(route.start_signal)
+
+ async def set_route(self, route, train_id: str):
+ result = await self.set_signal_go(route.start_signal)
+ if result:
+ route.start_signal.state = OccupancyState.RESERVED
+ route.start_signal.used_by.add(train_id)
+ return result
async def set_signal_halt(self, signal):
- return await self.set_signal_state(signal, "halt")
+ return await self.set_signal_aspect(signal, "halt")
async def set_signal_go(self, signal):
- return await self.set_signal_state(signal, "go")
+ return await self.set_signal_aspect(signal, "go")
- async def set_signal_state(self, signal, state):
- if signal.state == state:
+ async def set_signal_aspect(self, signal, signal_aspect):
+ if signal.signal_aspect == signal_aspect:
# Everything is fine
return True
- logging.info(f"--- Set signal {signal.yaramo_signal.name} to {state}")
+ if signal.is_used_for_flank_protection is True:
+ logging.error(f"Can not set signal aspect of signal {signal.yaramo_signal.name} to {signal_aspect}, "
+ f"since it is used for flank protection.")
+ return False
+ logging.info(f"--- Set signal {signal.yaramo_signal.name} to {signal_aspect}")
results = []
for infrastructure_provider in self.infrastructure_providers:
- results.append(await infrastructure_provider.call_set_signal_state(signal.yaramo_signal, state))
+ results.append(await infrastructure_provider.call_set_signal_aspect(signal.yaramo_signal, signal_aspect))
# tasks = []
# async with asyncio.TaskGroup() as tg:
# for infrastructure_provider in self.infrastructure_providers:
- # tasks.append(tg.create_task(infrastructure_provider.call_set_signal_state(signal.yaramo_signal, state)))
+ # tasks.append(tg.create_task(infrastructure_provider.call_set_signal_aspect(signal.yaramo_signal, state)))
# if all(list(map(lambda task: task.result(), tasks))):
if all(results):
- signal.state = state
+ signal.signal_aspect = signal_aspect
return True
else:
# TODO: Incident
return False
- async def reset_route(self, route):
- await self.set_signal_halt(route.start_signal)
+ def free_route(self, route, train_id: str):
+ if route.start_signal.signal_aspect == "go":
+ raise ValueError("Try to free route with start signal aspect is go")
+ self.free_signal(route.start_signal, train_id)
+
+ async def reset_route(self, route, train_id: str):
+ result = await self.set_signal_halt(route.start_signal)
+ if result:
+ route.start_signal.state = OccupancyState.FREE
+ if train_id in route.start_signal.used_by:
+ route.start_signal.used_by.remove(train_id)
+
+ def free_signal(self, signal: Signal, train_id: str):
+ signal.state = OccupancyState.FREE
+ signal.used_by.remove(train_id)
def print_state(self):
logging.debug("State of Signals:")
for signal_uuid in self.signals:
signal = self.signals[signal_uuid]
- logging.debug(f"{signal.yaramo_signal.name}: {signal.state}")
+ logging.debug(f"{signal.yaramo_signal.name}: {signal.state} (Signal Aspect: {signal.signal_aspect}) "
+ f"(is used for FP: {signal.is_used_for_flank_protection})")
diff --git a/interlocking/interlockinginterface.py b/interlocking/interlockinginterface.py
index 089aa62..38fb592 100644
--- a/interlocking/interlockinginterface.py
+++ b/interlocking/interlockinginterface.py
@@ -17,12 +17,12 @@ def __init__(self,
interlocking_logic_monitor: InterlockingLogicMonitor = None):
if not isinstance(infrastructure_providers, list):
infrastructure_providers = [infrastructure_providers]
- self.infrastructure_providers = infrastructure_providers
+ self.infrastructure_providers: list[InfrastructureProvider] = infrastructure_providers
self.settings = settings
self.interlocking_logic_monitor = interlocking_logic_monitor
- self.point_controller = PointController(self.infrastructure_providers, self.settings)
self.signal_controller = SignalController(self.infrastructure_providers)
+ self.point_controller = PointController(self.signal_controller, self.infrastructure_providers, self.settings)
self.track_controller = TrackController(self, self.point_controller, self.signal_controller)
self.train_detection_controller = TrainDetectionController(self.track_controller, self.infrastructure_providers)
self.routes: list[Route] = []
@@ -113,10 +113,12 @@ async def run_with_operations_queue(self, operations_queue):
next_op = await operations_queue.get()
async def reset(self):
+ logging.debug("Reset Interlocking")
self.point_controller.reset()
self.track_controller.reset()
await self.signal_controller.reset()
self.active_routes = []
+ logging.debug("Reset completed")
def print_state(self):
logging.debug("##############")
@@ -151,7 +153,7 @@ async def set_route(self, yaramo_route: YaramoRoute, train_id: str):
# Only set the signal to go if the points and tracks are processed
if point_task.result() and track_task.result():
- set_route_result.success = await self.signal_controller.set_route(route)
+ set_route_result.success = await self.signal_controller.set_route(route, train_id)
if not set_route_result.success:
await self.reset_route(yaramo_route, train_id)
else:
@@ -187,6 +189,7 @@ def free_route(self, yaramo_route, train_id: str):
f"{yaramo_route.end_signal.name} was not set with the train id "
f"{train_id}.")
self.track_controller.free_route(route, train_id)
+ self.signal_controller.free_route(route, train_id)
self.active_routes.remove(route)
route.used_by = None
if self.interlocking_logic_monitor is not None:
@@ -204,7 +207,7 @@ async def reset_route(self, yaramo_route, train_id: str):
self.point_controller.reset_route(route, train_id)
self.track_controller.reset_route(route, train_id)
self.train_detection_controller.reset_track_segments_of_route(route)
- await self.signal_controller.reset_route(route)
+ await self.signal_controller.reset_route(route, train_id)
self.active_routes.remove(route)
route.used_by = None
if self.interlocking_logic_monitor is not None:
diff --git a/interlocking/model/point.py b/interlocking/model/point.py
index 407e7e8..55c1558 100644
--- a/interlocking/model/point.py
+++ b/interlocking/model/point.py
@@ -1,5 +1,6 @@
from yaramo.model import NodeConnectionDirection
from .occupancystate import OccupancyState
+from .track import Track
class Point(object):
@@ -10,6 +11,7 @@ def __init__(self, yaramo_node):
self.orientation = "undefined" # either left, right or undefined
self.state = OccupancyState.FREE
self.used_by = set() # If point is reserved, occupied or part of an overlap, this contains the train numbers.
+ self.is_used_for_flank_protection = False
self.head = None
self.left = None
self.right = None
@@ -82,6 +84,15 @@ def get_necessary_orientation(self, track_1, track_2):
return "right"
raise ValueError("None of the given edges is the head edge, orientation not possible")
+ def get_connection_direction_of_track(self, track: Track) -> NodeConnectionDirection:
+ if self.head.base_track_id == track.base_track_id:
+ return NodeConnectionDirection.Spitze
+ if self.left.base_track_id == track.base_track_id:
+ return NodeConnectionDirection.Links
+ if self.right.base_track_id == track.base_track_id:
+ return NodeConnectionDirection.Rechts
+ raise ValueError("Given track is not connected to node")
+
def get_possible_successors(self, track):
if not self.is_point:
return []
diff --git a/interlocking/model/signal.py b/interlocking/model/signal.py
index e0a67b9..76cdc72 100644
--- a/interlocking/model/signal.py
+++ b/interlocking/model/signal.py
@@ -1,11 +1,15 @@
+from .occupancystate import OccupancyState
from yaramo.model import Signal as YaramoSignal
class Signal(object):
- def __init__(self, yaramo_signal):
+ def __init__(self, yaramo_signal: YaramoSignal):
from interlocking.model import Track
- self.yaramo_signal: YaramoSignal = yaramo_signal
- self.state: str = "halt" # Either halt or go
+ self.yaramo_signal = yaramo_signal
+ self.signal_aspect: str = "undefined" # Either halt or go
+ self.state: OccupancyState = OccupancyState.FREE
+ self.used_by = set() # If point is reserved, occupied or part of an overlap, this contains the train numbers.
+ self.is_used_for_flank_protection = False
self.track: Track or None = None
diff --git a/interlocking/model/track.py b/interlocking/model/track.py
index d4f5f6b..f94d1d8 100644
--- a/interlocking/model/track.py
+++ b/interlocking/model/track.py
@@ -1,10 +1,10 @@
-from yaramo.model import SignalDirection
+from yaramo.model import SignalDirection, Edge
from .tracksegment import TrackSegment
class Track(object):
- def __init__(self, yaramo_edge):
+ def __init__(self, yaramo_edge: Edge):
self.yaramo_edge = yaramo_edge
self.base_track_id = yaramo_edge.uuid[-5:]
self.signals = []
diff --git a/poetry.lock b/poetry.lock
index 9400192..e27cb8e 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,14 +1,14 @@
-# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
[[package]]
name = "astroid"
-version = "2.15.6"
+version = "2.15.8"
description = "An abstract syntax tree for Python with inference support."
optional = false
python-versions = ">=3.7.2"
files = [
- {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"},
- {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"},
+ {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"},
+ {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"},
]
[package.dependencies]
@@ -50,35 +50,35 @@ uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "certifi"
-version = "2023.5.7"
+version = "2024.6.2"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.6"
files = [
- {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"},
- {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"},
+ {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"},
+ {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"},
]
[[package]]
name = "cfgv"
-version = "3.3.1"
+version = "3.4.0"
description = "Validate configuration and produce human readable error messages."
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.8"
files = [
- {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
- {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
]
[[package]]
name = "click"
-version = "8.1.4"
+version = "8.1.7"
description = "Composable command line interface toolkit"
optional = false
python-versions = ">=3.7"
files = [
- {file = "click-8.1.4-py3-none-any.whl", hash = "sha256:2739815aaa5d2c986a88f1e9230c55e17f0caad3d958a5e13ad0797c166db9e3"},
- {file = "click-8.1.4.tar.gz", hash = "sha256:b97d0c74955da062a7d4ef92fadb583806a585b2ea81958a81bd72726cbb8e37"},
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
]
[package.dependencies]
@@ -97,71 +97,63 @@ files = [
[[package]]
name = "coverage"
-version = "7.2.7"
+version = "7.5.4"
description = "Code coverage measurement for Python"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"},
- {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"},
- {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"},
- {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"},
- {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"},
- {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"},
- {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"},
- {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"},
- {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"},
- {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"},
- {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"},
- {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"},
- {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"},
- {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"},
- {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"},
- {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"},
- {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"},
- {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"},
- {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"},
- {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"},
- {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"},
- {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"},
- {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"},
- {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"},
- {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"},
- {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"},
- {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"},
- {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"},
- {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"},
- {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"},
- {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"},
- {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"},
- {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"},
- {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"},
- {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"},
- {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"},
- {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"},
- {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"},
- {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"},
- {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"},
- {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"},
- {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"},
- {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"},
- {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"},
- {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"},
- {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"},
- {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"},
- {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"},
- {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"},
- {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"},
- {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"},
- {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"},
- {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"},
- {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"},
- {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"},
- {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"},
- {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"},
- {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"},
- {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"},
- {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"},
+ {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"},
+ {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"},
+ {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"},
+ {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"},
+ {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"},
+ {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"},
+ {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"},
+ {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"},
+ {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"},
+ {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"},
+ {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"},
+ {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"},
+ {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"},
+ {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"},
+ {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"},
+ {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"},
+ {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"},
+ {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"},
+ {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"},
+ {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"},
+ {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"},
+ {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"},
+ {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"},
+ {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"},
+ {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"},
+ {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"},
+ {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"},
+ {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"},
+ {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"},
+ {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"},
+ {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"},
+ {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"},
+ {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"},
+ {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"},
+ {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"},
+ {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"},
+ {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"},
+ {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"},
+ {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"},
+ {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"},
+ {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"},
+ {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"},
+ {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"},
+ {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"},
+ {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"},
+ {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"},
+ {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"},
+ {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"},
+ {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"},
+ {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"},
+ {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"},
+ {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"},
]
[package.extras]
@@ -169,53 +161,55 @@ toml = ["tomli"]
[[package]]
name = "dill"
-version = "0.3.6"
-description = "serialize all of python"
+version = "0.3.8"
+description = "serialize all of Python"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"},
- {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"},
+ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
+ {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
]
[package.extras]
graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
[[package]]
name = "distlib"
-version = "0.3.6"
+version = "0.3.8"
description = "Distribution utilities"
optional = false
python-versions = "*"
files = [
- {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"},
- {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"},
+ {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
]
[[package]]
name = "filelock"
-version = "3.12.2"
+version = "3.15.4"
description = "A platform independent file lock."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"},
- {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"},
+ {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"},
+ {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"},
]
[package.extras]
-docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
-testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"]
+typing = ["typing-extensions (>=4.8)"]
[[package]]
name = "identify"
-version = "2.5.24"
+version = "2.5.36"
description = "File identification library for Python"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"},
- {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"},
+ {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"},
+ {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"},
]
[package.extras]
@@ -232,174 +226,193 @@ files = [
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]
+[[package]]
+name = "interlocking-logic-monitor"
+version = "1.0"
+description = "The Interlogic Logic Monitor is a evaluation tool for the interlocking logic"
+optional = false
+python-versions = "^3.11"
+files = []
+develop = false
+
+[package.dependencies]
+interlocking = "^2.0"
+pyproj = "^3.4.1"
+yaramo = "^0.1.0"
+
+[package.source]
+type = "git"
+url = "https://github.com/simulate-digital-rail/interlocking-logic-monitor"
+reference = "HEAD"
+resolved_reference = "da2e68a0686dffe92d5230560231ab6f5276b209"
+
[[package]]
name = "isort"
-version = "5.12.0"
+version = "5.13.2"
description = "A Python utility / library to sort Python imports."
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"},
- {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"},
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
]
[package.extras]
-colors = ["colorama (>=0.4.3)"]
-pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
-plugins = ["setuptools"]
-requirements-deprecated-finder = ["pip-api", "pipreqs"]
+colors = ["colorama (>=0.4.6)"]
[[package]]
name = "lazy-object-proxy"
-version = "1.9.0"
+version = "1.10.0"
description = "A fast and thorough lazy object proxy."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"},
- {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"},
- {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"},
- {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"},
- {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"},
- {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"},
- {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"},
- {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"},
- {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"},
- {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"},
- {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"},
- {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"},
- {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"},
- {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"},
- {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"},
- {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"},
- {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"},
- {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"},
- {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"},
- {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"},
- {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"},
- {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"},
- {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"},
- {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"},
- {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"},
- {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"},
- {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"},
- {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"},
- {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"},
- {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"},
- {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"},
- {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"},
- {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"},
- {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"},
- {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"},
- {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"},
+ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
+ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
]
[[package]]
name = "lxml"
-version = "4.9.3"
+version = "4.9.4"
description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
files = [
- {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"},
- {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"},
- {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"},
- {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"},
- {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"},
- {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"},
- {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"},
- {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"},
- {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"},
- {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"},
- {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"},
- {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"},
- {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"},
- {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"},
- {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"},
- {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"},
- {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"},
- {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"},
- {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"},
- {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"},
- {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"},
- {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"},
- {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"},
- {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"},
- {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"},
- {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"},
- {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"},
- {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"},
- {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"},
- {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"},
- {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"},
- {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"},
- {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"},
- {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"},
- {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"},
- {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"},
- {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"},
- {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"},
- {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"},
- {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"},
- {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"},
- {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"},
- {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"},
- {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"},
- {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"},
- {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"},
- {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"},
- {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"},
- {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"},
- {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"},
- {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"},
- {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"},
- {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"},
- {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"},
- {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"},
- {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"},
- {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"},
- {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"},
- {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"},
- {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"},
- {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"},
- {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"},
- {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"},
- {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"},
- {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"},
- {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"},
- {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"},
- {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"},
- {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"},
- {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"},
- {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"},
- {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"},
- {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"},
- {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"},
- {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"},
- {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"},
- {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"},
- {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"},
- {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"},
- {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"},
- {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"},
- {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"},
- {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"},
- {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"},
- {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"},
- {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"},
- {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"},
- {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"},
- {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"},
- {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"},
- {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"},
- {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"},
+ {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722"},
+ {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1"},
+ {file = "lxml-4.9.4-cp27-cp27m-win32.whl", hash = "sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013"},
+ {file = "lxml-4.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69"},
+ {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2"},
+ {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48"},
+ {file = "lxml-4.9.4-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8"},
+ {file = "lxml-4.9.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644"},
+ {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663"},
+ {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307"},
+ {file = "lxml-4.9.4-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91"},
+ {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868"},
+ {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7"},
+ {file = "lxml-4.9.4-cp310-cp310-win32.whl", hash = "sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be"},
+ {file = "lxml-4.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5"},
+ {file = "lxml-4.9.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28"},
+ {file = "lxml-4.9.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2"},
+ {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97"},
+ {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e"},
+ {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a"},
+ {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979"},
+ {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac"},
+ {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622"},
+ {file = "lxml-4.9.4-cp311-cp311-win32.whl", hash = "sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3"},
+ {file = "lxml-4.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8"},
+ {file = "lxml-4.9.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8"},
+ {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229"},
+ {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d"},
+ {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20"},
+ {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10"},
+ {file = "lxml-4.9.4-cp312-cp312-win32.whl", hash = "sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b"},
+ {file = "lxml-4.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56"},
+ {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20"},
+ {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66"},
+ {file = "lxml-4.9.4-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d"},
+ {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b"},
+ {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197"},
+ {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4"},
+ {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53"},
+ {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7"},
+ {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85"},
+ {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23"},
+ {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745"},
+ {file = "lxml-4.9.4-cp36-cp36m-win32.whl", hash = "sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be"},
+ {file = "lxml-4.9.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225"},
+ {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16"},
+ {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545"},
+ {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c"},
+ {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d"},
+ {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964"},
+ {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9"},
+ {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d"},
+ {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02"},
+ {file = "lxml-4.9.4-cp37-cp37m-win32.whl", hash = "sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e"},
+ {file = "lxml-4.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590"},
+ {file = "lxml-4.9.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a"},
+ {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43"},
+ {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2"},
+ {file = "lxml-4.9.4-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d"},
+ {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc"},
+ {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192"},
+ {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37"},
+ {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9"},
+ {file = "lxml-4.9.4-cp38-cp38-win32.whl", hash = "sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c"},
+ {file = "lxml-4.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46"},
+ {file = "lxml-4.9.4-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a"},
+ {file = "lxml-4.9.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd"},
+ {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9"},
+ {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd"},
+ {file = "lxml-4.9.4-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b"},
+ {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382"},
+ {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573"},
+ {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847"},
+ {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab"},
+ {file = "lxml-4.9.4-cp39-cp39-win32.whl", hash = "sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec"},
+ {file = "lxml-4.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899"},
+ {file = "lxml-4.9.4-pp310-pypy310_pp73-macosx_11_0_x86_64.whl", hash = "sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0"},
+ {file = "lxml-4.9.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4"},
+ {file = "lxml-4.9.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7"},
+ {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5"},
+ {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba"},
+ {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771"},
+ {file = "lxml-4.9.4-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7"},
+ {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca"},
+ {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45"},
+ {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58"},
+ {file = "lxml-4.9.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2"},
+ {file = "lxml-4.9.4-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5"},
+ {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683"},
+ {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c"},
+ {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd"},
+ {file = "lxml-4.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137"},
+ {file = "lxml-4.9.4.tar.gz", hash = "sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e"},
]
[package.extras]
cssselect = ["cssselect (>=0.7)"]
html5 = ["html5lib"]
htmlsoup = ["BeautifulSoup4"]
-source = ["Cython (>=0.29.35)"]
+source = ["Cython (==0.29.37)"]
[[package]]
name = "mccabe"
@@ -425,43 +438,40 @@ files = [
[[package]]
name = "nodeenv"
-version = "1.8.0"
+version = "1.9.1"
description = "Node.js virtual environment builder"
optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
- {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
- {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
+ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"},
+ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"},
]
-[package.dependencies]
-setuptools = "*"
-
[[package]]
name = "packaging"
-version = "23.1"
+version = "24.1"
description = "Core utilities for Python packages"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"},
- {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"},
+ {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
+ {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
]
[[package]]
name = "pathspec"
-version = "0.11.1"
+version = "0.12.1"
description = "Utility library for gitignore style pattern matching of file paths."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"},
- {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"},
+ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
]
[[package]]
name = "planpro-importer"
-version = "1.9.1"
+version = "1.9.2"
description = ""
optional = false
python-versions = "^3.10"
@@ -477,32 +487,33 @@ yaramo = {git = "https://github.com/simulate-digital-rail/yaramo"}
type = "git"
url = "https://github.com/simulate-digital-rail/planpro-importer"
reference = "HEAD"
-resolved_reference = "10446956f6e2355d1947953b7e30e869b183fe7e"
+resolved_reference = "d3439f47b0b363e4f49258def18068cbb63aa2fc"
[[package]]
name = "platformdirs"
-version = "3.8.1"
-description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+version = "4.2.2"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "platformdirs-3.8.1-py3-none-any.whl", hash = "sha256:cec7b889196b9144d088e4c57d9ceef7374f6c39694ad1577a0aab50d27ea28c"},
- {file = "platformdirs-3.8.1.tar.gz", hash = "sha256:f87ca4fcff7d2b0f81c6a748a77973d7af0f4d526f98f308477c3c436c74d528"},
+ {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
+ {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
]
[package.extras]
-docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"]
+docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
+type = ["mypy (>=1.8)"]
[[package]]
name = "pluggy"
-version = "1.2.0"
+version = "1.5.0"
description = "plugin and hook calling mechanisms for python"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"},
- {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"},
+ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
+ {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
]
[package.extras]
@@ -511,13 +522,13 @@ testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "pre-commit"
-version = "3.3.3"
+version = "3.7.1"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "pre_commit-3.3.3-py2.py3-none-any.whl", hash = "sha256:10badb65d6a38caff29703362271d7dca483d01da88f9d7e05d0b97171c136cb"},
- {file = "pre_commit-3.3.3.tar.gz", hash = "sha256:a2256f489cd913d575c145132ae196fe335da32d91a8294b7afe6622335dd023"},
+ {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"},
+ {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"},
]
[package.dependencies]
@@ -529,17 +540,17 @@ virtualenv = ">=20.10.0"
[[package]]
name = "pylint"
-version = "2.17.4"
+version = "2.17.7"
description = "python code static checker"
optional = false
python-versions = ">=3.7.2"
files = [
- {file = "pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"},
- {file = "pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"},
+ {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"},
+ {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"},
]
[package.dependencies]
-astroid = ">=2.15.4,<=2.17.0-dev0"
+astroid = ">=2.15.8,<=2.17.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
isort = ">=4.2.5,<6"
@@ -553,36 +564,38 @@ testutils = ["gitpython (>3)"]
[[package]]
name = "pyproj"
-version = "3.6.0"
+version = "3.6.1"
description = "Python interface to PROJ (cartographic projections and coordinate transformations library)"
optional = false
python-versions = ">=3.9"
files = [
- {file = "pyproj-3.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e600f6a2771d3b41aeb2cc1efd96771ae9a01451013da1dd48ff272e7c6e34ef"},
- {file = "pyproj-3.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d7f6cd045df29aae960391dfe06a575c110af598f1dea5add8be6ca42332b0f5"},
- {file = "pyproj-3.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:557e6592855111c84eda176ddf6b130f55d5e2b9cb1c017b8c91b69f37f474f5"},
- {file = "pyproj-3.6.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de6288b6ceabdeeac01abf627c74414822d322d8f55dc8efe4d29dedd27c5719"},
- {file = "pyproj-3.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e427ccdbb1763872416549bdfa9fa1f5f169054653c4daf674e71480cc39cf11"},
- {file = "pyproj-3.6.0-cp310-cp310-win32.whl", hash = "sha256:1283d3c1960edbb74828f5f3405b27578a9a27f7766ab6a3956f4bd851f08239"},
- {file = "pyproj-3.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:9de1aab71234bfd3fd648a1152519b5ee152c43113d7d8ea52590a0140129501"},
- {file = "pyproj-3.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:00fab048596c17572fa8980014ef117dbb2a445e6f7ba3b9ddfcc683efc598e7"},
- {file = "pyproj-3.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ba5e7c8ddd6ed5a3f9fcf95ea80ba44c931913723de2ece841c94bb38b200c4a"},
- {file = "pyproj-3.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08dfc5c9533c78a97afae9d53b99b810a4a8f97c3be9eb2b8f323b726c736403"},
- {file = "pyproj-3.6.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18a8bdb87aeb41b60a2e91d32f623227de3569fb83b4c64b174c3a7c5b0ed3ae"},
- {file = "pyproj-3.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe392dfc0eba2248dc08c976a72f52ff9da2bddfddfd9ff5dcf18e8e88200c7"},
- {file = "pyproj-3.6.0-cp311-cp311-win32.whl", hash = "sha256:78276c6b0c831255c97c56dff7313a3571f327a284d8ac63d6a56437a72ed0e0"},
- {file = "pyproj-3.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:8fbac2eb9a0e425d7d6b7c6f4ebacd675cf3bdef0c59887057b8b4b0374e7c12"},
- {file = "pyproj-3.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:95120d65cbc5983dfd877076f28dbc18b9b329cbee38ca6e217bb7a5a043c099"},
- {file = "pyproj-3.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:830e6de7cfe43853967afee5ef908dfd5aa72d1ec12af9b9e3fecc179886e346"},
- {file = "pyproj-3.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e342b3010b2b20134671564ff9a8c476e5e512bf589477480aded1a5813af7c8"},
- {file = "pyproj-3.6.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23787460fab85ba2f857ee60ffb2e8e21fd9bd5db9833c51c1c05b2a6d9f0be5"},
- {file = "pyproj-3.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595376e4d3bb72b7dceeccbce0f4c43053d47561f17a1ad0224407e9980ee849"},
- {file = "pyproj-3.6.0-cp39-cp39-win32.whl", hash = "sha256:4d8a9773503085eada59b6892c96ddf686ab8cf64cfdc18ad744d13ee76dfa6f"},
- {file = "pyproj-3.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:137a07404f937f264b11b7130cd4cfa00002dbe4333b222e8056db84849c2ea4"},
- {file = "pyproj-3.6.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2799499a4045e4fb73e44c31bdacab0593a253a7a4b6baae6fdd27d604cf9bc2"},
- {file = "pyproj-3.6.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f04f6297c615c3b17f835df2556ac8fb9b4f51f281e960437eaf0cd80e7ae26a"},
- {file = "pyproj-3.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a4d2d438b007cb1f8d5f6f308d53d7ff9a2508cff8f9da6e2a93b76ffd98aaf"},
- {file = "pyproj-3.6.0.tar.gz", hash = "sha256:a5b111865b3f0f8b77b3983f2fbe4dd6248fc09d3730295949977c8dcd988062"},
+ {file = "pyproj-3.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ab7aa4d9ff3c3acf60d4b285ccec134167a948df02347585fdd934ebad8811b4"},
+ {file = "pyproj-3.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4bc0472302919e59114aa140fd7213c2370d848a7249d09704f10f5b062031fe"},
+ {file = "pyproj-3.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5279586013b8d6582e22b6f9e30c49796966770389a9d5b85e25a4223286cd3f"},
+ {file = "pyproj-3.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80fafd1f3eb421694857f254a9bdbacd1eb22fc6c24ca74b136679f376f97d35"},
+ {file = "pyproj-3.6.1-cp310-cp310-win32.whl", hash = "sha256:c41e80ddee130450dcb8829af7118f1ab69eaf8169c4bf0ee8d52b72f098dc2f"},
+ {file = "pyproj-3.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:db3aedd458e7f7f21d8176f0a1d924f1ae06d725228302b872885a1c34f3119e"},
+ {file = "pyproj-3.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ebfbdbd0936e178091309f6cd4fcb4decd9eab12aa513cdd9add89efa3ec2882"},
+ {file = "pyproj-3.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:447db19c7efad70ff161e5e46a54ab9cc2399acebb656b6ccf63e4bc4a04b97a"},
+ {file = "pyproj-3.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7e13c40183884ec7f94eb8e0f622f08f1d5716150b8d7a134de48c6110fee85"},
+ {file = "pyproj-3.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65ad699e0c830e2b8565afe42bd58cc972b47d829b2e0e48ad9638386d994915"},
+ {file = "pyproj-3.6.1-cp311-cp311-win32.whl", hash = "sha256:8b8acc31fb8702c54625f4d5a2a6543557bec3c28a0ef638778b7ab1d1772132"},
+ {file = "pyproj-3.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:38a3361941eb72b82bd9a18f60c78b0df8408416f9340521df442cebfc4306e2"},
+ {file = "pyproj-3.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1e9fbaf920f0f9b4ee62aab832be3ae3968f33f24e2e3f7fbb8c6728ef1d9746"},
+ {file = "pyproj-3.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d227a865356f225591b6732430b1d1781e946893789a609bb34f59d09b8b0f8"},
+ {file = "pyproj-3.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83039e5ae04e5afc974f7d25ee0870a80a6bd6b7957c3aca5613ccbe0d3e72bf"},
+ {file = "pyproj-3.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb059ba3bced6f6725961ba758649261d85ed6ce670d3e3b0a26e81cf1aa8d"},
+ {file = "pyproj-3.6.1-cp312-cp312-win32.whl", hash = "sha256:2d6ff73cc6dbbce3766b6c0bce70ce070193105d8de17aa2470009463682a8eb"},
+ {file = "pyproj-3.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:7a27151ddad8e1439ba70c9b4b2b617b290c39395fa9ddb7411ebb0eb86d6fb0"},
+ {file = "pyproj-3.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4ba1f9b03d04d8cab24d6375609070580a26ce76eaed54631f03bab00a9c737b"},
+ {file = "pyproj-3.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18faa54a3ca475bfe6255156f2f2874e9a1c8917b0004eee9f664b86ccc513d3"},
+ {file = "pyproj-3.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd43bd9a9b9239805f406fd82ba6b106bf4838d9ef37c167d3ed70383943ade1"},
+ {file = "pyproj-3.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50100b2726a3ca946906cbaa789dd0749f213abf0cbb877e6de72ca7aa50e1ae"},
+ {file = "pyproj-3.6.1-cp39-cp39-win32.whl", hash = "sha256:9274880263256f6292ff644ca92c46d96aa7e57a75c6df3f11d636ce845a1877"},
+ {file = "pyproj-3.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:36b64c2cb6ea1cc091f329c5bd34f9c01bb5da8c8e4492c709bda6a09f96808f"},
+ {file = "pyproj-3.6.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd93c1a0c6c4aedc77c0fe275a9f2aba4d59b8acf88cebfc19fe3c430cfabf4f"},
+ {file = "pyproj-3.6.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6420ea8e7d2a88cb148b124429fba8cd2e0fae700a2d96eab7083c0928a85110"},
+ {file = "pyproj-3.6.1.tar.gz", hash = "sha256:44aa7c704c2b7d8fb3d483bbf75af6cb2350d30a63b144279a09b75fead501bf"},
]
[package.dependencies]
@@ -590,13 +603,13 @@ certifi = "*"
[[package]]
name = "pytest"
-version = "7.4.0"
+version = "7.4.4"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"},
- {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"},
+ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"},
+ {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"},
]
[package.dependencies]
@@ -610,59 +623,70 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
[[package]]
name = "pyyaml"
-version = "6.0"
+version = "6.0.1"
description = "YAML parser and emitter for Python"
optional = false
python-versions = ">=3.6"
files = [
- {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
- {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
- {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
- {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
- {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
- {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
- {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
- {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
- {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
- {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
- {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
- {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
- {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
- {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
- {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
- {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
- {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
- {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
- {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
- {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
+ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"},
+ {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
+ {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
+ {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
+ {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
+ {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
+ {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
+ {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
+ {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
+ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
+ {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"},
+ {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
+ {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
+ {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
+ {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
+ {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
+ {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
+ {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
+ {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
+ {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
+ {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
]
[[package]]
name = "railway-route-generator"
-version = "3.0.0"
+version = "3.0.1"
description = ""
optional = false
-python-versions = "^3.8"
+python-versions = "^3.10"
files = []
develop = false
@@ -673,23 +697,7 @@ yaramo = {git = "https://github.com/simulate-digital-rail/yaramo"}
type = "git"
url = "https://github.com/simulate-digital-rail/railway-route-generator"
reference = "HEAD"
-resolved_reference = "b43e28561cd5a5fcb9fbe3ab87766ce1bc3626bb"
-
-[[package]]
-name = "setuptools"
-version = "68.0.0"
-description = "Easily download, build, install, upgrade, and uninstall Python packages"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"},
- {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"},
-]
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
-testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
-testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+resolved_reference = "dba2a62bf743453b407bdba208754f1e28a37eb2"
[[package]]
name = "six"
@@ -704,122 +712,117 @@ files = [
[[package]]
name = "tomlkit"
-version = "0.11.8"
+version = "0.12.5"
description = "Style preserving TOML library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"},
- {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"},
+ {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"},
+ {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"},
]
[[package]]
name = "virtualenv"
-version = "20.23.1"
+version = "20.26.3"
description = "Virtual Python Environment builder"
optional = false
python-versions = ">=3.7"
files = [
- {file = "virtualenv-20.23.1-py3-none-any.whl", hash = "sha256:34da10f14fea9be20e0fd7f04aba9732f84e593dac291b757ce42e3368a39419"},
- {file = "virtualenv-20.23.1.tar.gz", hash = "sha256:8ff19a38c1021c742148edc4f81cb43d7f8c6816d2ede2ab72af5b84c749ade1"},
+ {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"},
+ {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"},
]
[package.dependencies]
-distlib = ">=0.3.6,<1"
-filelock = ">=3.12,<4"
-platformdirs = ">=3.5.1,<4"
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
[package.extras]
-docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
-test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezer (>=0.4.6)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.8)", "time-machine (>=2.9)"]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
[[package]]
name = "wrapt"
-version = "1.15.0"
+version = "1.16.0"
description = "Module for decorators, wrappers and monkey patching."
optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+python-versions = ">=3.6"
files = [
- {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"},
- {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"},
- {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"},
- {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"},
- {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"},
- {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"},
- {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"},
- {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"},
- {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"},
- {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"},
- {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"},
- {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"},
- {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"},
- {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"},
- {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"},
- {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"},
- {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"},
- {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"},
- {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"},
- {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"},
- {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"},
- {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"},
- {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"},
- {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"},
- {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"},
- {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"},
- {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"},
- {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"},
- {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"},
- {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"},
- {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"},
- {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"},
- {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"},
- {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"},
- {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"},
- {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"},
- {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"},
- {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"},
- {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"},
- {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"},
- {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"},
- {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"},
- {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"},
- {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"},
- {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"},
- {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"},
- {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"},
- {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"},
- {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"},
- {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"},
- {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"},
- {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"},
- {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"},
- {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"},
- {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"},
- {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"},
- {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"},
- {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"},
- {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"},
- {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"},
- {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"},
- {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"},
- {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"},
- {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"},
- {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"},
- {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"},
- {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"},
- {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"},
- {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"},
- {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"},
- {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"},
- {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"},
- {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"},
- {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"},
- {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
+ {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
+ {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
+ {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
+ {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
+ {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
+ {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
+ {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
+ {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
+ {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
+ {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
+ {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
+ {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
+ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
]
[[package]]
name = "yaramo"
-version = "0.1.0"
+version = "0.1.1"
description = "yaramo is a railway model focusing on interoperability between different existing planning formats."
optional = false
python-versions = "^3.8"
@@ -833,9 +836,9 @@ pyproj = "^3.4.1"
type = "git"
url = "https://github.com/simulate-digital-rail/yaramo"
reference = "HEAD"
-resolved_reference = "f94b06c551bbbd527129448cd9bf5eb5a4575097"
+resolved_reference = "c094084efd84dacbe57b7d7b4a19c66c11a36f72"
[metadata]
lock-version = "2.0"
python-versions = "^3.11"
-content-hash = "78fe45c5929f418da07958795c7344daf51baea8bf144874185c55df66cb70e2"
+content-hash = "199c2af26e8314998ecc9374f2e9c8fd55cec4797ca844347274b9719cbc9995"
diff --git a/test/flank-protection-example1.ppxml b/test/flank-protection-example1.ppxml
new file mode 100644
index 0000000..aed14df
--- /dev/null
+++ b/test/flank-protection-example1.ppxml
@@ -0,0 +1,1240 @@
+
+
+
+ 6483a13d-990b-4ff0-8f2d-cc92047029ad
+
+
+
+ 2023-06-30T14:03:26.079000
+
+
+ Werkzeugkoffer
+
+
+ 48.3.0
+
+
+
+
+
+
+ b6c56234-5639-4f97-b286-b7c331473b11
+
+
+
+ 3d5cd034-cbdb-4e90-ba6c-476b62e0253f
+
+
+
+
+
+ c9afa811-deff-4142-bd51-b54eb3cb00fc
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+ 2012-02-24
+
+
+
+
+
+ ESTW_A
+
+
+
+
+ Notstromaggregat_NEA_stationaer
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ Scheibenberg
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ 3ba3f09b-5a48-480d-8692-932c28fe769f
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 200.00000
+
+
+ Ivl
+
+
+
+ 0ea33c8a-1019-4f36-8689-9314391c131e
+
+
+ a359f81d-d6bd-482c-8b40-7b59535b7779
+
+
+ 997273ed-4286-47d2-bf70-4035f8566306
+
+
+
+
+ 01a8f3b6-3bfb-4324-8f64-473f0ae94a0f
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 200.00000
+
+
+ Ivl
+
+
+
+ 71f41608-66cc-41a8-8784-d58bc5439c52
+
+
+ 997273ed-4286-47d2-bf70-4035f8566306
+
+
+ c2ef3e67-0948-40e3-833c-6f39cf826bb6
+
+
+
+
+ 10e3ffaf-d198-4c26-b6de-1a986655520a
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 206.15528
+
+
+ Ivl
+
+
+
+ 2cb5c9a7-a910-4c20-855a-ece3ac2c8f45
+
+
+ f43c5cc0-021c-4041-a511-ec484ad10145
+
+
+ 997273ed-4286-47d2-bf70-4035f8566306
+
+
+
+
+ a359f81d-d6bd-482c-8b40-7b59535b7779
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 997273ed-4286-47d2-bf70-4035f8566306
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ c2ef3e67-0948-40e3-833c-6f39cf826bb6
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ f43c5cc0-021c-4041-a511-ec484ad10145
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 00a5b373-bb0d-41bd-a99d-57b0183ffdb9
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ a359f81d-d6bd-482c-8b40-7b59535b7779
+
+
+
+
+ cf89039b-c068-4ded-befb-f48236f4b7e4
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533970.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 997273ed-4286-47d2-bf70-4035f8566306
+
+
+
+
+ 67e8b89d-fac2-4738-b79f-63fd8dbd428a
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534170.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ c2ef3e67-0948-40e3-833c-6f39cf826bb6
+
+
+
+
+ b96b42f5-2998-4bac-95fe-bf08f817401d
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625830.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ f43c5cc0-021c-4041-a511-ec484ad10145
+
+
+
+
+ ced139a6-abc3-41c2-be06-bbc09075296d
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 7248c0cb-14e9-4697-b17f-db443be5e9ef
+
+
+ 60,616
+
+
+
+
+ 10.000
+
+
+ 0ea33c8a-1019-4f36-8689-9314391c131e
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 99N1
+
+
+ 99N1
+
+
+ 99N1
+
+
+ 99N1
+
+
+ 99
+
+
+ N1
+
+
+
+
+ Mast
+
+
+
+ ced139a6-abc3-41c2-be06-bbc09075296d
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ dcd95b3d-6342-4bfa-b55a-a3015a553dea
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 7248c0cb-14e9-4697-b17f-db443be5e9ef
+
+
+ 60,616
+
+
+
+
+ 50.000
+
+
+ 71f41608-66cc-41a8-8784-d58bc5439c52
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 99N2
+
+
+ 99N2
+
+
+ 99N2
+
+
+ 99N2
+
+
+ 99
+
+
+ N2
+
+
+
+
+ Mast
+
+
+
+ dcd95b3d-6342-4bfa-b55a-a3015a553dea
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ ae6081db-b87d-4139-b637-81ea4e001163
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 7248c0cb-14e9-4697-b17f-db443be5e9ef
+
+
+ 60,616
+
+
+
+
+ 10.000
+
+
+ 2cb5c9a7-a910-4c20-855a-ece3ac2c8f45
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 99N3
+
+
+ 99N3
+
+
+ 99N3
+
+
+ 99N3
+
+
+ 99
+
+
+ N3
+
+
+
+
+ Mast
+
+
+
+ ae6081db-b87d-4139-b637-81ea4e001163
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ df333e0b-a904-48d4-93a0-9a759cc55c26
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 7248c0cb-14e9-4697-b17f-db443be5e9ef
+
+
+ 60,616
+
+
+
+
+ 1.000
+
+
+ 2cb5c9a7-a910-4c20-855a-ece3ac2c8f45
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 99N4
+
+
+ 99N4
+
+
+ 99N4
+
+
+ 99N4
+
+
+ 99
+
+
+ N4
+
+
+
+
+ Mast
+
+
+
+ df333e0b-a904-48d4-93a0-9a759cc55c26
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ ced139a6-abc3-41c2-be06-bbc09075296d
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ dcd95b3d-6342-4bfa-b55a-a3015a553dea
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ ae6081db-b87d-4139-b637-81ea4e001163
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ df333e0b-a904-48d4-93a0-9a759cc55c26
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 7248c0cb-14e9-4697-b17f-db443be5e9ef
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 0.000
+
+
+ 200.000
+
+
+ 0ea33c8a-1019-4f36-8689-9314391c131e
+
+
+
+
+ 0.000
+
+
+ 200.000
+
+
+ 71f41608-66cc-41a8-8784-d58bc5439c52
+
+
+
+
+ 0.000
+
+
+ 206.155
+
+
+ 2cb5c9a7-a910-4c20-855a-ece3ac2c8f45
+
+
+
+
+ 5173
+
+
+
+
+
+ 0ea33c8a-1019-4f36-8689-9314391c131e
+
+
+
+ 2012-02-24
+
+
+
+
+ 38946679-3abe-400f-90b3-5843bff7a1d2
+
+
+ 739d0503-75e3-46a8-8faf-4547fb8fe8ed
+
+
+
+ Ende
+
+
+ Links
+
+
+ 200.000
+
+
+
+
+
+ 71f41608-66cc-41a8-8784-d58bc5439c52
+
+
+
+ 2012-02-24
+
+
+
+
+ 739d0503-75e3-46a8-8faf-4547fb8fe8ed
+
+
+ a32fddd0-6747-4e5c-bb3b-4fef7cfc0a01
+
+
+
+ Spitze
+
+
+ Ende
+
+
+ 200.000
+
+
+
+
+
+ 2cb5c9a7-a910-4c20-855a-ece3ac2c8f45
+
+
+
+ 2012-02-24
+
+
+
+
+ 39eb95b7-4b79-474c-8af4-77e8df595267
+
+
+ 739d0503-75e3-46a8-8faf-4547fb8fe8ed
+
+
+
+ Ende
+
+
+ Rechts
+
+
+ 206.155
+
+
+
+
+
+ 38946679-3abe-400f-90b3-5843bff7a1d2
+
+
+
+ 2012-02-24
+
+
+
+
+ a359f81d-d6bd-482c-8b40-7b59535b7779
+
+
+
+
+ 739d0503-75e3-46a8-8faf-4547fb8fe8ed
+
+
+
+ 2012-02-24
+
+
+
+
+ 997273ed-4286-47d2-bf70-4035f8566306
+
+
+
+
+ a32fddd0-6747-4e5c-bb3b-4fef7cfc0a01
+
+
+
+ 2012-02-24
+
+
+
+
+ c2ef3e67-0948-40e3-833c-6f39cf826bb6
+
+
+
+
+ 39eb95b7-4b79-474c-8af4-77e8df595267
+
+
+
+ 2012-02-24
+
+
+
+
+ f43c5cc0-021c-4041-a511-ec484ad10145
+
+
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gebaeude
+
+
+ Fundament
+
+
+
+ 11314F34-1A1C-4EBB-9AB2-133C5F2A9167
+
+
+
+
+
+ sonstige
+
+
+
+
+
+
+ F05DAC3B-4E33-43D3-9A03-6055566FC3B7
+
+
+
+ AFFE2101-3E72-4D64-88F1-FFE1A69396AA
+
+
+ ABC
+
+
+
+ BE199B7D-A86C-4682-8E08-4B23DE2CF5A3
+
+
+ b6c56234-5639-4f97-b286-b7c331473b11
+
+
+
+ b6c56234-5639-4f97-b286-b7c331473b11
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ 38946679-3abe-400f-90b3-5843bff7a1d2
+
+
+ a359f81d-d6bd-482c-8b40-7b59535b7779
+
+
+ 739d0503-75e3-46a8-8faf-4547fb8fe8ed
+
+
+ 997273ed-4286-47d2-bf70-4035f8566306
+
+
+ a32fddd0-6747-4e5c-bb3b-4fef7cfc0a01
+
+
+ c2ef3e67-0948-40e3-833c-6f39cf826bb6
+
+
+ 39eb95b7-4b79-474c-8af4-77e8df595267
+
+
+ f43c5cc0-021c-4041-a511-ec484ad10145
+
+
+ 0ea33c8a-1019-4f36-8689-9314391c131e
+
+
+ 3ba3f09b-5a48-480d-8692-932c28fe769f
+
+
+ 71f41608-66cc-41a8-8784-d58bc5439c52
+
+
+ 01a8f3b6-3bfb-4324-8f64-473f0ae94a0f
+
+
+ 2cb5c9a7-a910-4c20-855a-ece3ac2c8f45
+
+
+ 10e3ffaf-d198-4c26-b6de-1a986655520a
+
+
+ ced139a6-abc3-41c2-be06-bbc09075296d
+
+
+ dcd95b3d-6342-4bfa-b55a-a3015a553dea
+
+
+ ae6081db-b87d-4139-b637-81ea4e001163
+
+
+ df333e0b-a904-48d4-93a0-9a759cc55c26
+
+
+ 7248c0cb-14e9-4697-b17f-db443be5e9ef
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ Ibn-Zustand
+
+
+ 2015-06-23
+
+
+ 2015-06-23
+
+
+ 01
+
+
+ false
+
+
+ 04
+
+
+ Bauzustand
+
+
+ PT_1
+
+
+
+
+ 12345-67890
+
+
+ 2019-07-31
+
+
+ sonstige
+
+
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D231E98146FF
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D23DE98246FF
+
+
+
+ Erlaeuterungsbericht
+
+
+ Erläuterungsbericht-Scheibenberg
+
+
+ pdf
+
+
+
+
+
+
+
+ 2015-11-03
+
+
+
+ 60024045-7D4E-4C59-98AC-088D437D4B7A
+
+
+
+ Boockmeyer
+
+
+ Boockmeyer
+
+
+ Boock
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+ Planer
+
+
+
+
+
+
+ 2016-12-31
+
+
+ 1.7.0.1
+
+
+ sonstige
+
+
+ DB Netze
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ 120,000
+
+
+ 8980
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ ESTW-UZ N-Stadt
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ ESTW-A Scheibenberg
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+
+ WGS84
+
+
+ 4541324.55 5647860.25 4533627.31 5629542.69 4530892.30 5615315.52 4530896.25 5615314.81 4535700.32 5625130.79 4541007.74 5647040.74
+
+
+
+
+ WGS84
+
+
+ 4534953.69 5631722.21 4535060.27 5631655.77 4534117.81 5629091.17 4534190.47 5629031.56 4534190.47 5626410.63 4534541.42 5626126.37 4534451.48 5625924.01 4533883.87 5626227.30 4533883.87 5625744.61 4533648.18 5624927.37 4533444.84 5624987.20 4533963.42 5627558.05 4533627.31 5629542.69 4533935.67 5628728.88 4533950.34 5629188.21
+
+
+
+
+
+ Neubau ESTW Scheibenberg
+
+
+ 2017-12-31
+
+
+ 1234ABCD5678EFGH
+
+
+
+ 3C590A15-5293-4AF6-A81D-1C4E82297602
+
+
+
+ Arne Boockmeyer
+
+
+ Arne Boock
+
+
+ Arne
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI.OSM
+
+
+
+
+
+
+
+
diff --git a/test/flank-protection-example2.ppxml b/test/flank-protection-example2.ppxml
new file mode 100644
index 0000000..a17e8b6
--- /dev/null
+++ b/test/flank-protection-example2.ppxml
@@ -0,0 +1,1298 @@
+
+
+
+ 8cd165dc-272f-4a2e-934e-f0c9e9a73498
+
+
+
+ 2023-06-30T15:03:17.675130
+
+
+ Werkzeugkoffer
+
+
+ 48.3.0
+
+
+
+
+
+
+ 964c3eea-990a-4038-affd-f41c9b21b4b7
+
+
+
+ 097785ce-956b-49a7-8c74-a138e32f275d
+
+
+
+
+
+ b1c930db-6163-41e2-9dbc-2ba29bc4e1dd
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+ 2012-02-24
+
+
+
+
+
+ ESTW_A
+
+
+
+
+ Notstromaggregat_NEA_stationaer
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ Scheibenberg
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ 28afe53f-d83e-41a9-9be1-e464fb8b159d
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 200.00000
+
+
+ Ivl
+
+
+
+ 8b2609f8-7b11-40ec-b59f-53d9ad0e1138
+
+
+ b4ed0a4e-381e-4b2b-8bbe-f28a0cffe83a
+
+
+ bae56bf1-f0df-46fb-a20b-e335ffa9b73b
+
+
+
+
+ d45be226-312b-4b27-b033-ab9eb4eab1c8
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 200.00000
+
+
+ Ivl
+
+
+
+ e1074ddc-6d1c-421d-a045-ad68a3c9df88
+
+
+ bae56bf1-f0df-46fb-a20b-e335ffa9b73b
+
+
+ afc1d4fd-faa1-4bbd-be9b-45f7713ffa73
+
+
+
+
+ fa1298d9-959a-44c8-8b41-e5b9c73c5277
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 150.00000
+
+
+ Ivl
+
+
+
+ fe60c681-62c9-49c6-88b5-6f503a21ea08
+
+
+ 5c09d94e-e903-43d8-90c6-5268d7fc3336
+
+
+ 08822274-fff5-4226-a887-38bf6a92de5f
+
+
+
+
+ 6673245d-7a1c-4821-a57c-db8ce13d4289
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 250.00000
+
+
+ Ivl
+
+
+
+ ca673d90-ef28-4628-a012-4f45bb517fa1
+
+
+ 08822274-fff5-4226-a887-38bf6a92de5f
+
+
+ 94085ad9-6b67-4953-8bb8-8d615116279c
+
+
+
+
+ c4e50169-bdf9-4e37-a8cd-90055611f04d
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 53.85165
+
+
+ Ivl
+
+
+
+ 6d6f805e-0cbc-455d-a1f4-1e7d13b0f480
+
+
+ 08822274-fff5-4226-a887-38bf6a92de5f
+
+
+ bae56bf1-f0df-46fb-a20b-e335ffa9b73b
+
+
+
+
+ b4ed0a4e-381e-4b2b-8bbe-f28a0cffe83a
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ bae56bf1-f0df-46fb-a20b-e335ffa9b73b
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ afc1d4fd-faa1-4bbd-be9b-45f7713ffa73
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 5c09d94e-e903-43d8-90c6-5268d7fc3336
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 08822274-fff5-4226-a887-38bf6a92de5f
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 94085ad9-6b67-4953-8bb8-8d615116279c
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ d7856c4b-689c-4fae-8d16-4771ba1d8f8e
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ b4ed0a4e-381e-4b2b-8bbe-f28a0cffe83a
+
+
+
+
+ 53efef54-619f-450b-a46d-c7ef9ca78ab0
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533970.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ bae56bf1-f0df-46fb-a20b-e335ffa9b73b
+
+
+
+
+ 9bb31ad6-4aa9-479d-853e-b5876755dd62
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534170.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ afc1d4fd-faa1-4bbd-be9b-45f7713ffa73
+
+
+
+
+ aad1fb64-ac33-4a33-ba37-fdaa449aa8d7
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 5c09d94e-e903-43d8-90c6-5268d7fc3336
+
+
+
+
+ 6fd72e40-94c3-4037-91fd-17603e030d52
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533920.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 08822274-fff5-4226-a887-38bf6a92de5f
+
+
+
+
+ b74914ba-2559-464d-a1da-9337a943a747
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534170.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 94085ad9-6b67-4953-8bb8-8d615116279c
+
+
+
+
+ 8ba7f570-a72b-4fe2-86bb-84c85fb9eacb
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 2aa764bb-bdab-42a5-9483-b91e02609a37
+
+
+ 85,385
+
+
+
+
+ 10.000
+
+
+ 8b2609f8-7b11-40ec-b59f-53d9ad0e1138
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60E1
+
+
+ E1
+
+
+ 60E1
+
+
+ 60E1
+
+
+ 60
+
+
+ E1
+
+
+
+
+ Mast
+
+
+
+ 8ba7f570-a72b-4fe2-86bb-84c85fb9eacb
+
+
+ Einfahr_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ a9eac591-f0e2-4802-abdc-4040bc1e81c8
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 2aa764bb-bdab-42a5-9483-b91e02609a37
+
+
+ 85,385
+
+
+
+
+ 50.000
+
+
+ e1074ddc-6d1c-421d-a045-ad68a3c9df88
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60A1
+
+
+ A1
+
+
+ 60A1
+
+
+ 60A1
+
+
+ 60
+
+
+ A1
+
+
+
+
+ Mast
+
+
+
+ a9eac591-f0e2-4802-abdc-4040bc1e81c8
+
+
+ Ausfahr_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 8ba7f570-a72b-4fe2-86bb-84c85fb9eacb
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ a9eac591-f0e2-4802-abdc-4040bc1e81c8
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 2aa764bb-bdab-42a5-9483-b91e02609a37
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 0.000
+
+
+ 200.000
+
+
+ 8b2609f8-7b11-40ec-b59f-53d9ad0e1138
+
+
+
+
+ 0.000
+
+
+ 200.000
+
+
+ e1074ddc-6d1c-421d-a045-ad68a3c9df88
+
+
+
+
+ 0.000
+
+
+ 150.000
+
+
+ fe60c681-62c9-49c6-88b5-6f503a21ea08
+
+
+
+
+ 0.000
+
+
+ 250.000
+
+
+ ca673d90-ef28-4628-a012-4f45bb517fa1
+
+
+
+
+ 0.000
+
+
+ 53.852
+
+
+ 6d6f805e-0cbc-455d-a1f4-1e7d13b0f480
+
+
+
+
+ 9260
+
+
+
+
+
+ 8b2609f8-7b11-40ec-b59f-53d9ad0e1138
+
+
+
+ 2012-02-24
+
+
+
+
+ bbe0fc75-3624-4aec-bd24-dccee2570e35
+
+
+ aaaaab4e-3e84-4cfe-9045-e0cc7f17a7f9
+
+
+
+ Ende
+
+
+ Links
+
+
+ 200.000
+
+
+
+
+
+ e1074ddc-6d1c-421d-a045-ad68a3c9df88
+
+
+
+ 2012-02-24
+
+
+
+
+ aaaaab4e-3e84-4cfe-9045-e0cc7f17a7f9
+
+
+ 80f20527-b1a4-44ee-a8b8-fc5a8c816844
+
+
+
+ Spitze
+
+
+ Ende
+
+
+ 200.000
+
+
+
+
+
+ fe60c681-62c9-49c6-88b5-6f503a21ea08
+
+
+
+ 2012-02-24
+
+
+
+
+ cb8ddc82-1670-422b-85e6-f7c296480fb8
+
+
+ 199b021c-7c2d-44b4-b0eb-f74a8faaed72
+
+
+
+ Ende
+
+
+ Spitze
+
+
+ 150.000
+
+
+
+
+
+ ca673d90-ef28-4628-a012-4f45bb517fa1
+
+
+
+ 2012-02-24
+
+
+
+
+ 199b021c-7c2d-44b4-b0eb-f74a8faaed72
+
+
+ 4c5d86dc-6b56-4e84-bb29-83514cd28fd2
+
+
+
+ Links
+
+
+ Ende
+
+
+ 250.000
+
+
+
+
+
+ 6d6f805e-0cbc-455d-a1f4-1e7d13b0f480
+
+
+
+ 2012-02-24
+
+
+
+
+ 199b021c-7c2d-44b4-b0eb-f74a8faaed72
+
+
+ aaaaab4e-3e84-4cfe-9045-e0cc7f17a7f9
+
+
+
+ Rechts
+
+
+ Rechts
+
+
+ 53.852
+
+
+
+
+
+ bbe0fc75-3624-4aec-bd24-dccee2570e35
+
+
+
+ 2012-02-24
+
+
+
+
+ b4ed0a4e-381e-4b2b-8bbe-f28a0cffe83a
+
+
+
+
+ aaaaab4e-3e84-4cfe-9045-e0cc7f17a7f9
+
+
+
+ 2012-02-24
+
+
+
+
+ bae56bf1-f0df-46fb-a20b-e335ffa9b73b
+
+
+
+
+ 80f20527-b1a4-44ee-a8b8-fc5a8c816844
+
+
+
+ 2012-02-24
+
+
+
+
+ afc1d4fd-faa1-4bbd-be9b-45f7713ffa73
+
+
+
+
+ cb8ddc82-1670-422b-85e6-f7c296480fb8
+
+
+
+ 2012-02-24
+
+
+
+
+ 5c09d94e-e903-43d8-90c6-5268d7fc3336
+
+
+
+
+ 199b021c-7c2d-44b4-b0eb-f74a8faaed72
+
+
+
+ 2012-02-24
+
+
+
+
+ 08822274-fff5-4226-a887-38bf6a92de5f
+
+
+
+
+ 4c5d86dc-6b56-4e84-bb29-83514cd28fd2
+
+
+
+ 2012-02-24
+
+
+
+
+ 94085ad9-6b67-4953-8bb8-8d615116279c
+
+
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gebaeude
+
+
+ Fundament
+
+
+
+ 11314F34-1A1C-4EBB-9AB2-133C5F2A9167
+
+
+
+
+
+ sonstige
+
+
+
+
+
+
+ F05DAC3B-4E33-43D3-9A03-6055566FC3B7
+
+
+
+ AFFE2101-3E72-4D64-88F1-FFE1A69396AA
+
+
+ ABC
+
+
+
+ BE199B7D-A86C-4682-8E08-4B23DE2CF5A3
+
+
+ 964c3eea-990a-4038-affd-f41c9b21b4b7
+
+
+
+ 964c3eea-990a-4038-affd-f41c9b21b4b7
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ bbe0fc75-3624-4aec-bd24-dccee2570e35
+
+
+ b4ed0a4e-381e-4b2b-8bbe-f28a0cffe83a
+
+
+ aaaaab4e-3e84-4cfe-9045-e0cc7f17a7f9
+
+
+ bae56bf1-f0df-46fb-a20b-e335ffa9b73b
+
+
+ 80f20527-b1a4-44ee-a8b8-fc5a8c816844
+
+
+ afc1d4fd-faa1-4bbd-be9b-45f7713ffa73
+
+
+ cb8ddc82-1670-422b-85e6-f7c296480fb8
+
+
+ 5c09d94e-e903-43d8-90c6-5268d7fc3336
+
+
+ 199b021c-7c2d-44b4-b0eb-f74a8faaed72
+
+
+ 08822274-fff5-4226-a887-38bf6a92de5f
+
+
+ 4c5d86dc-6b56-4e84-bb29-83514cd28fd2
+
+
+ 94085ad9-6b67-4953-8bb8-8d615116279c
+
+
+ 8b2609f8-7b11-40ec-b59f-53d9ad0e1138
+
+
+ 28afe53f-d83e-41a9-9be1-e464fb8b159d
+
+
+ e1074ddc-6d1c-421d-a045-ad68a3c9df88
+
+
+ d45be226-312b-4b27-b033-ab9eb4eab1c8
+
+
+ fe60c681-62c9-49c6-88b5-6f503a21ea08
+
+
+ fa1298d9-959a-44c8-8b41-e5b9c73c5277
+
+
+ ca673d90-ef28-4628-a012-4f45bb517fa1
+
+
+ 6673245d-7a1c-4821-a57c-db8ce13d4289
+
+
+ 6d6f805e-0cbc-455d-a1f4-1e7d13b0f480
+
+
+ c4e50169-bdf9-4e37-a8cd-90055611f04d
+
+
+ 8ba7f570-a72b-4fe2-86bb-84c85fb9eacb
+
+
+ a9eac591-f0e2-4802-abdc-4040bc1e81c8
+
+
+ 2aa764bb-bdab-42a5-9483-b91e02609a37
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ Ibn-Zustand
+
+
+ 2015-06-23
+
+
+ 2015-06-23
+
+
+ 01
+
+
+ false
+
+
+ 04
+
+
+ Bauzustand
+
+
+ PT_1
+
+
+
+
+ 12345-67890
+
+
+ 2019-07-31
+
+
+ sonstige
+
+
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D231E98146FF
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D23DE98246FF
+
+
+
+ Erlaeuterungsbericht
+
+
+ Erläuterungsbericht-Scheibenberg
+
+
+ pdf
+
+
+
+
+
+
+
+ 2015-11-03
+
+
+
+ 60024045-7D4E-4C59-98AC-088D437D4B7A
+
+
+
+ Boockmeyer
+
+
+ Boockmeyer
+
+
+ Boock
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+ Planer
+
+
+
+
+
+
+ 2016-12-31
+
+
+ 1.7.0.1
+
+
+ sonstige
+
+
+ DB Netze
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ 120,000
+
+
+ 8980
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ ESTW-UZ N-Stadt
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ ESTW-A Scheibenberg
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+
+ WGS84
+
+
+ 4541324.55 5647860.25 4533627.31 5629542.69 4530892.30 5615315.52 4530896.25 5615314.81 4535700.32 5625130.79 4541007.74 5647040.74
+
+
+
+
+ WGS84
+
+
+ 4534953.69 5631722.21 4535060.27 5631655.77 4534117.81 5629091.17 4534190.47 5629031.56 4534190.47 5626410.63 4534541.42 5626126.37 4534451.48 5625924.01 4533883.87 5626227.30 4533883.87 5625744.61 4533648.18 5624927.37 4533444.84 5624987.20 4533963.42 5627558.05 4533627.31 5629542.69 4533935.67 5628728.88 4533950.34 5629188.21
+
+
+
+
+
+ Neubau ESTW Scheibenberg
+
+
+ 2017-12-31
+
+
+ 1234ABCD5678EFGH
+
+
+
+ 3C590A15-5293-4AF6-A81D-1C4E82297602
+
+
+
+ Arne Boockmeyer
+
+
+ Arne Boock
+
+
+ Arne
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI.OSM
+
+
+
+
+
+
+
+
diff --git a/test/flank-protection-example3.ppxml b/test/flank-protection-example3.ppxml
new file mode 100644
index 0000000..b0280f6
--- /dev/null
+++ b/test/flank-protection-example3.ppxml
@@ -0,0 +1,1674 @@
+
+
+
+ cc185a2f-cdae-4b20-8d16-2b02ab03e79a
+
+
+
+ 2023-06-30T15:40:31.146049
+
+
+ Werkzeugkoffer
+
+
+ 48.3.0
+
+
+
+
+
+
+ ac4aa28f-d916-46ec-943e-153dfdbf964a
+
+
+
+ e065763b-a8bc-480a-9807-af578f914cf7
+
+
+
+
+
+ 32a7cc91-dca7-40ae-8feb-fb8438c44ff8
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+ 2012-02-24
+
+
+
+
+
+ ESTW_A
+
+
+
+
+ Notstromaggregat_NEA_stationaer
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ Scheibenberg
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ 1c1f6740-b1b4-4bf5-b31f-bec90ffa62d0
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 100.00000
+
+
+ Ivl
+
+
+
+ cd20114b-0ec8-47b5-bf9d-1f67dc562d00
+
+
+ 35157a78-76ad-4389-903c-81267e0dac62
+
+
+ 6fa9879c-6ece-4da5-a415-1f596b05ebe9
+
+
+
+
+ 3cd99b38-7150-4c12-9f27-0244aa833f37
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 300.00000
+
+
+ Ivl
+
+
+
+ 9ad69373-2167-4a40-ade4-273ddec63e0d
+
+
+ 6fa9879c-6ece-4da5-a415-1f596b05ebe9
+
+
+ 9ccb76bb-ea46-41b3-9df5-801361d6281b
+
+
+
+
+ e1dc6b23-2acf-4fe6-9f1d-f7f3b7498cce
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 53.85165
+
+
+ Ivl
+
+
+
+ e2406ab3-a570-4802-966b-3daf2facd3d4
+
+
+ 6fa9879c-6ece-4da5-a415-1f596b05ebe9
+
+
+ d466158c-08f6-4490-9958-b6ed69c9c264
+
+
+
+
+ f173dd3b-5ac2-4e61-902d-6e8fc4a1c6ff
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 250.00000
+
+
+ Ivl
+
+
+
+ ddec551c-0ef3-478b-830f-43baad8398d9
+
+
+ d466158c-08f6-4490-9958-b6ed69c9c264
+
+
+ e9a54407-d134-4bc6-b11e-f77ee3aa47a0
+
+
+
+
+ a7ec8e27-60be-4c1f-b647-c7099cf3349c
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 300.00000
+
+
+ Ivl
+
+
+
+ e3727905-e774-4e7e-9dd2-8e9a7b91dd86
+
+
+ e5942862-e998-45a0-9e2b-09aa8109b9c4
+
+
+ ba80e261-d793-439f-9aac-78dce6c86cf7
+
+
+
+
+ 74d93518-b494-4543-adc1-382f72da7d58
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 151.32746
+
+
+ Ivl
+
+
+
+ 83b2eca8-cdfb-4a2e-8762-a2d2b07a201c
+
+
+ d466158c-08f6-4490-9958-b6ed69c9c264
+
+
+ ba80e261-d793-439f-9aac-78dce6c86cf7
+
+
+
+
+ 146d207c-65f7-475d-ba0c-f0ed9f721550
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 100.00000
+
+
+ Ivl
+
+
+
+ adda4c83-131f-4f7d-af65-0b2e9ad9b28f
+
+
+ ba80e261-d793-439f-9aac-78dce6c86cf7
+
+
+ 30719191-3cfa-4c59-b77e-7bfbb232b471
+
+
+
+
+ 35157a78-76ad-4389-903c-81267e0dac62
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 6fa9879c-6ece-4da5-a415-1f596b05ebe9
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 9ccb76bb-ea46-41b3-9df5-801361d6281b
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ d466158c-08f6-4490-9958-b6ed69c9c264
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ e9a54407-d134-4bc6-b11e-f77ee3aa47a0
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ e5942862-e998-45a0-9e2b-09aa8109b9c4
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ ba80e261-d793-439f-9aac-78dce6c86cf7
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 30719191-3cfa-4c59-b77e-7bfbb232b471
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ c2c4513f-761a-497b-ad6f-379b63f596c3
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 35157a78-76ad-4389-903c-81267e0dac62
+
+
+
+
+ d58f47d2-f382-4404-b152-e3cd71d74e0b
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533870.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 6fa9879c-6ece-4da5-a415-1f596b05ebe9
+
+
+
+
+ a54b37cc-1d82-4ced-a2a2-a3ebc39b8f84
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534170.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 9ccb76bb-ea46-41b3-9df5-801361d6281b
+
+
+
+
+ 33506ec4-82b9-49b4-8462-f544db8be32b
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533920.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ d466158c-08f6-4490-9958-b6ed69c9c264
+
+
+
+
+ f677678e-9d9a-4ab7-9399-378c2489a312
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534170.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ e9a54407-d134-4bc6-b11e-f77ee3aa47a0
+
+
+
+
+ 01db81dc-afd2-45f8-9899-75ebb1cab237
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625820.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ e5942862-e998-45a0-9e2b-09aa8109b9c4
+
+
+
+
+ c3be6b30-5d5e-49e0-8eed-47ad5398c113
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534070.00000
+
+
+ 5625820.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ ba80e261-d793-439f-9aac-78dce6c86cf7
+
+
+
+
+ d6f40542-2b60-4002-9cf1-7f6f000c98b8
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534170.00000
+
+
+ 5625820.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 30719191-3cfa-4c59-b77e-7bfbb232b471
+
+
+
+
+ a8733d13-9577-44fc-b8c0-f593b3a36c71
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 7ecfd232-9b9c-476c-86a0-5484229bc10f
+
+
+ 125,518
+
+
+
+
+ 10.000
+
+
+ cd20114b-0ec8-47b5-bf9d-1f67dc562d00
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60E1
+
+
+ E1
+
+
+ 60E1
+
+
+ 60E1
+
+
+ 60
+
+
+ E1
+
+
+
+
+ Mast
+
+
+
+ a8733d13-9577-44fc-b8c0-f593b3a36c71
+
+
+ Einfahr_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 9c149a8c-344d-4120-b53c-c5415a8eaf29
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 7ecfd232-9b9c-476c-86a0-5484229bc10f
+
+
+ 125,518
+
+
+
+
+ 200.000
+
+
+ 9ad69373-2167-4a40-ade4-273ddec63e0d
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60A1
+
+
+ A1
+
+
+ 60A1
+
+
+ 60A1
+
+
+ 60
+
+
+ A1
+
+
+
+
+ Mast
+
+
+
+ 9c149a8c-344d-4120-b53c-c5415a8eaf29
+
+
+ Ausfahr_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ cfc83e3d-fbdc-4166-80e3-e73bb0bba407
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 7ecfd232-9b9c-476c-86a0-5484229bc10f
+
+
+ 125,518
+
+
+
+
+ 10.000
+
+
+ ddec551c-0ef3-478b-830f-43baad8398d9
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60E2
+
+
+ E2
+
+
+ 60E2
+
+
+ 60E2
+
+
+ 60
+
+
+ E2
+
+
+
+
+ Mast
+
+
+
+ cfc83e3d-fbdc-4166-80e3-e73bb0bba407
+
+
+ Einfahr_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ a8733d13-9577-44fc-b8c0-f593b3a36c71
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 9c149a8c-344d-4120-b53c-c5415a8eaf29
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ cfc83e3d-fbdc-4166-80e3-e73bb0bba407
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 7ecfd232-9b9c-476c-86a0-5484229bc10f
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 0.000
+
+
+ 100.000
+
+
+ cd20114b-0ec8-47b5-bf9d-1f67dc562d00
+
+
+
+
+ 0.000
+
+
+ 300.000
+
+
+ 9ad69373-2167-4a40-ade4-273ddec63e0d
+
+
+
+
+ 0.000
+
+
+ 53.852
+
+
+ e2406ab3-a570-4802-966b-3daf2facd3d4
+
+
+
+
+ 0.000
+
+
+ 250.000
+
+
+ ddec551c-0ef3-478b-830f-43baad8398d9
+
+
+
+
+ 0.000
+
+
+ 300.000
+
+
+ e3727905-e774-4e7e-9dd2-8e9a7b91dd86
+
+
+
+
+ 0.000
+
+
+ 151.327
+
+
+ 83b2eca8-cdfb-4a2e-8762-a2d2b07a201c
+
+
+
+
+ 0.000
+
+
+ 100.000
+
+
+ adda4c83-131f-4f7d-af65-0b2e9ad9b28f
+
+
+
+
+ 5074
+
+
+
+
+
+ cd20114b-0ec8-47b5-bf9d-1f67dc562d00
+
+
+
+ 2012-02-24
+
+
+
+
+ bab13012-398d-4231-a3bf-ff7b0facbdd4
+
+
+ 7a2cd48e-a55c-44df-b64c-4e9976de40a7
+
+
+
+ Ende
+
+
+ Spitze
+
+
+ 100.000
+
+
+
+
+
+ 9ad69373-2167-4a40-ade4-273ddec63e0d
+
+
+
+ 2012-02-24
+
+
+
+
+ 7a2cd48e-a55c-44df-b64c-4e9976de40a7
+
+
+ 91752c3b-52b6-4503-9292-c6ef1eef6e71
+
+
+
+ Rechts
+
+
+ Ende
+
+
+ 300.000
+
+
+
+
+
+ e2406ab3-a570-4802-966b-3daf2facd3d4
+
+
+
+ 2012-02-24
+
+
+
+
+ 7a2cd48e-a55c-44df-b64c-4e9976de40a7
+
+
+ efc715e8-9357-4be1-ad31-c8324578fc1f
+
+
+
+ Links
+
+
+ Spitze
+
+
+ 53.852
+
+
+
+
+
+ ddec551c-0ef3-478b-830f-43baad8398d9
+
+
+
+ 2012-02-24
+
+
+
+
+ efc715e8-9357-4be1-ad31-c8324578fc1f
+
+
+ f5c0502b-528e-494b-ba07-f69c686a8457
+
+
+
+ Rechts
+
+
+ Ende
+
+
+ 250.000
+
+
+
+
+
+ e3727905-e774-4e7e-9dd2-8e9a7b91dd86
+
+
+
+ 2012-02-24
+
+
+
+
+ 2d3fcaf9-61e2-40f7-b0b9-0f66f2f3d3ea
+
+
+ 2f641a2a-c5bf-4bc0-8f3a-e2b78adda301
+
+
+
+ Ende
+
+
+ Rechts
+
+
+ 300.000
+
+
+
+
+
+ 83b2eca8-cdfb-4a2e-8762-a2d2b07a201c
+
+
+
+ 2012-02-24
+
+
+
+
+ efc715e8-9357-4be1-ad31-c8324578fc1f
+
+
+ 2f641a2a-c5bf-4bc0-8f3a-e2b78adda301
+
+
+
+ Links
+
+
+ Links
+
+
+ 151.327
+
+
+
+
+
+ adda4c83-131f-4f7d-af65-0b2e9ad9b28f
+
+
+
+ 2012-02-24
+
+
+
+
+ 2f641a2a-c5bf-4bc0-8f3a-e2b78adda301
+
+
+ 25e94e0f-2d6e-4f36-b0cd-cbfd21ddce2e
+
+
+
+ Spitze
+
+
+ Ende
+
+
+ 100.000
+
+
+
+
+
+ bab13012-398d-4231-a3bf-ff7b0facbdd4
+
+
+
+ 2012-02-24
+
+
+
+
+ 35157a78-76ad-4389-903c-81267e0dac62
+
+
+
+
+ 7a2cd48e-a55c-44df-b64c-4e9976de40a7
+
+
+
+ 2012-02-24
+
+
+
+
+ 6fa9879c-6ece-4da5-a415-1f596b05ebe9
+
+
+
+
+ 91752c3b-52b6-4503-9292-c6ef1eef6e71
+
+
+
+ 2012-02-24
+
+
+
+
+ 9ccb76bb-ea46-41b3-9df5-801361d6281b
+
+
+
+
+ efc715e8-9357-4be1-ad31-c8324578fc1f
+
+
+
+ 2012-02-24
+
+
+
+
+ d466158c-08f6-4490-9958-b6ed69c9c264
+
+
+
+
+ f5c0502b-528e-494b-ba07-f69c686a8457
+
+
+
+ 2012-02-24
+
+
+
+
+ e9a54407-d134-4bc6-b11e-f77ee3aa47a0
+
+
+
+
+ 2d3fcaf9-61e2-40f7-b0b9-0f66f2f3d3ea
+
+
+
+ 2012-02-24
+
+
+
+
+ e5942862-e998-45a0-9e2b-09aa8109b9c4
+
+
+
+
+ 2f641a2a-c5bf-4bc0-8f3a-e2b78adda301
+
+
+
+ 2012-02-24
+
+
+
+
+ ba80e261-d793-439f-9aac-78dce6c86cf7
+
+
+
+
+ 25e94e0f-2d6e-4f36-b0cd-cbfd21ddce2e
+
+
+
+ 2012-02-24
+
+
+
+
+ 30719191-3cfa-4c59-b77e-7bfbb232b471
+
+
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gebaeude
+
+
+ Fundament
+
+
+
+ 11314F34-1A1C-4EBB-9AB2-133C5F2A9167
+
+
+
+
+
+ sonstige
+
+
+
+
+
+
+ F05DAC3B-4E33-43D3-9A03-6055566FC3B7
+
+
+
+ AFFE2101-3E72-4D64-88F1-FFE1A69396AA
+
+
+ ABC
+
+
+
+ BE199B7D-A86C-4682-8E08-4B23DE2CF5A3
+
+
+ ac4aa28f-d916-46ec-943e-153dfdbf964a
+
+
+
+ ac4aa28f-d916-46ec-943e-153dfdbf964a
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ bab13012-398d-4231-a3bf-ff7b0facbdd4
+
+
+ 35157a78-76ad-4389-903c-81267e0dac62
+
+
+ 7a2cd48e-a55c-44df-b64c-4e9976de40a7
+
+
+ 6fa9879c-6ece-4da5-a415-1f596b05ebe9
+
+
+ 91752c3b-52b6-4503-9292-c6ef1eef6e71
+
+
+ 9ccb76bb-ea46-41b3-9df5-801361d6281b
+
+
+ efc715e8-9357-4be1-ad31-c8324578fc1f
+
+
+ d466158c-08f6-4490-9958-b6ed69c9c264
+
+
+ f5c0502b-528e-494b-ba07-f69c686a8457
+
+
+ e9a54407-d134-4bc6-b11e-f77ee3aa47a0
+
+
+ 2d3fcaf9-61e2-40f7-b0b9-0f66f2f3d3ea
+
+
+ e5942862-e998-45a0-9e2b-09aa8109b9c4
+
+
+ 2f641a2a-c5bf-4bc0-8f3a-e2b78adda301
+
+
+ ba80e261-d793-439f-9aac-78dce6c86cf7
+
+
+ 25e94e0f-2d6e-4f36-b0cd-cbfd21ddce2e
+
+
+ 30719191-3cfa-4c59-b77e-7bfbb232b471
+
+
+ cd20114b-0ec8-47b5-bf9d-1f67dc562d00
+
+
+ 1c1f6740-b1b4-4bf5-b31f-bec90ffa62d0
+
+
+ 9ad69373-2167-4a40-ade4-273ddec63e0d
+
+
+ 3cd99b38-7150-4c12-9f27-0244aa833f37
+
+
+ e2406ab3-a570-4802-966b-3daf2facd3d4
+
+
+ e1dc6b23-2acf-4fe6-9f1d-f7f3b7498cce
+
+
+ ddec551c-0ef3-478b-830f-43baad8398d9
+
+
+ f173dd3b-5ac2-4e61-902d-6e8fc4a1c6ff
+
+
+ e3727905-e774-4e7e-9dd2-8e9a7b91dd86
+
+
+ a7ec8e27-60be-4c1f-b647-c7099cf3349c
+
+
+ 83b2eca8-cdfb-4a2e-8762-a2d2b07a201c
+
+
+ 74d93518-b494-4543-adc1-382f72da7d58
+
+
+ adda4c83-131f-4f7d-af65-0b2e9ad9b28f
+
+
+ 146d207c-65f7-475d-ba0c-f0ed9f721550
+
+
+ a8733d13-9577-44fc-b8c0-f593b3a36c71
+
+
+ 9c149a8c-344d-4120-b53c-c5415a8eaf29
+
+
+ cfc83e3d-fbdc-4166-80e3-e73bb0bba407
+
+
+ 7ecfd232-9b9c-476c-86a0-5484229bc10f
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ Ibn-Zustand
+
+
+ 2015-06-23
+
+
+ 2015-06-23
+
+
+ 01
+
+
+ false
+
+
+ 04
+
+
+ Bauzustand
+
+
+ PT_1
+
+
+
+
+ 12345-67890
+
+
+ 2019-07-31
+
+
+ sonstige
+
+
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D231E98146FF
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D23DE98246FF
+
+
+
+ Erlaeuterungsbericht
+
+
+ Erläuterungsbericht-Scheibenberg
+
+
+ pdf
+
+
+
+
+
+
+
+ 2015-11-03
+
+
+
+ 60024045-7D4E-4C59-98AC-088D437D4B7A
+
+
+
+ Boockmeyer
+
+
+ Boockmeyer
+
+
+ Boock
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+ Planer
+
+
+
+
+
+
+ 2016-12-31
+
+
+ 1.7.0.1
+
+
+ sonstige
+
+
+ DB Netze
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ 120,000
+
+
+ 8980
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ ESTW-UZ N-Stadt
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ ESTW-A Scheibenberg
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+
+ WGS84
+
+
+ 4541324.55 5647860.25 4533627.31 5629542.69 4530892.30 5615315.52 4530896.25 5615314.81 4535700.32 5625130.79 4541007.74 5647040.74
+
+
+
+
+ WGS84
+
+
+ 4534953.69 5631722.21 4535060.27 5631655.77 4534117.81 5629091.17 4534190.47 5629031.56 4534190.47 5626410.63 4534541.42 5626126.37 4534451.48 5625924.01 4533883.87 5626227.30 4533883.87 5625744.61 4533648.18 5624927.37 4533444.84 5624987.20 4533963.42 5627558.05 4533627.31 5629542.69 4533935.67 5628728.88 4533950.34 5629188.21
+
+
+
+
+
+ Neubau ESTW Scheibenberg
+
+
+ 2017-12-31
+
+
+ 1234ABCD5678EFGH
+
+
+
+ 3C590A15-5293-4AF6-A81D-1C4E82297602
+
+
+
+ Arne Boockmeyer
+
+
+ Arne Boock
+
+
+ Arne
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI.OSM
+
+
+
+
+
+
+
+
diff --git a/test/flank-protection-example4.ppxml b/test/flank-protection-example4.ppxml
new file mode 100644
index 0000000..ab2efcd
--- /dev/null
+++ b/test/flank-protection-example4.ppxml
@@ -0,0 +1,1510 @@
+
+
+
+ 3a316d0c-b69b-42e3-a815-006ab7697a82
+
+
+
+ 2023-07-06T12:01:26.109415
+
+
+ Werkzeugkoffer
+
+
+ 48.3.0
+
+
+
+
+
+
+ df541dce-93ae-434c-b883-466c66f070da
+
+
+
+ 61c052da-7e84-43e6-8da9-a20d8d6b59f8
+
+
+
+
+
+ db0da228-5e88-447e-b9ac-f5193409cd38
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+ 2012-02-24
+
+
+
+
+
+ ESTW_A
+
+
+
+
+ Notstromaggregat_NEA_stationaer
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ Scheibenberg
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ f5e04907-a91d-4bde-a639-a9e0c702b973
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 100.00000
+
+
+ Ivl
+
+
+
+ 63bfc190-c7f8-4ae3-8477-44e73025a384
+
+
+ 592b4b8a-17e1-4bc9-a409-21efb068f99b
+
+
+ 3c5ca682-a23a-43cc-a97a-a9f0a82790cd
+
+
+
+
+ a6c9fddd-d071-4be4-8d9a-183f8308652b
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 200.00000
+
+
+ Ivl
+
+
+
+ a0f53bbf-4301-4ae8-aea6-805d43453a96
+
+
+ 3c5ca682-a23a-43cc-a97a-a9f0a82790cd
+
+
+ dd3d447f-19fb-41e8-9a42-db2816b32488
+
+
+
+
+ 732395b4-f822-40e3-ac5a-c6aae3048f05
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 101.98039
+
+
+ Ivl
+
+
+
+ 5292f1d2-3c58-4aa4-8a6f-32688ef24965
+
+
+ 3c5ca682-a23a-43cc-a97a-a9f0a82790cd
+
+
+ 93667527-0942-49dd-90e8-aa0eb50b2674
+
+
+
+
+ 9120e3a3-1fa6-4b60-b73d-5e1a679641da
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 200.00000
+
+
+ Ivl
+
+
+
+ df70feff-9207-4db2-9565-8d1d4a5d70f2
+
+
+ 47e39d31-294a-47b6-bccc-2aec9dd59d5d
+
+
+ 93667527-0942-49dd-90e8-aa0eb50b2674
+
+
+
+
+ 3cbb63e3-f2ae-402d-ac82-40523902e467
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 100.00000
+
+
+ Ivl
+
+
+
+ f91d8d26-456e-4454-b613-641a8a46c0cd
+
+
+ 93667527-0942-49dd-90e8-aa0eb50b2674
+
+
+ ab134618-cd1f-43cf-b8db-f15458b16662
+
+
+
+
+ 592b4b8a-17e1-4bc9-a409-21efb068f99b
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 3c5ca682-a23a-43cc-a97a-a9f0a82790cd
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ dd3d447f-19fb-41e8-9a42-db2816b32488
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 47e39d31-294a-47b6-bccc-2aec9dd59d5d
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 93667527-0942-49dd-90e8-aa0eb50b2674
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ ab134618-cd1f-43cf-b8db-f15458b16662
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 4e46d172-9479-4695-970e-74de1ffa2011
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 592b4b8a-17e1-4bc9-a409-21efb068f99b
+
+
+
+
+ e1995a4f-7ee7-4a00-976e-f52fe8a2a6a8
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533870.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 3c5ca682-a23a-43cc-a97a-a9f0a82790cd
+
+
+
+
+ 80654453-7da7-43a9-854a-f021ec664ebd
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534070.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ dd3d447f-19fb-41e8-9a42-db2816b32488
+
+
+
+
+ 4dab7040-de38-4693-a20c-2b9342803b52
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 47e39d31-294a-47b6-bccc-2aec9dd59d5d
+
+
+
+
+ 1b4d6cd3-38f1-43ad-8820-0bd33b182b16
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533970.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 93667527-0942-49dd-90e8-aa0eb50b2674
+
+
+
+
+ c84c208f-6b73-4dd7-bdc6-8405d4d65b65
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4534070.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ ab134618-cd1f-43cf-b8db-f15458b16662
+
+
+
+
+ 66a8d5b3-129a-4f7d-998c-9d8df401155e
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 74b5b6f1-1404-441f-82ad-5ff3ecfcffff
+
+
+ 70,198
+
+
+
+
+ 10.000
+
+
+ 63bfc190-c7f8-4ae3-8477-44e73025a384
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60S1
+
+
+ S1
+
+
+ 60S1
+
+
+ 60S1
+
+
+ 60
+
+
+ S1
+
+
+
+
+ Mast
+
+
+
+ 66a8d5b3-129a-4f7d-998c-9d8df401155e
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ df822012-3bca-4a19-a15e-26dd0df476ec
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 74b5b6f1-1404-441f-82ad-5ff3ecfcffff
+
+
+ 70,198
+
+
+
+
+ 150.000
+
+
+ a0f53bbf-4301-4ae8-aea6-805d43453a96
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60S2
+
+
+ S2
+
+
+ 60S2
+
+
+ 60S2
+
+
+ 60
+
+
+ S2
+
+
+
+
+ Mast
+
+
+
+ df822012-3bca-4a19-a15e-26dd0df476ec
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 62bc17f4-c086-4122-a80f-9a1080778ac1
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 74b5b6f1-1404-441f-82ad-5ff3ecfcffff
+
+
+ 70,198
+
+
+
+
+ 150.000
+
+
+ df70feff-9207-4db2-9565-8d1d4a5d70f2
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60S3
+
+
+ S3
+
+
+ 60S3
+
+
+ 60S3
+
+
+ 60
+
+
+ S3
+
+
+
+
+ Mast
+
+
+
+ 62bc17f4-c086-4122-a80f-9a1080778ac1
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 19ac18ee-6a66-492a-a2ba-657bf5dc5d58
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 74b5b6f1-1404-441f-82ad-5ff3ecfcffff
+
+
+ 70,198
+
+
+
+
+ 10.000
+
+
+ f91d8d26-456e-4454-b613-641a8a46c0cd
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60S4
+
+
+ S4
+
+
+ 60S4
+
+
+ 60S4
+
+
+ 60
+
+
+ S4
+
+
+
+
+ Mast
+
+
+
+ 19ac18ee-6a66-492a-a2ba-657bf5dc5d58
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 66a8d5b3-129a-4f7d-998c-9d8df401155e
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ df822012-3bca-4a19-a15e-26dd0df476ec
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 62bc17f4-c086-4122-a80f-9a1080778ac1
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 19ac18ee-6a66-492a-a2ba-657bf5dc5d58
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 74b5b6f1-1404-441f-82ad-5ff3ecfcffff
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 0.000
+
+
+ 100.000
+
+
+ 63bfc190-c7f8-4ae3-8477-44e73025a384
+
+
+
+
+ 0.000
+
+
+ 200.000
+
+
+ a0f53bbf-4301-4ae8-aea6-805d43453a96
+
+
+
+
+ 0.000
+
+
+ 101.980
+
+
+ 5292f1d2-3c58-4aa4-8a6f-32688ef24965
+
+
+
+
+ 0.000
+
+
+ 200.000
+
+
+ df70feff-9207-4db2-9565-8d1d4a5d70f2
+
+
+
+
+ 0.000
+
+
+ 100.000
+
+
+ f91d8d26-456e-4454-b613-641a8a46c0cd
+
+
+
+
+ 6636
+
+
+
+
+
+ 63bfc190-c7f8-4ae3-8477-44e73025a384
+
+
+
+ 2012-02-24
+
+
+
+
+ 2ac9b54b-f070-45f6-93d2-d62a6469a923
+
+
+ 8d6e7fdc-bb40-414b-8dfc-b6c8714e1610
+
+
+
+ Ende
+
+
+ Spitze
+
+
+ 100.000
+
+
+
+
+
+ a0f53bbf-4301-4ae8-aea6-805d43453a96
+
+
+
+ 2012-02-24
+
+
+
+
+ 8d6e7fdc-bb40-414b-8dfc-b6c8714e1610
+
+
+ fc74af92-d44e-4c0d-9db6-ccb3910b43cc
+
+
+
+ Rechts
+
+
+ Ende
+
+
+ 200.000
+
+
+
+
+
+ 5292f1d2-3c58-4aa4-8a6f-32688ef24965
+
+
+
+ 2012-02-24
+
+
+
+
+ 8d6e7fdc-bb40-414b-8dfc-b6c8714e1610
+
+
+ cbb6429f-c653-4e65-adda-885e1a2f7488
+
+
+
+ Links
+
+
+ Links
+
+
+ 101.980
+
+
+
+
+
+ df70feff-9207-4db2-9565-8d1d4a5d70f2
+
+
+
+ 2012-02-24
+
+
+
+
+ 1cd20237-cf03-478b-b24a-b440cafa0e27
+
+
+ cbb6429f-c653-4e65-adda-885e1a2f7488
+
+
+
+ Ende
+
+
+ Rechts
+
+
+ 200.000
+
+
+
+
+
+ f91d8d26-456e-4454-b613-641a8a46c0cd
+
+
+
+ 2012-02-24
+
+
+
+
+ cbb6429f-c653-4e65-adda-885e1a2f7488
+
+
+ e0bcbd22-d9da-4851-8796-9a72d7b6c25a
+
+
+
+ Spitze
+
+
+ Ende
+
+
+ 100.000
+
+
+
+
+
+ 2ac9b54b-f070-45f6-93d2-d62a6469a923
+
+
+
+ 2012-02-24
+
+
+
+
+ 592b4b8a-17e1-4bc9-a409-21efb068f99b
+
+
+
+
+ 8d6e7fdc-bb40-414b-8dfc-b6c8714e1610
+
+
+
+ 2012-02-24
+
+
+
+
+ 3c5ca682-a23a-43cc-a97a-a9f0a82790cd
+
+
+
+
+ fc74af92-d44e-4c0d-9db6-ccb3910b43cc
+
+
+
+ 2012-02-24
+
+
+
+
+ dd3d447f-19fb-41e8-9a42-db2816b32488
+
+
+
+
+ 1cd20237-cf03-478b-b24a-b440cafa0e27
+
+
+
+ 2012-02-24
+
+
+
+
+ 47e39d31-294a-47b6-bccc-2aec9dd59d5d
+
+
+
+
+ cbb6429f-c653-4e65-adda-885e1a2f7488
+
+
+
+ 2012-02-24
+
+
+
+
+ 93667527-0942-49dd-90e8-aa0eb50b2674
+
+
+
+
+ e0bcbd22-d9da-4851-8796-9a72d7b6c25a
+
+
+
+ 2012-02-24
+
+
+
+
+ ab134618-cd1f-43cf-b8db-f15458b16662
+
+
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gebaeude
+
+
+ Fundament
+
+
+
+ 11314F34-1A1C-4EBB-9AB2-133C5F2A9167
+
+
+
+
+
+ sonstige
+
+
+
+
+
+
+ F05DAC3B-4E33-43D3-9A03-6055566FC3B7
+
+
+
+ AFFE2101-3E72-4D64-88F1-FFE1A69396AA
+
+
+ ABC
+
+
+
+ BE199B7D-A86C-4682-8E08-4B23DE2CF5A3
+
+
+ df541dce-93ae-434c-b883-466c66f070da
+
+
+
+ df541dce-93ae-434c-b883-466c66f070da
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ 2ac9b54b-f070-45f6-93d2-d62a6469a923
+
+
+ 592b4b8a-17e1-4bc9-a409-21efb068f99b
+
+
+ 8d6e7fdc-bb40-414b-8dfc-b6c8714e1610
+
+
+ 3c5ca682-a23a-43cc-a97a-a9f0a82790cd
+
+
+ fc74af92-d44e-4c0d-9db6-ccb3910b43cc
+
+
+ dd3d447f-19fb-41e8-9a42-db2816b32488
+
+
+ 1cd20237-cf03-478b-b24a-b440cafa0e27
+
+
+ 47e39d31-294a-47b6-bccc-2aec9dd59d5d
+
+
+ cbb6429f-c653-4e65-adda-885e1a2f7488
+
+
+ 93667527-0942-49dd-90e8-aa0eb50b2674
+
+
+ e0bcbd22-d9da-4851-8796-9a72d7b6c25a
+
+
+ ab134618-cd1f-43cf-b8db-f15458b16662
+
+
+ 63bfc190-c7f8-4ae3-8477-44e73025a384
+
+
+ f5e04907-a91d-4bde-a639-a9e0c702b973
+
+
+ a0f53bbf-4301-4ae8-aea6-805d43453a96
+
+
+ a6c9fddd-d071-4be4-8d9a-183f8308652b
+
+
+ 5292f1d2-3c58-4aa4-8a6f-32688ef24965
+
+
+ 732395b4-f822-40e3-ac5a-c6aae3048f05
+
+
+ df70feff-9207-4db2-9565-8d1d4a5d70f2
+
+
+ 9120e3a3-1fa6-4b60-b73d-5e1a679641da
+
+
+ f91d8d26-456e-4454-b613-641a8a46c0cd
+
+
+ 3cbb63e3-f2ae-402d-ac82-40523902e467
+
+
+ 66a8d5b3-129a-4f7d-998c-9d8df401155e
+
+
+ df822012-3bca-4a19-a15e-26dd0df476ec
+
+
+ 62bc17f4-c086-4122-a80f-9a1080778ac1
+
+
+ 19ac18ee-6a66-492a-a2ba-657bf5dc5d58
+
+
+ 74b5b6f1-1404-441f-82ad-5ff3ecfcffff
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ Ibn-Zustand
+
+
+ 2015-06-23
+
+
+ 2015-06-23
+
+
+ 01
+
+
+ false
+
+
+ 04
+
+
+ Bauzustand
+
+
+ PT_1
+
+
+
+
+ 12345-67890
+
+
+ 2019-07-31
+
+
+ sonstige
+
+
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D231E98146FF
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D23DE98246FF
+
+
+
+ Erlaeuterungsbericht
+
+
+ Erläuterungsbericht-Scheibenberg
+
+
+ pdf
+
+
+
+
+
+
+
+ 2015-11-03
+
+
+
+ 60024045-7D4E-4C59-98AC-088D437D4B7A
+
+
+
+ Boockmeyer
+
+
+ Boockmeyer
+
+
+ Boock
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+ Planer
+
+
+
+
+
+
+ 2016-12-31
+
+
+ 1.7.0.1
+
+
+ sonstige
+
+
+ DB Netze
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ 120,000
+
+
+ 8980
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ ESTW-UZ N-Stadt
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ ESTW-A Scheibenberg
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+
+ WGS84
+
+
+ 4541324.55 5647860.25 4533627.31 5629542.69 4530892.30 5615315.52 4530896.25 5615314.81 4535700.32 5625130.79 4541007.74 5647040.74
+
+
+
+
+ WGS84
+
+
+ 4534953.69 5631722.21 4535060.27 5631655.77 4534117.81 5629091.17 4534190.47 5629031.56 4534190.47 5626410.63 4534541.42 5626126.37 4534451.48 5625924.01 4533883.87 5626227.30 4533883.87 5625744.61 4533648.18 5624927.37 4533444.84 5624987.20 4533963.42 5627558.05 4533627.31 5629542.69 4533935.67 5628728.88 4533950.34 5629188.21
+
+
+
+
+
+ Neubau ESTW Scheibenberg
+
+
+ 2017-12-31
+
+
+ 1234ABCD5678EFGH
+
+
+
+ 3C590A15-5293-4AF6-A81D-1C4E82297602
+
+
+
+ Arne Boockmeyer
+
+
+ Arne Boock
+
+
+ Arne
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI.OSM
+
+
+
+
+
+
+
+
diff --git a/test/flank-protection-example5.ppxml b/test/flank-protection-example5.ppxml
new file mode 100644
index 0000000..7d3b9ea
--- /dev/null
+++ b/test/flank-protection-example5.ppxml
@@ -0,0 +1,1761 @@
+
+
+
+ a4d3f28d-311a-478f-a7b6-253d53737550
+
+
+
+ 2024-06-27T13:48:13.523426
+
+
+ Werkzeugkoffer
+
+
+ 48.3.0
+
+
+
+
+
+
+ bc6d7e77-33df-45ea-a4ca-e1fa278bb3c1
+
+
+
+ a8f265d2-2c55-4391-b57e-93d0980f0794
+
+
+
+
+
+ f634cd14-7bd3-46c6-b5e9-7784ca3cef2f
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+ 2012-02-24
+
+
+
+
+
+ ESTW_A
+
+
+
+
+ Notstromaggregat_NEA_stationaer
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ Scheibenberg
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ 9ebbcb13-96d0-4193-9d05-98b2fa6f7f94
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 80.000
+
+
+ 0.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+
+ 50
+
+
+ 2420de75-dfbc-40bf-a43a-d117c5bbe09e
+
+
+ 5750b7a0-70fa-4f5e-a11f-c72ba8e56c34
+
+
+
+
+ dda664be-1b21-4c0d-9a23-f46700076a4f
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 5.000
+
+
+ 0.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+
+
+ 0.000
+
+
+ 80.000
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+
+ 50
+
+
+ 5750b7a0-70fa-4f5e-a11f-c72ba8e56c34
+
+
+ ef839261-3dee-4dfd-9e90-f1223f1cdd27
+
+
+
+
+ 9e447824-e540-41f1-a30b-2b63526205e9
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 80.000
+
+
+ 0.000
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+
+ 50
+
+
+ 2c981a16-ea70-472c-9e14-18ca9ae9baef
+
+
+ fdad0945-e626-47ff-8026-25e049673f38
+
+
+
+
+ a2017907-0b0a-485f-b4aa-3cc663895c22
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 5.000
+
+
+ 0.000
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+
+
+ 0.000
+
+
+ 70.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+
+ 50
+
+
+ fdad0945-e626-47ff-8026-25e049673f38
+
+
+ edcc4d76-e965-4c1b-94c7-94027fd394ae
+
+
+
+
+ c1036943-1d71-4bd8-a8f6-afd27311b01d
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 6.980
+
+
+ 0.000
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+
+
+ 0.000
+
+
+ 70.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+
+ 50
+
+
+ 946354aa-a3c3-492e-a15e-382eb1fbda4f
+
+
+ edcc4d76-e965-4c1b-94c7-94027fd394ae
+
+
+
+
+ fe63e8bd-b1f2-48f2-bd79-0c1aeb89ca68
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 100.00000
+
+
+ Ivl
+
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+ 612edc9f-2081-4ac8-841a-535c65c6581b
+
+
+ 2c12cc8b-5f3b-40b4-a73a-1895d8404d81
+
+
+
+
+ c44ce53f-19d2-4c3c-a057-90bc36629c25
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 100.00000
+
+
+ Ivl
+
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+ 612edc9f-2081-4ac8-841a-535c65c6581b
+
+
+ a035a019-9754-43cb-a949-9e4040bc13eb
+
+
+
+
+ 4201d45f-d5fd-41cd-a6e4-8c59dd35e3b4
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gerade
+
+
+ 101.98039
+
+
+ Ivl
+
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+ 612edc9f-2081-4ac8-841a-535c65c6581b
+
+
+ ca29c664-82b5-49e4-af7b-5833d7394d18
+
+
+
+
+ 612edc9f-2081-4ac8-841a-535c65c6581b
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ 2c12cc8b-5f3b-40b4-a73a-1895d8404d81
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ a035a019-9754-43cb-a949-9e4040bc13eb
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ ca29c664-82b5-49e4-af7b-5833d7394d18
+
+
+
+ 2012-02-24
+
+
+
+
+
+
+ b6f06140-941f-46c1-a50a-73c4caea127e
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533770.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 612edc9f-2081-4ac8-841a-535c65c6581b
+
+
+
+
+ e16d56cd-6a5f-4f41-862e-0d6ae6b45235
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533670.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ 2c12cc8b-5f3b-40b4-a73a-1895d8404d81
+
+
+
+
+ 430665ef-5237-4d8d-bcd1-c8dc39df4a52
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533870.00000
+
+
+ 5625780.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ a035a019-9754-43cb-a949-9e4040bc13eb
+
+
+
+
+ 012158e3-9aee-41d8-a871-25ab42d16961
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 4533870.00000
+
+
+ 5625800.00000
+
+
+ Ivl
+
+
+ EA0
+
+
+
+ ca29c664-82b5-49e4-af7b-5833d7394d18
+
+
+
+
+ 2c981a16-ea70-472c-9e14-18ca9ae9baef
+
+
+
+ 2012-02-24
+
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 3,020
+
+
+
+
+ 80.000
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60BS1
+
+
+ BS1
+
+
+ 60BS1
+
+
+ 60BS1
+
+
+ 60
+
+
+ BS1
+
+
+
+
+ Mast
+
+
+
+ 2c981a16-ea70-472c-9e14-18ca9ae9baef
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ fdad0945-e626-47ff-8026-25e049673f38
+
+
+
+ 2012-02-24
+
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 3,020
+
+
+
+
+ 5.000
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60BS2
+
+
+ BS2
+
+
+ 60BS2
+
+
+ 60BS2
+
+
+ 60
+
+
+ BS2
+
+
+
+
+ Mast
+
+
+
+ fdad0945-e626-47ff-8026-25e049673f38
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ edcc4d76-e965-4c1b-94c7-94027fd394ae
+
+
+
+ 2012-02-24
+
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 3,020
+
+
+
+
+ 70.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60BS3
+
+
+ BS3
+
+
+ 60BS3
+
+
+ 60BS3
+
+
+ 60
+
+
+ BS3
+
+
+
+
+ Mast
+
+
+
+ edcc4d76-e965-4c1b-94c7-94027fd394ae
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 2420de75-dfbc-40bf-a43a-d117c5bbe09e
+
+
+
+ 2012-02-24
+
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 3,020
+
+
+
+
+ 80.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60BS4
+
+
+ BS4
+
+
+ 60BS4
+
+
+ 60BS4
+
+
+ 60
+
+
+ BS4
+
+
+
+
+ Mast
+
+
+
+ 2420de75-dfbc-40bf-a43a-d117c5bbe09e
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 5750b7a0-70fa-4f5e-a11f-c72ba8e56c34
+
+
+
+ 2012-02-24
+
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 3,020
+
+
+
+
+ 5.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60BS5
+
+
+ BS5
+
+
+ 60BS5
+
+
+ 60BS5
+
+
+ 60
+
+
+ BS5
+
+
+
+
+ Mast
+
+
+
+ 5750b7a0-70fa-4f5e-a11f-c72ba8e56c34
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ ef839261-3dee-4dfd-9e90-f1223f1cdd27
+
+
+
+ 2012-02-24
+
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 3,020
+
+
+
+
+ 80.000
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+ in
+
+
+ 3.950
+
+
+
+
+ 60BS6
+
+
+ BS6
+
+
+ 60BS6
+
+
+ 60BS6
+
+
+ 60
+
+
+ BS6
+
+
+
+
+ Mast
+
+
+
+ ef839261-3dee-4dfd-9e90-f1223f1cdd27
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 946354aa-a3c3-492e-a15e-382eb1fbda4f
+
+
+
+ 2012-02-24
+
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 3,020
+
+
+
+
+ 6.980
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+ gegen
+
+
+ -3.950
+
+
+
+
+ 60BS7
+
+
+ BS7
+
+
+ 60BS7
+
+
+ 60BS7
+
+
+ 60
+
+
+ BS7
+
+
+
+
+ Mast
+
+
+
+ 946354aa-a3c3-492e-a15e-382eb1fbda4f
+
+
+ Block_Signal
+
+
+
+
+ false
+
+
+ 150
+
+
+ Hauptsignal
+
+
+ Ks
+
+
+ HG
+
+
+ HG4
+
+
+
+
+
+
+ 2c981a16-ea70-472c-9e14-18ca9ae9baef
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ fdad0945-e626-47ff-8026-25e049673f38
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ edcc4d76-e965-4c1b-94c7-94027fd394ae
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 2420de75-dfbc-40bf-a43a-d117c5bbe09e
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 5750b7a0-70fa-4f5e-a11f-c72ba8e56c34
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ ef839261-3dee-4dfd-9e90-f1223f1cdd27
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ 946354aa-a3c3-492e-a15e-382eb1fbda4f
+
+
+
+ 2012-02-24
+
+
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+
+ 2012-02-24
+
+
+
+
+
+ 0.000
+
+
+ 100.000
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+
+
+ 0.000
+
+
+ 100.000
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+
+
+ 0.000
+
+
+ 101.980
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+
+
+ 2278
+
+
+
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+
+ 2012-02-24
+
+
+
+
+ 111acbd0-c11d-4149-a1b1-ff0521865406
+
+
+ ab093927-72d4-4d70-97b9-65a7eba4ac16
+
+
+
+ Spitze
+
+
+ Ende
+
+
+ 100.000
+
+
+
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+
+ 2012-02-24
+
+
+
+
+ 111acbd0-c11d-4149-a1b1-ff0521865406
+
+
+ a0ba9382-2a9d-45e6-9eba-5fbc2f8eb3ca
+
+
+
+ Rechts
+
+
+ Ende
+
+
+ 100.000
+
+
+
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+
+ 2012-02-24
+
+
+
+
+ 111acbd0-c11d-4149-a1b1-ff0521865406
+
+
+ 67424f9b-dcef-4270-9d65-def74c1b43c7
+
+
+
+ Links
+
+
+ Ende
+
+
+ 101.980
+
+
+
+
+
+ 111acbd0-c11d-4149-a1b1-ff0521865406
+
+
+
+ 2012-02-24
+
+
+
+
+ 612edc9f-2081-4ac8-841a-535c65c6581b
+
+
+
+
+ ab093927-72d4-4d70-97b9-65a7eba4ac16
+
+
+
+ 2012-02-24
+
+
+
+
+ 2c12cc8b-5f3b-40b4-a73a-1895d8404d81
+
+
+
+
+ a0ba9382-2a9d-45e6-9eba-5fbc2f8eb3ca
+
+
+
+ 2012-02-24
+
+
+
+
+ a035a019-9754-43cb-a949-9e4040bc13eb
+
+
+
+
+ 67424f9b-dcef-4270-9d65-def74c1b43c7
+
+
+
+ 2012-02-24
+
+
+
+
+ ca29c664-82b5-49e4-af7b-5833d7394d18
+
+
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+ 2012-02-24
+
+
+
+
+
+ Gebaeude
+
+
+ Fundament
+
+
+
+ 11314F34-1A1C-4EBB-9AB2-133C5F2A9167
+
+
+
+
+
+ sonstige
+
+
+
+
+
+
+ F05DAC3B-4E33-43D3-9A03-6055566FC3B7
+
+
+
+ AFFE2101-3E72-4D64-88F1-FFE1A69396AA
+
+
+ ABC
+
+
+
+ BE199B7D-A86C-4682-8E08-4B23DE2CF5A3
+
+
+ bc6d7e77-33df-45ea-a4ca-e1fa278bb3c1
+
+
+
+ bc6d7e77-33df-45ea-a4ca-e1fa278bb3c1
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ 111acbd0-c11d-4149-a1b1-ff0521865406
+
+
+ 612edc9f-2081-4ac8-841a-535c65c6581b
+
+
+ ab093927-72d4-4d70-97b9-65a7eba4ac16
+
+
+ 2c12cc8b-5f3b-40b4-a73a-1895d8404d81
+
+
+ a0ba9382-2a9d-45e6-9eba-5fbc2f8eb3ca
+
+
+ a035a019-9754-43cb-a949-9e4040bc13eb
+
+
+ 67424f9b-dcef-4270-9d65-def74c1b43c7
+
+
+ ca29c664-82b5-49e4-af7b-5833d7394d18
+
+
+ 339c52cf-8ba1-42d7-b532-63f8ff63d363
+
+
+ fe63e8bd-b1f2-48f2-bd79-0c1aeb89ca68
+
+
+ 5e149f18-d6c8-4251-ae8c-8242313b2ad2
+
+
+ c44ce53f-19d2-4c3c-a057-90bc36629c25
+
+
+ fc55d1d4-1194-4b37-bf92-1a822bf32987
+
+
+ 4201d45f-d5fd-41cd-a6e4-8c59dd35e3b4
+
+
+ 2c981a16-ea70-472c-9e14-18ca9ae9baef
+
+
+ fdad0945-e626-47ff-8026-25e049673f38
+
+
+ edcc4d76-e965-4c1b-94c7-94027fd394ae
+
+
+ 2420de75-dfbc-40bf-a43a-d117c5bbe09e
+
+
+ 5750b7a0-70fa-4f5e-a11f-c72ba8e56c34
+
+
+ ef839261-3dee-4dfd-9e90-f1223f1cdd27
+
+
+ 946354aa-a3c3-492e-a15e-382eb1fbda4f
+
+
+ d91bdfa5-c33f-4c98-a6c3-a03ec7ba0d54
+
+
+ 9ebbcb13-96d0-4193-9d05-98b2fa6f7f94
+
+
+ dda664be-1b21-4c0d-9a23-f46700076a4f
+
+
+ 9e447824-e540-41f1-a30b-2b63526205e9
+
+
+ a2017907-0b0a-485f-b4aa-3cc663895c22
+
+
+ c1036943-1d71-4bd8-a8f6-afd27311b01d
+
+
+ C35FDB88-889E-539E-A68B-6079265F70D9
+
+
+ F4CE3AF8-13B1-4E12-BB4D-982BEA37466E
+
+
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ Ibn-Zustand
+
+
+ 2015-06-23
+
+
+ 2015-06-23
+
+
+ 01
+
+
+ false
+
+
+ 04
+
+
+ Bauzustand
+
+
+ PT_1
+
+
+
+
+ 12345-67890
+
+
+ 2019-07-31
+
+
+ sonstige
+
+
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D231E98146FF
+
+
+
+ 1A3E6734-9E68-40FC-8C3F-D23DE98246FF
+
+
+
+ Erlaeuterungsbericht
+
+
+ Erläuterungsbericht-Scheibenberg
+
+
+ pdf
+
+
+
+
+
+
+
+ 2015-11-03
+
+
+
+ 60024045-7D4E-4C59-98AC-088D437D4B7A
+
+
+
+ Boockmeyer
+
+
+ Boockmeyer
+
+
+ Boock
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+ Planer
+
+
+
+
+
+
+ 2016-12-31
+
+
+ 1.7.0.1
+
+
+ sonstige
+
+
+ DB Netze
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ 120,000
+
+
+ 8980
+
+
+
+
+ Annaberg-Buchholz - Schwarzenberg
+
+
+ ESTW-UZ N-Stadt
+
+
+ Neubau ESTW-A Scheibenberg
+
+
+ ESTW-A Scheibenberg
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ HPI-OSM
+
+
+
+
+
+ WGS84
+
+
+ 4541324.55 5647860.25 4533627.31 5629542.69 4530892.30 5615315.52 4530896.25 5615314.81 4535700.32 5625130.79 4541007.74 5647040.74
+
+
+
+
+ WGS84
+
+
+ 4534953.69 5631722.21 4535060.27 5631655.77 4534117.81 5629091.17 4534190.47 5629031.56 4534190.47 5626410.63 4534541.42 5626126.37 4534451.48 5625924.01 4533883.87 5626227.30 4533883.87 5625744.61 4533648.18 5624927.37 4533444.84 5624987.20 4533963.42 5627558.05 4533627.31 5629542.69 4533935.67 5628728.88 4533950.34 5629188.21
+
+
+
+
+
+ Neubau ESTW Scheibenberg
+
+
+ 2017-12-31
+
+
+ 1234ABCD5678EFGH
+
+
+
+ 3C590A15-5293-4AF6-A81D-1C4E82297602
+
+
+
+ Arne Boockmeyer
+
+
+ Arne Boock
+
+
+ Arne
+
+
+
+
+ 55555555-5555-5555-5555-555555555555
+
+
+ OSM@HPI
+
+
+
+
+
+
+
+
diff --git a/test/flank-protection_test.py b/test/flank-protection_test.py
new file mode 100644
index 0000000..a38ddc4
--- /dev/null
+++ b/test/flank-protection_test.py
@@ -0,0 +1,161 @@
+# Example 1: Halt zeigendes Signal
+# Example 2: Schutzweiche
+# Example 3: Schutztransportweiche mit Schutzweiche und halt zeigendem Signal
+# Example 4: Two routes, that do not conflict, but each point is also flank protection of the other route
+# Example 5: Prevent overlap in flank protection area and flank protection for overlaps
+
+from .helper import topologyhelper, interlockinghelper
+from interlocking.interlockinginterface import Interlocking
+from interlocking.infrastructureprovider import LoggingInfrastructureProvider, InfrastructureProvider
+from interlocking.model import OccupancyState
+from interlocking.model.helper import Settings
+import asyncio
+import logging
+
+
+class TrackOperationsInfrastructureProvider(InfrastructureProvider):
+ def __init__(self):
+ super().__init__()
+ self.point_operations = set()
+ self.signal_operations = set()
+
+ async def set_signal_aspect(self, yaramo_signal, target_aspect):
+ self.signal_operations.add((yaramo_signal, target_aspect))
+ return True
+
+ async def turn_point(self, yaramo_point, target_orientation: str):
+ self.point_operations.add((yaramo_point, target_orientation))
+ return True
+
+ def was_signal_set_to_aspect(self, yaramo_signal, aspect):
+ for signal_operation in self.signal_operations:
+ if signal_operation[0].name == yaramo_signal.name and signal_operation[1] == aspect:
+ return True
+ return False
+
+
+def test_example_1():
+ topology = topologyhelper.get_topology_from_planpro_file("./flank-protection-example1.ppxml")
+ track_operations_ip = TrackOperationsInfrastructureProvider()
+ infrastructure_provider = [LoggingInfrastructureProvider(), track_operations_ip]
+
+ interlocking = Interlocking(infrastructure_provider, Settings(max_number_of_points_at_same_time=3))
+ interlocking.prepare(topology)
+ route = topologyhelper.get_route_by_signal_names(topology, "99N1", "99N2")
+ asyncio.run(interlockinghelper.set_route(interlocking, route, True, "RB101"))
+ interlocking.print_state()
+
+ # Test point is in correct position
+ point_id = "fe8ed" # point on the route between 99N1 and 99N2
+ point = interlocking.point_controller.points[point_id]
+ assert "RB101" in point.used_by
+ assert point.orientation == "left"
+ assert point.state == OccupancyState.RESERVED
+
+ flank_protection_signal = interlockinghelper.get_interlocking_signal_by_name(interlocking, "99N3")
+ assert flank_protection_signal.signal_aspect == "halt"
+ assert track_operations_ip.was_signal_set_to_aspect(flank_protection_signal.yaramo_signal, "halt")
+ assert flank_protection_signal.is_used_for_flank_protection
+
+
+def test_example_2():
+ topology = topologyhelper.get_topology_from_planpro_file("./flank-protection-example2.ppxml")
+ track_operations_ip = TrackOperationsInfrastructureProvider()
+ infrastructure_provider = [LoggingInfrastructureProvider(), track_operations_ip]
+
+ interlocking = Interlocking(infrastructure_provider, Settings(max_number_of_points_at_same_time=3))
+ interlocking.prepare(topology)
+ route = topologyhelper.get_route_by_signal_names(topology, "60E1", "60A1")
+ asyncio.run(interlockinghelper.set_route(interlocking, route, True, "RB101"))
+ interlocking.print_state()
+
+ # Test point is in correct position
+ point_id = "7a7f9" # point on the route between 60BS2 and 60BS3
+ point = interlocking.point_controller.points[point_id]
+ assert "RB101" in point.used_by
+ assert point.orientation == "left"
+ assert point.state == OccupancyState.RESERVED
+
+ flank_protection_point_id = "aed72"
+ flank_protection_point = interlocking.point_controller.points[flank_protection_point_id]
+ assert flank_protection_point.orientation == "left"
+ assert flank_protection_point.is_used_for_flank_protection
+
+
+def test_example_3():
+ topology = topologyhelper.get_topology_from_planpro_file("./flank-protection-example3.ppxml")
+ track_operations_ip = TrackOperationsInfrastructureProvider()
+ infrastructure_provider = [LoggingInfrastructureProvider(), track_operations_ip]
+
+ interlocking = Interlocking(infrastructure_provider, Settings(max_number_of_points_at_same_time=3))
+ interlocking.prepare(topology)
+ route = topologyhelper.get_route_by_signal_names(topology, "60E1", "60A1")
+ asyncio.run(interlockinghelper.set_route(interlocking, route, True, "RB101"))
+ interlocking.print_state()
+
+ # Test point is in correct position
+ point_id = "e40a7" # point on the route between 60N1 and 60N2
+ point = interlocking.point_controller.points[point_id]
+ assert "RB101" in point.used_by
+ assert point.orientation == "right"
+ assert point.state == OccupancyState.RESERVED
+
+ flank_protection_transport_point_id = "8fc1f" # n3
+ flank_protection_transport_point = interlocking.point_controller.points[flank_protection_transport_point_id]
+ assert flank_protection_transport_point.is_used_for_flank_protection
+
+ flank_protection_point_id = "da301" # n6
+ flank_protection_point = interlocking.point_controller.points[flank_protection_point_id]
+ assert point.orientation == "right"
+ assert flank_protection_point.is_used_for_flank_protection
+
+ flank_protection_signal = interlockinghelper.get_interlocking_signal_by_name(interlocking, "60E2")
+ assert flank_protection_signal.signal_aspect == "halt"
+ assert track_operations_ip.was_signal_set_to_aspect(flank_protection_signal.yaramo_signal, "halt")
+ assert flank_protection_signal.is_used_for_flank_protection
+
+
+def test_example_4():
+ topology = topologyhelper.get_topology_from_planpro_file("./flank-protection-example4.ppxml")
+ track_operations_ip = TrackOperationsInfrastructureProvider()
+ infrastructure_provider = [LoggingInfrastructureProvider(), track_operations_ip]
+
+ interlocking = Interlocking(infrastructure_provider, Settings(max_number_of_points_at_same_time=3))
+ interlocking.prepare(topology)
+ route = topologyhelper.get_route_by_signal_names(topology, "60S1", "60S2")
+ asyncio.run(interlockinghelper.set_route(interlocking, route, True, "RB101"))
+ interlocking.print_state()
+ route = topologyhelper.get_route_by_signal_names(topology, "60S4", "60S3")
+ asyncio.run(interlockinghelper.set_route(interlocking, route, True, "RB102"))
+ interlocking.print_state()
+
+
+def test_flank_protection_for_overlap():
+ topology = topologyhelper.get_topology_from_planpro_file("./flank-protection-example5.ppxml")
+ track_operations_ip = TrackOperationsInfrastructureProvider()
+ infrastructure_provider = [LoggingInfrastructureProvider(), track_operations_ip]
+
+ interlocking = Interlocking(infrastructure_provider, Settings(max_number_of_points_at_same_time=3))
+ interlocking.prepare(topology)
+
+ route = topologyhelper.get_route_by_signal_names(topology, "60BS4", "60BS5")
+ asyncio.run(interlockinghelper.set_route(interlocking, route, True, "RB101"))
+
+ interlocking.print_state()
+ signal_bs2 = interlockinghelper.get_interlocking_signal_by_name(interlocking, "60BS2")
+ signal_bs7 = interlockinghelper.get_interlocking_signal_by_name(interlocking, "60BS7")
+ segment_towards_bs2 = interlockinghelper.get_interlocking_track_by_id(interlocking, "b2ad2-0")
+ segment_towards_bs7 = interlockinghelper.get_interlocking_track_by_id(interlocking, "32987-0")
+ assert ((signal_bs2.is_used_for_flank_protection and segment_towards_bs7.state == OccupancyState.RESERVED_OVERLAP)
+ or
+ (signal_bs7.is_used_for_flank_protection and segment_towards_bs2.state == OccupancyState.RESERVED_OVERLAP))
+
+
+if __name__ == "__main__":
+ logging.basicConfig(level=logging.DEBUG)
+ test_example_1()
+ test_example_2()
+ test_example_3()
+ test_example_4()
+ test_flank_protection_for_overlap()
+
diff --git a/test/helper/interlockinghelper.py b/test/helper/interlockinghelper.py
index 81de0f4..175f593 100644
--- a/test/helper/interlockinghelper.py
+++ b/test/helper/interlockinghelper.py
@@ -36,6 +36,14 @@ def get_interlocking_point_by_id(interlocking: Interlocking, point_id: str):
if _point_id == point_id:
return interlocking.point_controller.points[point_id]
+def get_interlocking_track_by_id(interlocking: Interlocking, segment_id: str):
+ for track_id in interlocking.track_controller.tracks:
+ track: Track = interlocking.track_controller.tracks[track_id]
+ for _segment in track.segments:
+ if _segment.segment_id == segment_id:
+ return _segment
+ return None
+
def test_point(interlocking: Interlocking, point_id: str, train_id: str, orientation: str, state: OccupancyState):
point = interlocking.point_controller.points[point_id]
@@ -47,22 +55,22 @@ def test_point(interlocking: Interlocking, point_id: str, train_id: str, orienta
assert point.orientation == orientation
-def test_signal(interlocking: Interlocking, signal_id: str, state: str):
+def test_signal(interlocking: Interlocking, signal_id: str, train_id: str, signal_aspect: str, state: OccupancyState):
signal: Signal or None = None
for _signal in interlocking.signal_controller.signals.values():
if _signal.yaramo_signal.name == signal_id:
signal = _signal
assert signal.state == state
+ assert signal.signal_aspect == signal_aspect
+ if state == OccupancyState.FREE:
+ assert train_id not in signal.used_by
+ else:
+ assert train_id in signal.used_by
def test_track(interlocking: Interlocking, segment_id: str, train_id: str, state: OccupancyState):
- segment: TrackSegment | None = None
- for track_id in interlocking.track_controller.tracks:
- track: Track = interlocking.track_controller.tracks[track_id]
- for _segment in track.segments:
- if _segment.segment_id == segment_id:
- segment = _segment
- break
+ segment: TrackSegment | None = get_interlocking_track_by_id(interlocking, segment_id)
+ assert segment is not None
assert segment.state == state
if state == OccupancyState.FREE:
assert train_id not in segment.used_by
diff --git a/test/helper/topologyhelper.py b/test/helper/topologyhelper.py
index 0094043..18f1bfd 100644
--- a/test/helper/topologyhelper.py
+++ b/test/helper/topologyhelper.py
@@ -1,6 +1,6 @@
from planpro_importer.reader import PlanProReader
from railwayroutegenerator.routegenerator import RouteGenerator
-from yaramo.model import Topology, Signal, Node
+from yaramo.model import Topology, Route, Signal, Node
def get_topology_from_planpro_file(file_name: str):
@@ -41,4 +41,4 @@ def get_point_by_name(topology: Topology, point_name: str) -> Node | None:
for point in list(topology.nodes.values()):
if point.uuid[-5:] == point_name:
return point
- return None
+ return None
\ No newline at end of file
diff --git a/test/helper/trackoperationsinfrastructureprovider.py b/test/helper/trackoperationsinfrastructureprovider.py
index 760adb0..e6b6270 100644
--- a/test/helper/trackoperationsinfrastructureprovider.py
+++ b/test/helper/trackoperationsinfrastructureprovider.py
@@ -8,8 +8,8 @@ def __init__(self, **kwargs):
self.point_operations: set[tuple[Node, str]] = set()
self.signal_operations: set[tuple[Signal, str]] = set()
- async def set_signal_state(self, yaramo_signal: Signal, target_aspect: str):
- await super().set_signal_state(yaramo_signal, target_aspect)
+ async def set_signal_aspect(self, yaramo_signal: Signal, target_aspect: str):
+ await super().set_signal_aspect(yaramo_signal, target_aspect)
self.signal_operations.add((yaramo_signal, target_aspect))
return True
diff --git a/test/interlocking-monitor_test.py b/test/interlocking-monitor_test.py
index 375e22a..e7e3279 100644
--- a/test/interlocking-monitor_test.py
+++ b/test/interlocking-monitor_test.py
@@ -25,17 +25,23 @@ def test_free_route():
interlocking = Interlocking(LoggingInfrastructureProvider(), interlocking_logic_monitor=ilm)
interlocking.prepare(topology)
- some_route = list(topology.routes.values())[0]
- assert not ilm.route_results[some_route.uuid].was_set
- assert not ilm.route_results[some_route.uuid].was_freed
- assert ilm.route_results[some_route.uuid].get_coverage() == 0.0
-
- asyncio.run(interlocking.set_route(some_route, "RB101"))
- assert ilm.route_results[some_route.uuid].was_set
- assert ilm.route_results[some_route.uuid].get_coverage() == 1/3
- interlocking.free_route(some_route, "RB101")
- assert ilm.route_results[some_route.uuid].was_freed
- assert ilm.route_results[some_route.uuid].get_coverage() == 2/3
+ route_bs5_bs6 = topologyhelper.get_route_by_signal_names(topology, "60BS5", "60BS6")
+ assert not ilm.route_results[route_bs5_bs6.uuid].was_set
+ assert not ilm.route_results[route_bs5_bs6.uuid].was_freed
+ assert ilm.route_results[route_bs5_bs6.uuid].get_coverage() == 0.0
+
+ asyncio.run(interlocking.set_route(route_bs5_bs6, "RB101"))
+ assert ilm.route_results[route_bs5_bs6.uuid].was_set
+ assert ilm.route_results[route_bs5_bs6.uuid].get_coverage() == 1/3
+
+ # Drive Route
+ ip = interlocking.infrastructure_providers[0]
+ asyncio.run(ip.tds_count_in("b8e69-2", "RB101"))
+ asyncio.run(ip.tds_count_out("b8e69-2", "RB101"))
+
+ interlocking.free_route(route_bs5_bs6, "RB101")
+ assert ilm.route_results[route_bs5_bs6.uuid].was_freed
+ assert ilm.route_results[route_bs5_bs6.uuid].get_coverage() == 2/3
def test_reset_route():
diff --git a/test/interlocking_test.py b/test/interlocking_test.py
index 8e03d68..0ebf59f 100644
--- a/test/interlocking_test.py
+++ b/test/interlocking_test.py
@@ -11,17 +11,20 @@ def test_reset():
interlocking = interlockinghelper.get_interlocking(topology)
route_1 = topologyhelper.get_route_by_signal_names(topology, "60BS1", "60BS2")
asyncio.run(interlockinghelper.set_route(interlocking, route_1, True, "RB101"))
+
+ interlocking.print_state()
route_2 = topologyhelper.get_route_by_signal_names(topology, "60ES2", "60AS3")
+ route_2.maximum_speed = 30 # Remove overlap from this route through the station
asyncio.run(interlockinghelper.set_route(interlocking, route_2, True, "RB102"))
interlockinghelper.test_track(interlocking, "94742-0", "RB101", OccupancyState.RESERVED)
interlockinghelper.test_track(interlocking, "b8e69-3", "RB101", OccupancyState.RESERVED_OVERLAP)
interlockinghelper.test_track(interlocking, "a8f44-0", "RB101", OccupancyState.FREE)
- interlockinghelper.test_signal(interlocking, "60BS1", "go")
+ interlockinghelper.test_signal(interlocking, "60BS1", "RB101", "go", OccupancyState.RESERVED)
interlockinghelper.test_point(interlocking, "d43f9", "RB101", "left", OccupancyState.RESERVED)
interlockinghelper.test_track(interlocking, "3a70a-0", "RB102", OccupancyState.RESERVED)
- interlockinghelper.test_signal(interlocking, "60ES2", "go")
+ interlockinghelper.test_signal(interlocking, "60ES2", "RB102", "go", OccupancyState.RESERVED)
interlockinghelper.test_point(interlocking, "fd73d", "RB102", "right", OccupancyState.RESERVED)
assert len(interlocking.active_routes) == 2
@@ -31,11 +34,11 @@ def test_reset():
interlockinghelper.test_track(interlocking, "94742-0", "RB101", OccupancyState.FREE)
interlockinghelper.test_track(interlocking, "b8e69-3", "RB101", OccupancyState.FREE)
interlockinghelper.test_track(interlocking, "a8f44-0", "RB101", OccupancyState.FREE)
- interlockinghelper.test_signal(interlocking, "60BS1", "halt")
+ interlockinghelper.test_signal(interlocking, "60BS1", "RB101", "halt", OccupancyState.FREE)
interlockinghelper.test_point(interlocking, "d43f9", "RB101", "undefined", OccupancyState.FREE)
interlockinghelper.test_track(interlocking, "3a70a-0", "RB102", OccupancyState.FREE)
- interlockinghelper.test_signal(interlocking, "60ES2", "halt")
+ interlockinghelper.test_signal(interlocking, "60ES2", "RB102", "halt", OccupancyState.FREE)
interlockinghelper.test_point(interlocking, "fd73d", "RB102", "undefined", OccupancyState.FREE)
assert len(interlocking.active_routes) == 0
@@ -64,7 +67,7 @@ def test_driving():
interlockinghelper.test_track(interlocking, "b8e69-2", "RB101", OccupancyState.RESERVED_OVERLAP)
interlockinghelper.test_track(interlocking, "b8e69-3", "RB101", OccupancyState.RESERVED_OVERLAP)
interlockinghelper.test_track(interlocking, "a8f44-0", "RB101", OccupancyState.FREE)
- interlockinghelper.test_signal(interlocking, "60BS1", "go")
+ interlockinghelper.test_signal(interlocking, "60BS1", "RB101", "go", OccupancyState.RESERVED)
route_2 = topologyhelper.get_route_by_signal_names(topology, "60BS2", "60BS3")
asyncio.run(interlockinghelper.set_route(interlocking, route_2, True, "RB101"))
@@ -77,7 +80,7 @@ def test_driving():
# "Drive" some train
ip = interlocking.infrastructure_providers[0]
asyncio.run(ip.tds_count_in("de139-1", "RB101"))
- interlockinghelper.test_signal(interlocking, "60BS1", "halt")
+ interlockinghelper.test_signal(interlocking, "60BS1", "RB101", "halt", OccupancyState.RESERVED)
asyncio.run(ip.tds_count_in("de139-2", "RB101"))
asyncio.run(ip.tds_count_out("de139-1", "RB101"))
asyncio.run(ip.tds_count_in("94742-0", "RB101"))
@@ -99,6 +102,16 @@ def test_driving():
asyncio.run(ip.tds_count_out("a8f44-0", "RB101"))
interlockinghelper.free_route(interlocking, route_2, "RB101")
+ # Verify flank protection cleanup
+ signal_as1 = interlockinghelper.get_interlocking_signal_by_name(interlocking, "60AS1")
+ assert not signal_as1.is_used_for_flank_protection
+ signal_as4 = interlockinghelper.get_interlocking_signal_by_name(interlocking, "60AS1")
+ assert not signal_as4.is_used_for_flank_protection
+ point_fa9 = interlockinghelper.get_interlocking_point_by_id(interlocking, "fa9ea")
+ assert not point_fa9.is_used_for_flank_protection
+ point_21b = interlockinghelper.get_interlocking_point_by_id(interlocking, "21b88")
+ assert not point_21b.is_used_for_flank_protection
+
def test_reset_route():
topology = topologyhelper.get_topology_from_planpro_file("./complex-example.ppxml")
@@ -110,7 +123,7 @@ def test_reset_route():
interlockinghelper.test_track(interlocking, "94742-0", "RB101", OccupancyState.RESERVED)
interlockinghelper.test_track(interlocking, "b8e69-3", "RB101", OccupancyState.RESERVED_OVERLAP)
interlockinghelper.test_track(interlocking, "a8f44-0", "RB101", OccupancyState.FREE)
- interlockinghelper.test_signal(interlocking, "60BS1", "go")
+ interlockinghelper.test_signal(interlocking, "60BS1", "RB101", "go", OccupancyState.RESERVED)
interlockinghelper.test_point(interlocking, "d43f9", "RB101", "left", OccupancyState.RESERVED)
asyncio.run(interlocking.reset_route(route_1, "RB101"))
@@ -118,7 +131,7 @@ def test_reset_route():
interlockinghelper.test_track(interlocking, "94742-0", "RB101", OccupancyState.FREE)
interlockinghelper.test_track(interlocking, "b8e69-3", "RB101", OccupancyState.FREE)
interlockinghelper.test_track(interlocking, "a8f44-0", "RB101", OccupancyState.FREE)
- interlockinghelper.test_signal(interlocking, "60BS1", "halt")
+ interlockinghelper.test_signal(interlocking, "60BS1", "RB101", "halt", OccupancyState.FREE)
interlockinghelper.test_point(interlocking, "d43f9", "RB101", "left", OccupancyState.FREE)
@@ -256,6 +269,21 @@ def test_consecutive_routes():
route_3 = topologyhelper.get_route_by_signal_names(topology, "60AS1", "60BS3")
asyncio.run(interlockinghelper.set_route(interlocking, route_3, True, "RB101"))
+ asyncio.run(interlocking.reset())
+
+ # Increase speed to add overlap
+ for route in interlocking.routes:
+ route.yaramo_route.maximum_speed = 50
+
+ # Test three in a row consecutive routes, everything fine
+ route_1 = topologyhelper.get_route_by_signal_names(topology, "60BS1", "60ES1")
+ asyncio.run(interlockinghelper.set_route(interlocking, route_1, True, "RB101"))
+ route_2 = topologyhelper.get_route_by_signal_names(topology, "60ES1", "60AS2")
+ asyncio.run(interlockinghelper.set_route(interlocking, route_2, True, "RB101"))
+ route_3 = topologyhelper.get_route_by_signal_names(topology, "60AS2", "60BS3")
+ asyncio.run(interlockinghelper.set_route(interlocking, route_3, True, "RB101"))
+
+
class TestConsecutiveRouteDetectionWithTwoLastTracks(unittest.TestCase):
diff --git a/test/random-wait-infrastructure-provider_test.py b/test/random-wait-infrastructure-provider_test.py
index 3cda5ce..7040de6 100644
--- a/test/random-wait-infrastructure-provider_test.py
+++ b/test/random-wait-infrastructure-provider_test.py
@@ -21,11 +21,11 @@ def test_fail_probability():
assert asyncio.run(rwip.turn_point(point, "left"))
assert asyncio.run(rwip.turn_point(point, "left"))
- assert asyncio.run(rwip.set_signal_state(signal, "go"))
- assert asyncio.run(rwip.set_signal_state(signal, "go"))
- assert asyncio.run(rwip.set_signal_state(signal, "go"))
- assert asyncio.run(rwip.set_signal_state(signal, "go"))
- assert asyncio.run(rwip.set_signal_state(signal, "go"))
+ assert asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert asyncio.run(rwip.set_signal_aspect(signal, "go"))
# No random factor, always fail
rwip = RandomWaitInfrastructureProvider(fail_probability=1.0, signal_time_range=signal_tr,
@@ -37,11 +37,11 @@ def test_fail_probability():
assert not asyncio.run(rwip.turn_point(point, "left"))
assert not asyncio.run(rwip.turn_point(point, "left"))
- assert not asyncio.run(rwip.set_signal_state(signal, "go"))
- assert not asyncio.run(rwip.set_signal_state(signal, "go"))
- assert not asyncio.run(rwip.set_signal_state(signal, "go"))
- assert not asyncio.run(rwip.set_signal_state(signal, "go"))
- assert not asyncio.run(rwip.set_signal_state(signal, "go"))
+ assert not asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert not asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert not asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert not asyncio.run(rwip.set_signal_aspect(signal, "go"))
+ assert not asyncio.run(rwip.set_signal_aspect(signal, "go"))
rwip = RandomWaitInfrastructureProvider(fail_probability=0.5, signal_time_range=signal_tr,
point_turn_time_range=point_tr)