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)