From 9331e89d153b04ff2d9517ee9beea197375c6797 Mon Sep 17 00:00:00 2001 From: Richard Brice <37087370+RickBrice@users.noreply.github.com> Date: Mon, 25 Aug 2025 16:05:47 -0700 Subject: [PATCH 01/39] Alignments can now be created with or without geometric representations --- .../api/alignment/_add_segment_to_layout.py | 247 +++++++++--------- .../api/alignment/_add_zero_length_segment.py | 10 +- .../ifcopenshell/api/alignment/create.py | 41 +-- .../api/alignment/create_layout_segment.py | 48 ++-- .../api/alignment/get_alignment_station.py | 3 +- .../api/alignment/test_create_no_geometry.py | 68 +++++ 6 files changed, 248 insertions(+), 169 deletions(-) create mode 100644 src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py index 1d798ec89e..cd0d89e234 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py @@ -60,132 +60,92 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg # swap the last two segments ifcopenshell.api.nest.reorder_nesting(file, segment, -1, -1) - # add the new segment to the geometric representation curve - _add_segment_to_curve(file, segment, curve) + if curve: + # add the new segment to the geometric representation curve + _add_segment_to_curve(file, segment, curve) - # gather information to: - # (1) add a referent at the start of this segment - # (2) update the name of the zero length segment's referent + # gather information to: + # (1) add a referent at the start of this segment + # (2) update the name of the zero length segment's referent - # get the distance along the alignment to the start of the new segment - dist_along = 0.0 - if layout.is_a("IfcAlignmentHorizontal"): - for nest in layout.IsNestedBy: - for seg in nest.RelatedObjects: - if seg.is_a("IfcAlignmentSegment"): - dist_along += seg.DesignParameters.SegmentLength + # get the distance along the alignment to the start of the new segment + dist_along = 0.0 + if layout.is_a("IfcAlignmentHorizontal"): + for nest in layout.IsNestedBy: + for seg in nest.RelatedObjects: + if seg.is_a("IfcAlignmentSegment"): + dist_along += seg.DesignParameters.SegmentLength - # the length of the current segment is in dist_along, so subtract it out - dist_along -= segment.DesignParameters.SegmentLength - else: - dist_along = segment.DesignParameters.StartDistAlong - - # get the station of the start of the segment - alignment = ifcopenshell.api.alignment.get_alignment(layout) - start_station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) - station = start_station + dist_along - - # update the zero length layout segment - unit_scale = ifcopenshell.util.unit.calculate_unit_scale(file) - - zero_length_segment = layout.IsNestedBy[0].RelatedObjects[-1] - # DesignParameters.StartPoint for IfcAlignmentHorizontalSegment is automatically updated when the - # geometric representation is updated because the semantic and geometric data use the same IfcPoint. - # This is not the case of IfcAlignmentVerticalSegment and IfcAlignmentCantSegment. For these - # segment types, the design parameters of the zero length segment must be updated explicitly. - if zero_length_segment.DesignParameters.is_a( - "IfcAlignmentVerticalSegment" - ) or zero_length_segment.DesignParameters.is_a("IfcAlignmentCantSegment"): - # get the geometric representation for the new segment - mapped_segments = ifcopenshell.api.alignment.get_mapped_segments(segment) - mapped_segment = mapped_segments[0] if mapped_segments[1] == None else mapped_segments[1] - - # compute the end point matrix - settings = ifcopenshell.geom.settings() - segment_fn = ifcopenshell_wrapper.map_shape(settings, mapped_segment.wrapped_data) - segment_evaluator = ifcopenshell_wrapper.function_item_evaluator(settings, segment_fn) - e = segment_evaluator.evaluate(segment_fn.end()) - end = np.array(e) - - # update the zero length segment semantic representation parameters - if zero_length_segment.DesignParameters.is_a("IfcAlignmentVerticalSegment"): - y = float(end[1, 3]) / unit_scale - zero_length_segment.DesignParameters.StartHeight = y - dx = float(end[0, 0]) - dy = float(end[1, 0]) - zero_length_segment.DesignParameters.StartGradient = dy / dx - zero_length_segment.DesignParameters.EndGradient = zero_length_segment.DesignParameters.StartGradient + # the length of the current segment is in dist_along, so subtract it out + dist_along -= segment.DesignParameters.SegmentLength else: - z = float(end[2, 3]) / unit_scale - dx = float(end[0, 1]) - dy = float(end[1, 1]) - dz = float(end[2, 1]) - ds = math.sqrt(dx * dx + dy * dy) - slope = dz / ds - railhead = layout.RailHeadDistance + dist_along = segment.DesignParameters.StartDistAlong - zero_length_segment.DesignParameters.StartCantLeft = z + slope * railhead / 2.0 - zero_length_segment.DesignParameters.StartCantRight = z - slope * railhead / 2.0 - - # updated the referent's name because the referent is now at a new station - start_dist_along = 0.0 - if segment.DesignParameters.is_a("IfcAlignmentHorizontalSegment"): - start_dist_along = dist_along + segment.DesignParameters.SegmentLength - else: - start_dist_along = segment.DesignParameters.StartDistAlong + segment.DesignParameters.HorizontalLength - zero_length_segment.DesignParameters.StartDistAlong = start_dist_along - - end_referent = zero_length_segment.IsNestedBy[0].RelatedObjects[0] - end_referent.Name = f"{_get_segment_start_point_label(zero_length_segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,start_station+start_dist_along)})" - - # update the referent's geometric representation's location - end_referent.ObjectPlacement.RelativePlacement.Location.DistanceAlong.wrappedValue = start_dist_along - settings = ifcopenshell.geom.settings() - basis_curve = ifcopenshell.api.alignment.get_basis_curve(alignment) - curve_fn = ifcopenshell_wrapper.map_shape(settings, basis_curve.wrapped_data) - curve_evaluator = ifcopenshell_wrapper.function_item_evaluator(settings, curve_fn) - p = curve_evaluator.evaluate(start_dist_along * unit_scale) - p = np.array(p) - - x = float(p[0, 3]) / unit_scale - y = float(p[1, 3]) / unit_scale - z = float(p[2, 3]) / unit_scale - - rx = float(p[0, 0]) - ry = float(p[1, 0]) - rz = float(p[2, 0]) - - ax = float(p[0, 2]) - ay = float(p[1, 2]) - az = float(p[2, 2]) - - end_referent.ObjectPlacement.CartesianPosition.Location.Coordinates = (x, y, z) - end_referent.ObjectPlacement.CartesianPosition.Axis.DirectionRatios = (ax, ay, az) - end_referent.ObjectPlacement.CartesianPosition.RefDirection.DirectionRatios = (rx, ry, rz) - - start_station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) - end_referent_station = start_station + start_dist_along - pset_stationing = ifcopenshell.api.pset.add_pset(file, product=end_referent, name="Pset_Stationing") - ifcopenshell.api.pset.edit_pset(file, pset=pset_stationing, properties={"Station": end_referent_station}) - - # create the start of segment referent - - # get the previous segment. Working from the end of the basis curve, -1 is zero length segment - # -2 is the newly added segment, so -3 is the segment occuring just before the newly added segment - prev_segment = layout.IsNestedBy[0].RelatedObjects[-3] if 2 < len(layout.IsNestedBy[0].RelatedObjects) else None - name = f"{_get_segment_start_point_label(prev_segment,segment)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" - referent = ifcopenshell.api.alignment.add_stationing_referent( - file, segment, distance_along=dist_along, station=station, name=name - ) - - if len(curve.Segments) == 2 and layout.is_a("IfcAlignmentHorizontal"): - # this is the first real segment in the horizontal alignment - # update the location of the alignment's stationing referent + # get the station of the start of the segment alignment = ifcopenshell.api.alignment.get_alignment(layout) - stationing_referent = alignment.IsNestedBy[0].RelatedObjects[0] - p = curve_evaluator.evaluate( - stationing_referent.ObjectPlacement.RelativePlacement.Location.DistanceAlong.wrappedValue - ) + start_station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + station = start_station + dist_along + + # update the zero length layout segment + unit_scale = ifcopenshell.util.unit.calculate_unit_scale(file) + + zero_length_segment = layout.IsNestedBy[0].RelatedObjects[-1] + # DesignParameters.StartPoint for IfcAlignmentHorizontalSegment is automatically updated when the + # geometric representation is updated because the semantic and geometric data use the same IfcPoint. + # This is not the case of IfcAlignmentVerticalSegment and IfcAlignmentCantSegment. For these + # segment types, the design parameters of the zero length segment must be updated explicitly. + if zero_length_segment.DesignParameters.is_a( + "IfcAlignmentVerticalSegment" + ) or zero_length_segment.DesignParameters.is_a("IfcAlignmentCantSegment"): + # get the geometric representation for the new segment + mapped_segments = ifcopenshell.api.alignment.get_mapped_segments(segment) + mapped_segment = mapped_segments[0] if mapped_segments[1] == None else mapped_segments[1] + + # compute the end point matrix + settings = ifcopenshell.geom.settings() + segment_fn = ifcopenshell_wrapper.map_shape(settings, mapped_segment.wrapped_data) + segment_evaluator = ifcopenshell_wrapper.function_item_evaluator(settings, segment_fn) + e = segment_evaluator.evaluate(segment_fn.end()) + end = np.array(e) + + # update the zero length segment semantic representation parameters + if zero_length_segment.DesignParameters.is_a("IfcAlignmentVerticalSegment"): + y = float(end[1, 3]) / unit_scale + zero_length_segment.DesignParameters.StartHeight = y + dx = float(end[0, 0]) + dy = float(end[1, 0]) + zero_length_segment.DesignParameters.StartGradient = dy / dx + zero_length_segment.DesignParameters.EndGradient = zero_length_segment.DesignParameters.StartGradient + else: + z = float(end[2, 3]) / unit_scale + dx = float(end[0, 1]) + dy = float(end[1, 1]) + dz = float(end[2, 1]) + ds = math.sqrt(dx * dx + dy * dy) + slope = dz / ds + railhead = layout.RailHeadDistance + + zero_length_segment.DesignParameters.StartCantLeft = z + slope * railhead / 2.0 + zero_length_segment.DesignParameters.StartCantRight = z - slope * railhead / 2.0 + + # updated the referent's name because the referent is now at a new station + start_dist_along = 0.0 + if segment.DesignParameters.is_a("IfcAlignmentHorizontalSegment"): + start_dist_along = dist_along + segment.DesignParameters.SegmentLength + else: + start_dist_along = segment.DesignParameters.StartDistAlong + segment.DesignParameters.HorizontalLength + zero_length_segment.DesignParameters.StartDistAlong = start_dist_along + + end_referent = zero_length_segment.IsNestedBy[0].RelatedObjects[0] + end_referent.Name = f"{_get_segment_start_point_label(zero_length_segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,start_station+start_dist_along)})" + + # update the referent's geometric representation's location + end_referent.ObjectPlacement.RelativePlacement.Location.DistanceAlong.wrappedValue = start_dist_along + settings = ifcopenshell.geom.settings() + basis_curve = ifcopenshell.api.alignment.get_basis_curve(alignment) + curve_fn = ifcopenshell_wrapper.map_shape(settings, basis_curve.wrapped_data) + curve_evaluator = ifcopenshell_wrapper.function_item_evaluator(settings, curve_fn) + p = curve_evaluator.evaluate(start_dist_along * unit_scale) p = np.array(p) x = float(p[0, 3]) / unit_scale @@ -200,6 +160,47 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg ay = float(p[1, 2]) az = float(p[2, 2]) - stationing_referent.ObjectPlacement.CartesianPosition.Location.Coordinates = (x, y, z) - stationing_referent.ObjectPlacement.CartesianPosition.Axis.DirectionRatios = (ax, ay, az) - stationing_referent.ObjectPlacement.CartesianPosition.RefDirection.DirectionRatios = (rx, ry, rz) + end_referent.ObjectPlacement.CartesianPosition.Location.Coordinates = (x, y, z) + end_referent.ObjectPlacement.CartesianPosition.Axis.DirectionRatios = (ax, ay, az) + end_referent.ObjectPlacement.CartesianPosition.RefDirection.DirectionRatios = (rx, ry, rz) + + start_station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + end_referent_station = start_station + start_dist_along + pset_stationing = ifcopenshell.api.pset.add_pset(file, product=end_referent, name="Pset_Stationing") + ifcopenshell.api.pset.edit_pset(file, pset=pset_stationing, properties={"Station": end_referent_station}) + + # create the start of segment referent + + # get the previous segment. Working from the end of the basis curve, -1 is zero length segment + # -2 is the newly added segment, so -3 is the segment occuring just before the newly added segment + prev_segment = layout.IsNestedBy[0].RelatedObjects[-3] if 2 < len(layout.IsNestedBy[0].RelatedObjects) else None + name = f"{_get_segment_start_point_label(prev_segment,segment)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" + referent = ifcopenshell.api.alignment.add_stationing_referent( + file, segment, distance_along=dist_along, station=station, name=name + ) + + if len(curve.Segments) == 2 and layout.is_a("IfcAlignmentHorizontal"): + # this is the first real segment in the horizontal alignment + # update the location of the alignment's stationing referent + alignment = ifcopenshell.api.alignment.get_alignment(layout) + stationing_referent = alignment.IsNestedBy[0].RelatedObjects[0] + p = curve_evaluator.evaluate( + stationing_referent.ObjectPlacement.RelativePlacement.Location.DistanceAlong.wrappedValue + ) + p = np.array(p) + + x = float(p[0, 3]) / unit_scale + y = float(p[1, 3]) / unit_scale + z = float(p[2, 3]) / unit_scale + + rx = float(p[0, 0]) + ry = float(p[1, 0]) + rz = float(p[2, 0]) + + ax = float(p[0, 2]) + ay = float(p[1, 2]) + az = float(p[2, 2]) + + stationing_referent.ObjectPlacement.CartesianPosition.Location.Coordinates = (x, y, z) + stationing_referent.ObjectPlacement.CartesianPosition.Axis.DirectionRatios = (ax, ay, az) + stationing_referent.ObjectPlacement.CartesianPosition.RefDirection.DirectionRatios = (rx, ry, rz) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py index 1f53e33ba9..db74fc472f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py @@ -48,8 +48,8 @@ def _add_zero_length_segment(file: ifcopenshell.file, layout: entity_instance) - if curve: ifcopenshell.api.alignment.add_zero_length_segment(file, curve) - segment = layout.IsNestedBy[0].RelatedObjects[-1] - alignment = ifcopenshell.api.alignment.get_alignment(layout) - station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) - name = f"{_get_segment_start_point_label(segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" - ifcopenshell.api.alignment.add_stationing_referent(file, segment, 0.0, station, name=name) + segment = layout.IsNestedBy[0].RelatedObjects[-1] + alignment = ifcopenshell.api.alignment.get_alignment(layout) + station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + name = f"{_get_segment_start_point_label(segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" + ifcopenshell.api.alignment.add_stationing_referent(file, segment, 0.0, station, name=name) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py index 7abb768174..670ce47e77 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py @@ -33,27 +33,31 @@ def create( name: str, include_vertical: bool = False, include_cant: bool = False, + include_geometry: bool = True, start_station: float = 0.0, ) -> entity_instance: """ - Creates a new IfcAlignment with an IfcRelNests nesting an IfcReferent (for stationing) and IfcAlignmentHorizontal. The nest relationship can optionally - include IfcAlignmentVertical and IfcAlignmentCant. Geometric representations for the alignment layouts (IfcCompositeCurve, - IfcGradientCurve, IfcSegmentedReferenceCurve) are created as well. + Creates a new alignment with a horizontal layout. Optionally, vertical and cant layouts can be created as well. + The geometric representations are created as well, unless they are explicitly excluded. + Zero length segments are added at the end of the layouts and geometric representations. + The alignment is automatically aggreated to the project if it exists. - Zero length segments are added at the end. + Use get_horizontal_layout(alignment), get_vertical_layout(alignment) and get_cant_layout(alignment) to get the + corresponding IfcAlignmentHorizontal, IfcAlignmentVertical, and IfcAlignmentCant layout entities. - The IfcAlignment is aggreated to IfcProject + If the alignment has Viennese Bend transition curves, create the segments in the cant layout before the horizontal layout using create_layout_segment(). + The horizontal geometry in the Viennese Bend transition curves depends on the Viennese Bend cant parameters. create_layout_segment() automatically creates + the geometric representation from the semantic definition. The horizontal segment geometric representation will fail if the cant segment is not defined. - Use get_horizontal_layout(alignment) to get the IfcAlignmentHorizontal layout. - - If the alignment has Viennese Bend transition curves, create the cant layout before the horizontal layout. This is because the horizontal layout - in the Viennese Bend transition curves depends on the Viennese Bend cant parameters. + If geometric representations are created, the alignment stationing referent is also created using the start_station value. IfcReferent.ObjectPlacement + is required for linear positiion elements and IfcLinearPlacement is defined relative to alignment curve geometry. :param file: :param name: name assigned to IfcAlignment.Name - :param include_vertical: If True, IfcAlignmentVertical and IfcGradientCurve are created - :param include_cant: If True, IfcAlignmentCant and IfcSegmentedReferenceCurve are created - :param start_station: station value at the start of the alignment + :param include_vertical: If True, IfcAlignmentVertical is created. IfcGradientCurve is created if include_geometry is True + :param include_cant: If True, IfcAlignmentCant is created. IfcSegmentedReferenceCurve is created if include_geometry is True + :param include_geometry: If True, the geometric representations are added + :param start_station: station value at the start of the alignment. :return: Returns an IfcAlignment """ alignment = file.createIfcAlignment( @@ -73,15 +77,18 @@ def create( ifcopenshell.api.nest.assign_object(file, related_objects=alignment_layouts, relating_object=alignment) - _create_geometric_representation(file, alignment) + if include_geometry: + _create_geometric_representation(file, alignment) for layout in alignment_layouts: _add_zero_length_segment(file, layout) - # define stationing - name = ifcopenshell.util.alignment.station_as_string(file, start_station) - referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name) - ifcopenshell.api.nest.reorder_nesting(file, referent, -1, 0) + if include_geometry: + # define stationing + name = ifcopenshell.util.alignment.station_as_string(file, start_station) + referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name) + ifcopenshell.api.nest.reorder_nesting(file, referent, -1, 0) + # IFC 4.1.4.1.1 Alignment Aggregation To Project project = file.by_type("IfcProject")[0] diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py index e002b8b223..1cf7ac9386 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py @@ -23,20 +23,21 @@ from ifcopenshell import entity_instance import math from ifcopenshell import ifcopenshell_wrapper import numpy as np +from typing import Union from ifcopenshell.api.alignment._add_segment_to_layout import _add_segment_to_layout def create_layout_segment( file: ifcopenshell.file, layout: entity_instance, design_parameters: entity_instance -) -> np.array: +) -> Union[np.array, None]: """ Creates a new IfcAlignmentSegment using the IfcAlignmentParameterSegment design parameters. - The new segment is appended to the layout alignment and the corresponding IfcCurveSegment is created in the geometric representation + The new segment is appended to the layout alignment and the corresponding IfcCurveSegment is created in the geometric representation if it exists. :param layout: The layout to receive the new layout segment. This parameter is expected to be IfcAlignmentHorizontal, IfcAlignmentVertical or IfcAlignmentCant :param design_parameters: The parameters defining the segment. Expected to be the appropreate subclass of IfcAlignmentParameterSegment - :return: 4x4 matrix at end of segment as np.array intended to be used as the start point geometry for the next segment. + :return: 4x4 matrix at end of segment as np.array intended to be used as the start point geometry for the next segment or None if there is the geometric representation is not defined. """ expected_types = ["IfcAlignmentHorizontal", "IfcAlignmentVertical", "IfcAlignmentCant"] if not layout.is_a() in expected_types: @@ -59,26 +60,29 @@ def create_layout_segment( # returned and used when defining the next segment alignment = ifcopenshell.api.alignment.get_alignment(layout) curve = ifcopenshell.api.alignment.get_curve(alignment) + + if curve: + if layout.is_a("IfcAlignmentHorizontal"): + if curve.is_a("IfcGradientCurve"): + curve = curve.BaseCurve + elif curve.is_a("IfcSegmentedReferenceCurve"): + curve = ( + curve.BaseCurve.BaseCurve + ) # layout is horizontal and curve is segmented ref ... we want the curve's base curve + elif layout.is_a("IfcAlignmentVertical"): + if curve.is_a("IfcSegmentedReferenceCurve"): + curve = curve.BaseCurve - if layout.is_a("IfcAlignmentHorizontal"): - if curve.is_a("IfcGradientCurve"): - curve = curve.BaseCurve - elif curve.is_a("IfcSegmentedReferenceCurve"): - curve = ( - curve.BaseCurve.BaseCurve - ) # layout is horizontal and curve is segmented ref ... we want the curve's base curve - elif layout.is_a("IfcAlignmentVertical"): - if curve.is_a("IfcSegmentedReferenceCurve"): - curve = curve.BaseCurve + # the new segment is two from the end... the end segment is zero length + curve_segment = curve.Segments[-2] - # the new segment is two from the end... the end segment is zero length - curve_segment = curve.Segments[-2] + settings = ifcopenshell.geom.settings() - settings = ifcopenshell.geom.settings() + segment_fn = ifcopenshell_wrapper.map_shape(settings, curve_segment.wrapped_data) + segment_evaluator = ifcopenshell_wrapper.function_item_evaluator(settings, segment_fn) + e = segment_evaluator.evaluate(segment_fn.end()) + end = np.array(e) - segment_fn = ifcopenshell_wrapper.map_shape(settings, curve_segment.wrapped_data) - segment_evaluator = ifcopenshell_wrapper.function_item_evaluator(settings, segment_fn) - e = segment_evaluator.evaluate(segment_fn.end()) - end = np.array(e) - - return end + return end + else: + return None diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py index 2f5feabd7d..9ca8120bf3 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py @@ -21,12 +21,11 @@ import ifcopenshell.api.alignment import ifcopenshell.util.element from ifcopenshell import entity_instance - def get_alignment_station(file: ifcopenshell.file, alignment: entity_instance) -> float: """ Returns the start station of the alignment. If the alignment is nested by an IfcReferent the referent is checked for PredefinedType of STATION and an occurance of Pset_Stationing.Station, - otherwise start station is taken to be 0.0. + otherwise returns 0.0. """ if not alignment.is_a("IfcAlignment"): diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py b/src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py new file mode 100644 index 0000000000..308525fbe0 --- /dev/null +++ b/src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py @@ -0,0 +1,68 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2025 Thomas Krijnen +# +# This file is part of IfcOpenShell. +# +# IfcOpenShell is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# IfcOpenShell is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with IfcOpenShell. If not, see . + +import pytest +import ifcopenshell.api.alignment +import ifcopenshell.api.context +import ifcopenshell.api.unit + + +def test_create_no_geometry(): + file = ifcopenshell.file(schema="IFC4X3_ADD2") + project = file.createIfcProject(GlobalId=ifcopenshell.guid.new(), Name="Test") + length = ifcopenshell.api.unit.add_si_unit(file, unit_type="LENGTHUNIT") + ifcopenshell.api.unit.assign_unit(file, units=[length]) + + # creates an IfcAlignment with an IfcAlignmentHorizontal layout containing only the zero length segment + ali = ifcopenshell.api.alignment.create(file, "A1", include_vertical=True,include_geometry=False) + + # append a segment to the horizontal layout + horizontal_alignment = ifcopenshell.api.alignment.get_horizontal_layout(ali) + vertical_alignment = ifcopenshell.api.alignment.get_vertical_layout(ali) + + curve = ifcopenshell.api.alignment.get_curve(ali) + assert curve == None + + design_parameters = file.create_entity( + type="IfcAlignmentHorizontalSegment", + StartTag=None, + EndTag=None, + StartPoint=file.createIfcCartesianPoint(Coordinates=((0.0, 0.0))), + StartDirection=0.0, + StartRadiusOfCurvature=0.0, + EndRadiusOfCurvature=0.0, + SegmentLength=100.0, + GravityCenterLineHeight=None, + PredefinedType="LINE", + ) + end = ifcopenshell.api.alignment.create_layout_segment(file, horizontal_alignment, design_parameters) + assert end == None + + design_parameters = file.createIfcAlignmentVerticalSegment( + StartDistAlong=0.0, + HorizontalLength=50.0, + StartHeight=20.0, + StartGradient=1.0 / 100.0, + EndGradient=1.0 / 100.0, + PredefinedType="CONSTANTGRADIENT", + ) + end = ifcopenshell.api.alignment.create_layout_segment(file, vertical_alignment, design_parameters) + assert end == None + + +test_create_no_geometry() From 115d3d4498de1b00b8df61495091b47861de5c25 Mon Sep 17 00:00:00 2001 From: krande Date: Tue, 26 Aug 2025 13:17:05 +0200 Subject: [PATCH 02/39] start work on improving support for IfcFixedReferenceSweptAreaSolid --- .gitignore | 2 + cmake/CMakePresets.json | 95 + pixi.lock | 4150 +++++++++++++++++ pixi.toml | 56 + .../IfcFixedReferenceSweptAreaSolid.cpp | 189 +- src/ifcgeom/taxonomy.h | 1 + 6 files changed, 4412 insertions(+), 81 deletions(-) create mode 100644 cmake/CMakePresets.json create mode 100644 pixi.lock create mode 100644 pixi.toml diff --git a/.gitignore b/.gitignore index 53b2e0360d..d87b9eca58 100644 --- a/.gitignore +++ b/.gitignore @@ -107,3 +107,5 @@ src/bonsai/bonsai/bim/schema/Brick.ttl bonsaiDecoratorForLoads.code-workspace dev_environment.bat + +.pixi/ diff --git a/cmake/CMakePresets.json b/cmake/CMakePresets.json new file mode 100644 index 0000000000..c36dd0990a --- /dev/null +++ b/cmake/CMakePresets.json @@ -0,0 +1,95 @@ +{ + "version": 6, + "configurePresets": [ + { + "name": "shared", + "generator": "Ninja", + "hidden": true, + "cacheVariables": { + "BUILD_IFCPYTHON": "ON", + "BUILD_IFCGEOM": "ON", + "COLLADA_SUPPORT": "OFF", + "BUILD_EXAMPLES": "OFF", + "BUILD_GEOMSERVER": "OFF", + "GLTF_SUPPORT": "ON", + "BUILD_CONVERT": "ON", + "BUILD_IFCMAX": "OFF", + "IFCXML_SUPPORT": "ON", + "HDF5_SUPPORT": "ON", + "SCHEMA_VERSIONS": "4x3_add2", + "CITYJSON_SUPPORT": "OFF", + "CMAKE_GENERATOR_PLATFORM": "", + "CMAKE_GENERATOR_TOOLSET": "" + } + }, + { + "name": "win-shared", + "inherits": [ + "shared" + ], + "hidden": true, + "environment": { + "CONDA_BUILD": "ON", + "CONDA_PY": "312" + }, + "cacheVariables": { + "Boost_USE_STATIC_LIBS": "OFF", + "CMAKE_INSTALL_PREFIX": "$env{LIBRARY_PREFIX}", + "PYTHON_EXECUTABLE": "$env{PREFIX}/python.exe", + "PYTHON_INCLUDE_DIR": "$env{PREFIX}/include", + "PYTHON_LIBRARY": "$env{PREFIX}/libs/python$env{CONDA_PY}.lib", + "CMAKE_FIND_ROOT_PATH": "$env{LIBRARY_PREFIX}", + "CMAKE_PREFIX_PATH": "$env{LIBRARY_PREFIX}", + "LIBXML2_LIBRARIES": "$env{LIBRARY_PREFIX}/lib/libxml2.lib", + "OCC_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include/opencascade", + "OCC_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib", + "CGAL_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include", + "EIGEN_DIR": "$env{LIBRARY_PREFIX}/include/eigen3", + "JSON_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include", + "GMP_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include", + "GMP_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib", + "MPFR_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib", + "Boost_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib", + "Boost_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include", + "HDF5_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include", + "HDF5_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib", + "ZLIB_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include" + } + }, + { + "name": "win-release", + "inherits": [ + "win-shared" + ], + "hidden": false, + "warnings": { + "dev": false + }, + "environment": { + "PREFIX": "${sourceDir}/../.pixi/envs/prod", + "LIBRARY_PREFIX": "${sourceDir}/../.pixi/envs/prod/Library" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "win-debug", + "inherits": [ + "win-shared" + ], + "hidden": false, + "binaryDir": "${sourceDir}/../build/win-debug", + "warnings": { + "dev": false + }, + "environment": { + "PREFIX": "${sourceDir}/../.pixi/envs/dev", + "LIBRARY_PREFIX": "${sourceDir}/../.pixi/envs/dev/Library" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + } + ] +} \ No newline at end of file diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 0000000000..cf6b15c296 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,4150 @@ +version: 6 +environments: + common: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.2-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-novtk_he2768ca_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-h20ba9b8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-28_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-28_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.48.0-hdb6dae5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.2-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-novtk_h6d54593_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.9.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-28_h576b46c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-28_h7ad3364_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.46-had7236b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.48.0-h67fdade_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.2-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-novtk_hdfbec02_103.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.42.34433-hd920555_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.4-h208afaa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: {} + dev: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.2-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-novtk_he2768ca_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-h20ba9b8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-28_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-28_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.0-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.2-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-novtk_h6d54593_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.9.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-28_h576b46c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-28_h7ad3364_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.46-had7236b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.0-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.2-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-novtk_hdfbec02_103.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.42.34433-hd920555_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.4-h208afaa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + prod: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.2-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-novtk_he2768ca_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-h20ba9b8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-28_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-28_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.0-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.2-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-novtk_h6d54593_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.9.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-28_h576b46c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-28_h7ad3364_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.46-had7236b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.0-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.2-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-novtk_hdfbec02_103.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.42.34433-hd920555_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.4-h208afaa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + build_number: 8 + sha256: 1a62cd1f215fe0902e7004089693a78347a30ad687781dfda2289cab000e652d + md5: 37e16618af5c4851a3f3d66dd0e11141 + depends: + - libgomp >=7.5.0 + - libwinpthread >=12.0.0.r2.ggc561118da + constrains: + - openmp_impl 9999 + - msys2-conda-epoch <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 49468 + timestamp: 1718213032772 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda + sha256: 92be0f8ccd501ceeb3c782e2182e6ea04dca46799038176de40a57bca45512c5 + md5: 348619f90eee04901f4a70615efff35b + depends: + - binutils_impl_linux-64 >=2.43,<2.44.0a0 + license: GPL-3.0-only + license_family: GPL + size: 33876 + timestamp: 1729655402186 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda + sha256: 267e78990247369b13234bda270f31beb56a600b4851a8244e31dd9ad85b3b17 + md5: cf0c5521ac2a20dfa6c662a4009eeef6 + depends: + - ld_impl_linux-64 2.43 h712a8e2_2 + - sysroot_linux-64 + license: GPL-3.0-only + license_family: GPL + size: 5682777 + timestamp: 1729655371045 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda + sha256: df52bd8b8b2a20a0c529d9ad08aaf66093ac318aa8a33d270f18274341a77062 + md5: 18aba879ddf1f8f28145ca6fcb873d8c + depends: + - binutils_impl_linux-64 2.43 h4bf12b8_2 + license: GPL-3.0-only + license_family: GPL + size: 34945 + timestamp: 1729655404893 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 + md5: 7ed4301d437b59045be7e051a0308211 + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + size: 134188 + timestamp: 1720974491916 +- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b + md5: 276e7ffe9ffe39688abc665ef0f45596 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: bzip2-1.0.6 + license_family: BSD + size: 54927 + timestamp: 1720974860185 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda + sha256: 8dcc1628d34fe7d759f3a7dee52e09c5162a3f9669dddd6100bff965450f4a0a + md5: 133255af67aaf1e0c0468cc753fd800b + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 184455 + timestamp: 1734208242547 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda + sha256: 1e4b86b0f3d4ce9f3787b8f62e9f2c5683287f19593131640eed01cbdad38168 + md5: 3cb814f83f1f71ac1985013697f80cc1 + depends: + - binutils + - gcc + - gcc_linux-64 13.* + license: BSD-3-Clause + license_family: BSD + size: 6196 + timestamp: 1736437002021 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda + sha256: 31851c99aa6250be4885bb4a8ee2001e92c710f7fc89eb0947f575cc51405ec4 + md5: ab45badcb5d035d3bddfdbdd96e00967 + depends: + - cctools >=949.0.1 + - clang_osx-64 18.* + - ld64 >=530 + - llvm-openmp + license: BSD-3-Clause + license_family: BSD + size: 6236 + timestamp: 1736437072741 +- conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.9.0-hcfcfb64_0.conda + sha256: fa07ffc464b5a104a4d504c1a0a684ae383a67bef907d61697f22d48340c46cd + md5: 7d9b49b7ef31f9a23bdbc7ea0dd9996e + depends: + - vs2019_win-64 + license: BSD-3-Clause + license_family: BSD + size: 6481 + timestamp: 1736437097803 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + sha256: 42e911ee2d8808eacedbec46d99b03200a6138b8e8a120bd8acabe1cac41c63b + md5: 3418b6c8cac3e71c0bc089fc5ea53042 + license: ISC + size: 158408 + timestamp: 1738298385933 +- conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + sha256: 1bedccdf25a3bd782d6b0e57ddd97cdcda5501716009f2de4479a779221df155 + md5: 5304a31607974dfc2110dfbb662ed092 + license: ISC + size: 158690 + timestamp: 1738298232550 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_3.conda + sha256: c2fa3a11ab0576ca569f6d4e349c1e4dc9f864fb9f8c85c09a427f7fbd3feb96 + md5: 35dcc7020f26efb8baf60ce6fa0b0c36 + depends: + - cctools_osx-64 1010.6 hd19c6af_3 + - ld64 951.9 h4e51db5_3 + - libllvm18 >=18.1.8,<18.2.0a0 + license: APSL-2.0 + license_family: Other + size: 21297 + timestamp: 1738620872016 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda + sha256: 2694cafb16b591c6c0008b9862c2da45c5b618381aaa229a4b32f71df04cfcc0 + md5: b360b015bfbce96ceecc3e6eb85aed11 + depends: + - __osx >=10.13 + - ld64_osx-64 >=951.9,<951.10.0a0 + - libcxx + - libllvm18 >=18.1.8,<18.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-tools 18.1.* + - sigtool + constrains: + - cctools 1010.6.* + - ld64 951.9.* + - clang 18.1.* + license: APSL-2.0 + license_family: Other + size: 1121052 + timestamp: 1738620829929 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda + sha256: 3e462f93064c9a0159bb1cf3a5433fa03917d12d3631477646e83d5a6e3dd982 + md5: 3dc6d2006e420dfd77374298f871e45e + depends: + - __glibc >=2.17,<3.0.a0 + - eigen + - libboost >=1.86.0,<1.87.0a0 + - libboost-devel + - libgcc >=13 + - libstdcxx >=13 + - mpfr >=4.2.1,<5.0a0 + license: GPL3/LGPL3 + size: 5868980 + timestamp: 1729765220331 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-h20ba9b8_0.conda + sha256: 948be4f7c3f89b96d3af81fd98d6757943b674b4cba64a1a56540344a2108faa + md5: 981fcaecfb2dc8ccada88b02b6fb9b6a + depends: + - __osx >=10.13 + - eigen + - libboost >=1.86.0,<1.87.0a0 + - libboost-devel + - libcxx >=17 + - mpfr >=4.2.1,<5.0a0 + license: GPL3/LGPL3 + size: 5875258 + timestamp: 1729765412521 +- conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda + sha256: 53002381648f1e9bc9b8596494b52631827910b4e073eda9ed24c916641c8d87 + md5: f9defd692bff41e9771b90aa6aae23ec + depends: + - eigen + - libboost >=1.86.0,<1.87.0a0 + - libboost-devel + - mpfr >=4.2.1,<5.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL3/LGPL3 + size: 5852917 + timestamp: 1729765382648 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_7.conda + sha256: def6d2facf51e34dca06f3e9063c52fadb096783d7d8d601f309380f14ce5810 + md5: 623987a715f5fb4cbee8f059d91d0397 + depends: + - clang-18 18.1.8 default_h3571c67_7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 71151 + timestamp: 1738270236118 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_7.conda + sha256: 3a74de8af6896d276847332c1a350bab3c1791a13090588463edf4fabf9d424d + md5: 098293f10df1166408bac04351b917c5 + depends: + - __osx >=10.13 + - libclang-cpp18.1 18.1.8 default_h3571c67_7 + - libcxx >=18.1.8 + - libllvm18 >=18.1.8,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 807874 + timestamp: 1738270127631 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda + sha256: 1b6d10afcfc661500f98c81a3c6bf55a923e75ce74bc404e84c99f030fd647de + md5: 3f2a260a1febaafa4010aac7c2771c9e + depends: + - cctools_osx-64 + - clang 18.1.8.* + - compiler-rt 18.1.8.* + - ld64_osx-64 + - llvm-tools 18.1.8.* + license: BSD-3-Clause + license_family: BSD + size: 17783 + timestamp: 1731984965328 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda + sha256: 07348ac1da6697b72623be27f145c0fbaa03a123244a0289f1c6779a889e8339 + md5: 207116d6cb3762c83661bb49e6976e7d + depends: + - clang_impl_osx-64 18.1.8 h6a44ed1_23 + license: BSD-3-Clause + license_family: BSD + size: 21092 + timestamp: 1731984970165 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_7.conda + sha256: a1b0a353fbc465034ceafa6dbf3cf6e4ce9be07088bb38e44e30c9ab1265057e + md5: f2ec690c4ac8d9e6ffbf3be019d68170 + depends: + - clang 18.1.8 default_h576c50e_7 + - libcxx-devel 18.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 71187 + timestamp: 1738270260674 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda + sha256: f8b2b92c1389ddaadf3eb8f11d63403fcbb5b532299d9f86f54cc1f256fad1c0 + md5: 8f15135d550beba3e9a0af94661bed16 + depends: + - clang_osx-64 18.1.8 h7e5c614_23 + - clangxx 18.1.8.* + - libcxx >=18 + - libllvm18 >=18.1.8,<18.2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 17821 + timestamp: 1731984993303 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda + sha256: 36315114552b56069cc6792289b119ab62d311f435d9abd98a4cc61a857c2970 + md5: b6ee451fb82e7e27ea070cbac3117d59 + depends: + - clang_osx-64 18.1.8 h7e5c614_23 + - clangxx_impl_osx-64 18.1.8 h4b7810f_23 + license: BSD-3-Clause + license_family: BSD + size: 19451 + timestamp: 1731984998897 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + sha256: 9b775bbdee337d67b180b6fbc6c93fa1ba73a18b167c242d792dee2797245148 + md5: b3b88a7ec6372b6f2c0ddb31ee009ebd + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.10.1,<9.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libuv >=1.49.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.4,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 19606674 + timestamp: 1728416480376 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + sha256: 09aa49a9f068233e4d98688268465f431426a338c115c56517c3c3193198d07b + md5: 826e05dc51e8a9e4d10680f37e267b68 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - libexpat >=2.6.3,<3.0a0 + - libuv >=1.49.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.4,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 17507220 + timestamp: 1728417253023 +- conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + sha256: f1df2ab533ffed1a544ab0672bd09abeaee36cadf59c12f8564b03237779b3d3 + md5: 4b84d88fe13e33dd1cad2deaac3fbcf4 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.10.1,<9.0a0 + - libexpat >=2.6.3,<3.0a0 + - libuv >=1.49.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc14_runtime >=14.29.30139 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 14357142 + timestamp: 1728417628536 +- conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda + sha256: 30bd259ad8909c02ee9da8b13bf7c9f6dc0f4d6fa3c5d1cd82213180ca5f9c03 + md5: bc1714a1e73be18e411cff30dc1fe011 + depends: + - __osx >=10.13 + - clang 18.1.8.* + - clangxx 18.1.8.* + - compiler-rt_osx-64 18.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 95345 + timestamp: 1725258125808 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda + sha256: 1230fe22d190002693ba77cf8af754416d6ea7121707b74a7cd8ddc537f98bdb + md5: 76f906e6bdc58976c5593f650290ae20 + depends: + - clang 18.1.8.* + - clangxx 18.1.8.* + constrains: + - compiler-rt 18.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 10420490 + timestamp: 1725258080385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda + sha256: 5efc51b8e7d87fc5380f00ace9f9c758142eade520a63d3631d2616d1c1b25f9 + md5: 1ce8b218d359d9ed0ab481f2a3f3c512 + depends: + - c-compiler 1.9.0 h2b85faf_0 + - gxx + - gxx_linux-64 13.* + license: BSD-3-Clause + license_family: BSD + size: 6168 + timestamp: 1736437002465 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda + sha256: 05ba8e40b4ff53c3326a8e0adcf63ba9514b614435da737c5b8942eed64ef729 + md5: cd17d9bf9780b0db4ed31fb9958b167f + depends: + - c-compiler 1.9.0 h09a7c41_0 + - clangxx_osx-64 18.* + license: BSD-3-Clause + license_family: BSD + size: 6256 + timestamp: 1736437074458 +- conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda + sha256: b7ebc992f8ff3d5f9f40ea3555534440a0438fead4dd5d1dea60113ce224b487 + md5: 6c4b643c7dd8f13dafc8679ffc5671eb + depends: + - vs2019_win-64 + license: BSD-3-Clause + license_family: BSD + size: 6528 + timestamp: 1736437098756 +- conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + sha256: 53b15a98aadbe0704479bacaf7a5618fcb32d1577be320630674574241639b34 + md5: b1b879d6d093f55dd40d58b5eb2f0699 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MPL-2.0 + license_family: MOZILLA + size: 1088433 + timestamp: 1690272126173 +- conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + sha256: 187c0677e0cdcdc39aed716687a6290dd5b7f52b49eedaef2ed76be6cd0a5a3d + md5: 5b2cfc277e3d42d84a2a648825761156 + depends: + - libcxx >=15.0.7 + license: MPL-2.0 + license_family: MOZILLA + size: 1090184 + timestamp: 1690272503232 +- conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + sha256: 633a6a8db1f9a010cb0619f3446fb61f62dea348b09615ffae9744ab1001c24c + md5: 305b3ca7023ac046b9a42a48661f6512 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MPL-2.0 + license_family: MOZILLA + size: 1089706 + timestamp: 1690273089254 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 265599 + timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + sha256: 61a9aa1d2dd115ffc1ab372966dc8b1ac7b69870e6b1744641da276b31ea5c0b + md5: 84ccec5ee37eb03dd352db0a3f89ada3 + depends: + - __osx >=10.13 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 232313 + timestamp: 1730283983397 +- conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + sha256: ed122fc858fb95768ca9ca77e73c8d9ddc21d4b2e13aaab5281e27593e840691 + md5: 9bb0026a2131b09404c59c4290c697cd + depends: + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 192355 + timestamp: 1730284147944 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda + sha256: 03ccff5d255eab7a1736de9eeb539fbb1333036fa5e37ea7c8ec428270067c99 + md5: bbdf3d43d752b793ac81f27b28c49e2d + depends: + - __glibc >=2.17,<3.0.a0 + - imath >=3.1.12,<3.1.13.0a0 + - jxrlib >=1.1,<1.2.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libraw >=0.21.3,<0.22.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openexr >=3.3.1,<3.4.0a0 + - openjpeg >=2.5.2,<3.0a0 + license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage + size: 467860 + timestamp: 1729024045245 +- conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda + sha256: 89553f22495b2e22b8f603126d6a580cc0cbc5517e9c0dff4be4a3e9055f8f56 + md5: 4ea546f119eaf4a1457ded2054982d52 + depends: + - __osx >=10.13 + - imath >=3.1.12,<3.1.13.0a0 + - jxrlib >=1.1,<1.2.0a0 + - libcxx >=17 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libraw >=0.21.3,<0.22.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openexr >=3.3.1,<3.4.0a0 + - openjpeg >=2.5.2,<3.0a0 + license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage + size: 410944 + timestamp: 1729024174328 +- conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda + sha256: 89ff5bd00c94d201b76f90b939cbd9ec013171c45d9967f7dac71d330cd10343 + md5: 5c8c15da921f6a9388d37c4fc81dad4a + depends: + - imath >=3.1.12,<3.1.13.0a0 + - jxrlib >=1.1,<1.2.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libraw >=0.21.3,<0.22.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openexr >=3.3.1,<3.4.0a0 + - openjpeg >=2.5.2,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage + size: 465887 + timestamp: 1729024520954 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e + md5: 25152fce119320c980e5470e64834b50 + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 599300 + timestamp: 1694616137838 +- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728 + md5: 3761b23693f768dc75a8fd0a73ca053f + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-2.0-only OR FTL + size: 510306 + timestamp: 1694616398888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda + sha256: d0161362430183cbdbc3db9cf95f9a1af1793027f3ab8755b3d3586deb28bf84 + md5: 606924335b5bcdf90e9aed9a2f5d22ed + depends: + - gcc_impl_linux-64 13.3.0.* + license: BSD-3-Clause + license_family: BSD + size: 53864 + timestamp: 1724801360210 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda + sha256: 998ade1d487e93fc8a7a16b90e2af69ebb227355bf4646488661f7ae5887873c + md5: 0d043dbc126b64f79d915a0e96d3a1d5 + depends: + - binutils_impl_linux-64 >=2.40 + - libgcc >=13.3.0 + - libgcc-devel_linux-64 13.3.0 h84ea5a7_101 + - libgomp >=13.3.0 + - libsanitizer 13.3.0 heb74ff8_1 + - libstdcxx >=13.3.0 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 67464415 + timestamp: 1724801227937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda + sha256: 1e5ac50580a68fdc7d2f5722abcf1a87898c24b1ab6eb5ecd322634742d93645 + md5: ac23afbf5805389eb771e2ad3b476f75 + depends: + - binutils_linux-64 + - gcc_impl_linux-64 13.3.0.* + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + size: 32005 + timestamp: 1731939593317 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + sha256: 75aa5e7a875afdcf4903b7dc98577672a3dc17b528ac217b915f9528f93c85fc + md5: 427101d13f19c4974552a4e5b072eef1 + depends: + - __osx >=10.13 + - libcxx >=16 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 428919 + timestamp: 1718981041839 +- conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda + sha256: 664311ea9164898f72d43b7ebf591b1a337d574cbb0d5026b4a8f21000dc8b29 + md5: 74558de25a206a7dff062fd4f5ff2d8b + depends: + - libgcc >=13 + - libwinpthread >=12.0.0.r2.ggc561118da + - ucrt >=10.0.20348.0 + constrains: + - mpir <0.0a0 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 567053 + timestamp: 1718982076982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda + sha256: 5446f5d1d609d996579f706d2020e83ef48e086d943bfeef7ab807ea246888a0 + md5: 209182ca6b20aeff62f442e843961d81 + depends: + - gcc 13.3.0.* + - gxx_impl_linux-64 13.3.0.* + license: BSD-3-Clause + license_family: BSD + size: 53338 + timestamp: 1724801498389 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda + sha256: 746dff24bb1efc89ab0ec108838d0711683054e3bbbcb94d042943410a98eca1 + md5: 806367e23a0a6ad21e51875b34c57d7e + depends: + - gcc_impl_linux-64 13.3.0 hfea6d02_1 + - libstdcxx-devel_linux-64 13.3.0 h84ea5a7_101 + - sysroot_linux-64 + - tzdata + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 13337720 + timestamp: 1724801455825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda + sha256: a9b1ffea76f2cc5aedeead4793fcded7a687cce9d5e3f4fe93629f1b1d5043a6 + md5: 7c82ca9bda609b6f72f670e4219d3787 + depends: + - binutils_linux-64 + - gcc_linux-64 13.3.0 hc28eda2_7 + - gxx_impl_linux-64 13.3.0.* + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + size: 30356 + timestamp: 1731939612705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda + sha256: 93d2bfc672f3ee0988d277ce463330a467f3686d3f7ee37812a3d8ca11776d77 + md5: d76fff0092b6389a12134ddebc0929bd + depends: + - __glibc >=2.17,<3.0.a0 + - libaec >=1.1.3,<2.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libgfortran + - libgfortran5 >=13.3.0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3950601 + timestamp: 1733003331788 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda + sha256: 56500937894b1ca917e1ae1bea64b873a9eec57d581173579189d0b1f590db26 + md5: 12ebafc40b10d4bf519e4c2074c52aef + depends: + - __osx >=10.13 + - libaec >=1.1.3,<2.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3732340 + timestamp: 1733003702265 +- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda + sha256: e8ced65c604a3b9e4803758a25149d71d8096f186fe876817a0d1d97190550c0 + md5: 4381be33460283890c34341ecfa42d97 + depends: + - libaec >=1.1.3,<2.0a0 + - libcurl >=8.10.1,<9.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 2048450 + timestamp: 1733003052575 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 + md5: d68d48a3060eb5abdc1cdc8e2a3a5966 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 11761697 + timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + sha256: 4d8d07a4d5079d198168b44556fb86d094e6a716e8979b25a9f6c9c610e9fe56 + md5: 37f5e1ab0db3691929f37dee78335d1b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 159630 + timestamp: 1725971591485 +- conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + sha256: 5bf9c041b97b1af21808938fcaa64acafe0d853de5478fa08005176664ee4552 + md5: 326b3d68ab3f43396e7d7e0e9a496f73 + depends: + - __osx >=10.13 + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 155534 + timestamp: 1725971674035 +- conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + sha256: 184c796615cebaa73246f351144f164ee7b61ea809e4ba3c5d98fa9ca333e058 + md5: c25af729c8c1c41f96202f8a96652bbe + depends: + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 160408 + timestamp: 1725972042635 +- conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 + md5: 2d89243bfb53652c182a7c73182cce4f + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 1852356 + timestamp: 1723739573141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda + sha256: 2057ca87b313bde5b74b93b0e696f8faab69acd4cb0edebb78469f3f388040c0 + md5: 5aeabe88534ea4169d4c49998f293d6c + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 239104 + timestamp: 1703333860145 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + sha256: a548a4be14a4c76d6d992a5c1feffcbb08062f5c57abc6e4278d40c2c9a7185b + md5: cfaf81d843a80812fe16a68bdae60562 + license: BSD-2-Clause + license_family: BSD + size: 220376 + timestamp: 1703334073774 +- conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda + sha256: a9ac265bcf65fce57cfb6512a1b072d5489445d14aa1b60c9bdf73370cf261b2 + md5: a9dff8432c11dfa980346e934c29ca3f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 355340 + timestamp: 1703334132631 +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda + sha256: a922841ad80bd7b222502e65c07ecb67e4176c4fa5b03678a005f39fcc98be4b + md5: ad8527bf134a90e1c9ed35fa0b64318c + constrains: + - sysroot_linux-64 ==2.17 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 + license_family: GPL + size: 943486 + timestamp: 1729794504440 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c + md5: d4765c524b1d91567886bde656fb514b + depends: + - __osx >=10.13 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1185323 + timestamp: 1719463492984 +- conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 + md5: 31aec030344e962fbd7dbbbbd68e60a9 + depends: + - openssl >=3.3.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 712034 + timestamp: 1719463874284 +- conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + sha256: 637a9c32e15a4333f1f9c91e0a506dbab4a6dab7ee83e126951159c916c81c99 + md5: 3a8063b25e603999188ed4bbf3485404 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 92093 + timestamp: 1734709450256 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + sha256: bcb81543e49ff23e18dea79ef322ab44b8189fb11141b1af99d058503233a5fc + md5: bf210d0c63f2afb9e414a858b79f0eaa + depends: + - __osx >=10.13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 226001 + timestamp: 1739161050843 +- conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda + sha256: 7712eab5f1a35ca3ea6db48ead49e0d6ac7f96f8560da8023e61b3dbe4f3b25d + md5: 3538827f77b82a837fa681a4579e37a1 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 510641 + timestamp: 1739161381270 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda + sha256: 36e5a42c7aebad58d629c6bc1cb36243653a935e609e03a89b22005aa4ab2ddb + md5: d1743e343b8e13a4980dac16f050d2b6 + depends: + - ld64_osx-64 951.9 h33512f0_3 + - libllvm18 >=18.1.8,<18.2.0a0 + constrains: + - cctools 1010.6.* + - cctools_osx-64 1010.6.* + license: APSL-2.0 + license_family: Other + size: 18577 + timestamp: 1738620853804 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda + sha256: 4e6a37e3ea23a3d2f9b25b1b476728be6b5a1bab326fa5a976997698c60f70c0 + md5: f5c97cad6996928bdffc55b8f5e70723 + depends: + - __osx >=10.13 + - libcxx + - libllvm18 >=18.1.8,<18.2.0a0 + - sigtool + - tapi >=1300.6.5,<1301.0a0 + constrains: + - clang >=18.1.8,<19.0a0 + - ld 951.9.* + - cctools_osx-64 1010.6.* + - cctools 1010.6.* + license: APSL-2.0 + license_family: Other + size: 1100751 + timestamp: 1738620763081 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 + md5: f9d6a4c82889d5ecedec1d90eb673c55 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 290319 + timestamp: 1657977526749 +- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 + md5: 1900cb3cab5055833cfddb0ba233b074 + depends: + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30037 + license: Apache-2.0 + license_family: Apache + size: 194365 + timestamp: 1657977692274 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda + sha256: 2ef420a655528bca9d269086cf33b7e90d2f54ad941b437fb1ed5eca87cee017 + md5: 5e97e271911b8b2001a8b71860c32faa + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 35446 + timestamp: 1711021212685 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda + sha256: dae5921339c5d89f4bf58a95fd4e9c76270dbf7f6a94f3c5081b574905fcccf8 + md5: 66d3c1f6dd4636216b4fca7a748d50eb + depends: + - libcxx >=16 + license: BSD-2-Clause + license_family: BSD + size: 28602 + timestamp: 1711021419744 +- conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda + sha256: f5c293d3cfc00f71dfdb64bd65ab53625565f8778fc2d5790575bef238976ebf + md5: 8723000f6ffdbdaef16025f0a01b64c5 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 32567 + timestamp: 1711021603471 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + license: BSD-3-Clause + license_family: BSD + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-28_h7f60823_openblas.conda + build_number: 28 + sha256: c44341975c7d0b4b02c2676af30a723b109698b2939928b80c45efc2aa36ef2d + md5: c9f0b30e5ab2f4ddc450b95743d2070d + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + license: BSD-3-Clause + license_family: BSD + size: 16854 + timestamp: 1738114357360 +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-28_h576b46c_mkl.conda + build_number: 28 + sha256: 664fac202fb0f48f11538863f78128cc95e72fbf75fa7d037ddea7c497c0df5d + md5: eb97c3ea4cc02e42c01bc6c928094037 + depends: + - mkl 2024.2.2 h66d3029_15 + constrains: + - liblapack =3.9.0=28*_mkl + - blas =2.128=mkl + - liblapacke =3.9.0=28*_mkl + - libcblas =3.9.0=28*_mkl + license: BSD-3-Clause + license_family: BSD + size: 3732428 + timestamp: 1738114465076 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda + sha256: bad622863b3e4c8f0d107d8efd5b808e52d79cb502a20d700d05357b59a51e8f + md5: eead4e74198698d1c74f06572af753bc + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 2946990 + timestamp: 1733501899743 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda + sha256: 7758971337b07d1f4fd0c55eed4bfb06e3c0512a7e4549c648a01383926c1fcd + md5: 1e25fad7b2c160cd3b9b52f3507eb272 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 2134033 + timestamp: 1733503407177 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda + sha256: 0e1f19d03c2755f424321e0bebf3a62f864e084e812d172b3953e5215d4e4d36 + md5: d0550e3c23e9e9885bf410fe6f519361 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 2502049 + timestamp: 1733503877084 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda + sha256: 1bbc13f4bed720af80e67e5df1e609f4efd801ae27d85107c36416de20ebb84c + md5: ffe09ce10ce1e03e1e762ab5bc006a35 + depends: + - libboost 1.86.0 h6c02f8c_3 + - libboost-headers 1.86.0 ha770c72_3 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 37554 + timestamp: 1733502001252 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda + sha256: 297427f9edce4b04847d13bfaa2401326d69b351290bf7f61565844a503c7fc8 + md5: f4386c067b2bcd09be47d4092cf4c81d + depends: + - libboost 1.86.0 hf0da243_3 + - libboost-headers 1.86.0 h694c41f_3 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 38825 + timestamp: 1733503676067 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda + sha256: 604bbee4cc195b2ed745efc4bd9b3172c82ff1468ffbba25f6d0fc176b10b995 + md5: 2e5f24412d1cebea7fd9f9a41ffc7a85 + depends: + - libboost 1.86.0 hb0986bb_3 + - libboost-headers 1.86.0 h57928b3_3 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 40415 + timestamp: 1733504121541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda + sha256: 322be3cc409ee8b7f46a6e237c91cdcf810bc528af5865f6b7c46cc56ad5f070 + md5: be60ca34cfa7a867c2911506cad8f7c3 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 13991670 + timestamp: 1733501914699 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda + sha256: 9e441c92ad0ff786cae47f6a66fb60fc0d146c69386e4f6f5b7ecdda89db878f + md5: 7f26ba01ef422fd27abfdc98ceb104f0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 14151060 + timestamp: 1733503490599 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda + sha256: 231042814cfdb494b63b2829ce832f352ff8bcb8cc10eef148db7c799c9c8c29 + md5: 4bc32387538adb61353d76c629fb20e6 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 14179084 + timestamp: 1733503940017 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac + depends: + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + license: BSD-3-Clause + license_family: BSD + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-28_hff6cab4_openblas.conda + build_number: 28 + sha256: 3940ad1fe20fac8a21fe699ade336a649d0509bc6ff9bfc080b258f68cd056df + md5: bf672fd5b62c531028cda585c6ee91b1 + depends: + - libblas 3.9.0 28_h7f60823_openblas + constrains: + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + license: BSD-3-Clause + license_family: BSD + size: 16772 + timestamp: 1738114371625 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-28_h7ad3364_mkl.conda + build_number: 28 + sha256: affd4330721e0dadeefb31cd8191478772f75643db6bef485309782be689c52f + md5: fc67cf6a19301fc7d6eb83949abce428 + depends: + - libblas 3.9.0 28_h576b46c_mkl + constrains: + - liblapack =3.9.0=28*_mkl + - blas =2.128=mkl + - liblapacke =3.9.0=28*_mkl + license: BSD-3-Clause + license_family: BSD + size: 3732314 + timestamp: 1738114505434 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_7.conda + sha256: 81917105ee2f49e85f0abd684696ad9d9a81aef9d825e563e0013fd9a1ccbd23 + md5: d22bdc2b1ecf45631c5aad91f660623a + depends: + - __osx >=10.13 + - libcxx >=18.1.8 + - libllvm18 >=18.1.8,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 13901227 + timestamp: 1738269502537 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 423011 + timestamp: 1733999897624 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda + sha256: a4ee3da1a5fd753a382d129dffb079a1e8a244e5c7ff3f7aadc15bf127f8b5e5 + md5: 2f80e92674f4a92e9f8401494496ee62 + depends: + - __osx >=10.13 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 406590 + timestamp: 1734000110972 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda + sha256: 1a67f01da0e35296c6d1fdf6baddc45ad3cc2114132ff4638052eb7cf258aab2 + md5: 071d3f18dba5a6a13c6bb70cdb42678f + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: curl + license_family: MIT + size: 349553 + timestamp: 1734000095720 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + sha256: 6b2fa3fb1e8cd2000b0ed259e0c4e49cbef7b76890157fac3e494bc659a20330 + md5: 4b8f8dc448d814169dbc58fc7286057d + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 527924 + timestamp: 1736877256721 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda + sha256: 5d886a04be00a5a54a81fb040aacd238d0d55d4522c61c7875b675b803c748a3 + md5: 0c389f3214ce8cad37a12cb0bae44c54 + depends: + - libcxx >=18.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 792227 + timestamp: 1725403715206 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + sha256: 20c1e685e7409bb82c819ba55b9f7d9a654e8e6d597081581493badb7464520e + md5: 120f8f7ba6a8defb59f4253447db4bb4 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 69309 + timestamp: 1734374105905 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda + sha256: 96c47725a8258159295996ea2758fa0ff9bea330e72b59641642e16be8427ce8 + md5: a9624935147a25b06013099d3038e467 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 155723 + timestamp: 1734374084110 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 + md5: 1f4ed31220402fcddc083b4bff406868 + depends: + - ncurses + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 115563 + timestamp: 1738479554273 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 + md5: 899db79329439820b7e8f8de41bca902 + license: BSD-2-Clause + license_family: BSD + size: 106663 + timestamp: 1702146352558 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 + md5: 20307f4049a735a78a29073be1be2626 + depends: + - __osx >=10.13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 70758 + timestamp: 1730967204736 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 + md5: eb383771c680aa792feb529eaf9df82f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 139068 + timestamp: 1730967442102 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f + md5: ccb34fb14960ad8b125962d3d79b31a9 + license: MIT + license_family: MIT + size: 51348 + timestamp: 1636488394370 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 + md5: 2c96d1b6915b408893f9472569dee135 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + size: 42063 + timestamp: 1636489106777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda + sha256: ef840e797714440bb10b69446d815966fff41fdac79f79c4e19c475d81cd375d + md5: 75fdd34824997a0f9950a703b15d8ac5 + depends: + - _openmp_mutex >=4.5 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h1383e82_1 + - msys2-conda-epoch <0.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 666386 + timestamp: 1729089506769 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda + sha256: 027cfb011328a108bc44f512a2dec6d954db85709e0b79b748c3392f85de0c64 + md5: 0ce69d40c142915ac9734bc6134e514a + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 2598313 + timestamp: 1724801050802 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 + depends: + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d + md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 + depends: + - libgfortran5 13.2.0 h2873a65_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110106 + timestamp: 1707328956438 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b + md5: e4fb4d23ec2870ff3c40d10afe305aec + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1571379 + timestamp: 1707328880361 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda + sha256: d8739b834608f35775209b032f0c2be752ef187863c7ec847afcebe2f681be4e + md5: 9e2d4d1214df6f21cba12f6eff4972f9 + depends: + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - msys2-conda-epoch <0.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 524249 + timestamp: 1729089441747 +- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + sha256: 850e255997f538d5fb6ed651321141155a33bb781d43d326fc4ff62114dd2842 + md5: b87a0ac5ab6495d8225db5dc72dd21cd + depends: + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + - libxml2 >=2.13.4,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 2390021 + timestamp: 1731375651179 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 + md5: 6c3628d047e151efba7cf08c5e54d1ca + license: LGPL-2.1-only + size: 666538 + timestamp: 1702682713201 +- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b + md5: e1eb10b1cca179f2baa3601e4efc8712 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-only + size: 636146 + timestamp: 1702682547199 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f + md5: 72507f8e3961bc968af17435060b6dd6 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 579748 + timestamp: 1694475265912 +- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff + md5: 3f1b948619c45b1ca714d60c7389092c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 822966 + timestamp: 1694475223854 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d + depends: + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + license: BSD-3-Clause + license_family: BSD + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda + build_number: 28 + sha256: 862267d20bd7a248cef3dad1fefe5b31d44503943bd9745de42e8be17c86c806 + md5: edbfe8906ba99637eebb9ebe675a57d3 + depends: + - libblas 3.9.0 28_h7f60823_openblas + constrains: + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + license: BSD-3-Clause + license_family: BSD + size: 16758 + timestamp: 1738114383382 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda + build_number: 28 + sha256: 4b4bb704f46d12f56c1dcf5525bb97aea53a110e6bde6b8d588bf43b773500da + md5: 5aa8e62e29e0d76b0b99b79a739cd2dd + depends: + - libblas 3.9.0 28_h576b46c_mkl + constrains: + - blas =2.128=mkl + - liblapacke =3.9.0=28*_mkl + - libcblas =3.9.0=28*_mkl + license: BSD-3-Clause + license_family: BSD + size: 3732321 + timestamp: 1738114541347 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda + sha256: c488d96dcd0b2db0438b9ec7ea92627c1c36aa21491ebcd5cc87a9c58aa0a612 + md5: a04c2fc058fd6b0630c1a2faad322676 + depends: + - __osx >=10.13 + - libcxx >=18 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 27771340 + timestamp: 1737837075440 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + sha256: a895b5b16468a6ed436f022d72ee52a657f9b58214b91fabfab6230e3592a6dd + md5: db9d7b0152613f097cdb61ccf9f70ef5 + depends: + - __osx >=10.13 + license: 0BSD + size: 103749 + timestamp: 1738525448522 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + sha256: 3f552b0bdefdd1459ffc827ea3bf70a6a6920c7879d22b6bfd0d73015b55227b + md5: c48f6ad0ef0a555b27b233dfcab46a90 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: 0BSD + size: 104465 + timestamp: 1738525557254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda + sha256: 34928b36a3946902196a6786db80c8a4a97f6c9418838d67be90a1388479a682 + md5: 5ab1a0df19c8f3ec00d5e63458e0a420 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.4 hb9d3cd8_0 + license: 0BSD + size: 378821 + timestamp: 1738525353119 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda + sha256: 0f8c5679cce617a3c45f58a4e984cf2ec920a9b98f4e522fc3e0e6a69a31bf26 + md5: 06eccf9183d7bfeb45888e07804e6297 + depends: + - __osx >=10.13 + - liblzma 5.6.4 hd471939_0 + license: 0BSD + size: 113686 + timestamp: 1738525464050 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.4-h2466b09_0.conda + sha256: 9b185dc6889843f6660584be226c45c048e9b18598642e7455b69e277587c872 + md5: 1e5c2564c8615e8ed993ff634e4181a9 + depends: + - liblzma 5.6.4 h2466b09_0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: 0BSD + size: 126091 + timestamp: 1738525583264 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + sha256: 0dcfdcf3a445d2d7de4f3b186ab0a794dc872f4ea21622f9b997be72712c027f + md5: ab21007194b97beade22ceb7a3f6fee5 + depends: + - __osx >=10.13 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 606663 + timestamp: 1729572019083 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5578513 + timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda + sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7 + md5: cd2c572c02a73b88c4d378eb31110e85 + depends: + - __osx >=10.13 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 6165715 + timestamp: 1730773348340 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 + md5: adcf7bacff219488e29cfa95a2abd8f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 292273 + timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda + sha256: a293b883b5b334555c643bb3b076018127d7e49d26d59787392b23effae4a3d9 + md5: 82ecce167bb9c069b12968b7b1bee609 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 272958 + timestamp: 1737791101929 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.46-had7236b_0.conda + sha256: c866cd79dce3f6478fa3b4bc625d5cbe0512720fd6f8d45718da9537292329cf + md5: 4ddc2d65b35403e6ed75545f4cb4ec98 + depends: + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: zlib-acknowledgement + size: 356357 + timestamp: 1737791350471 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda + sha256: 4b483d963686bcc1fbe225c41f48a2ec206bc97e1d9d1c16fac2d6b5709240b8 + md5: e99091d245425cf089b814107b40c349 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: LGPL-2.1-only + license_family: LGPL + size: 640729 + timestamp: 1726766159397 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda + sha256: 6b1cebffeedbc8d3ccf203b71e488361893060ac0172c1e8812ef1fda031484d + md5: ea73d5e8ffd5f89389303c681d48ea2b + depends: + - __osx >=10.13 + - lcms2 >=2.16,<3.0a0 + - libcxx >=17 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + license: LGPL-2.1-only + license_family: LGPL + size: 581665 + timestamp: 1726766248079 +- conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda + sha256: 0d2610b684cd8712bdcf0873b17b1fa3d7ce1105550264b7fd91b184a00d1a28 + md5: 075f3d5fe250279afc5d9b221d71f84b + depends: + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-only + license_family: LGPL + size: 489267 + timestamp: 1726766863050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda + sha256: c86d130f0a3099e46ff51aa7ffaab73cb44fc420d27a96076aab3b9a326fc137 + md5: c4cb22f270f501f5c59a122dc2adf20a + depends: + - libgcc >=13.3.0 + - libstdcxx >=13.3.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 4133922 + timestamp: 1724801171589 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.0-hee588c1_0.conda + sha256: 51c68794a1f32c2742cbcfc8ea8cd730bb19148bed437197380778d3a6d49385 + md5: a12aa55f2a4446af8aa44d69ac563d58 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 917347 + timestamp: 1739176276854 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.48.0-hdb6dae5_1.conda + sha256: ccff3309ed7b1561d3bb00f1e4f36d9d1323af998013e3182a13bf0b5dcef4ec + md5: 6c4d367a4916ea169d614590bdf33b7c + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 926014 + timestamp: 1737565233282 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.0-hdb6dae5_0.conda + sha256: d90d5212f9cf1a30f9e6e4f17963b4cad113581bc71f29eb592eeeb70fe72011 + md5: a2420c8aa0c7f88f7caa9ee7a308549f + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 977401 + timestamp: 1739176558707 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.48.0-h67fdade_1.conda + sha256: eb889b9ea754d30268fa740f91e62fae6c30ca40f9769051dd42390d2470a7ff + md5: 5a7a8f7f68ce1bdb7b58219786436f30 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + size: 897026 + timestamp: 1737565547561 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.0-h67fdade_0.conda + sha256: ff6670afcef19234145cd7e2e3b97a6a591a09f2b98d0920b140bf175979db47 + md5: b5aae7f19da05cb648ca214bf14ddd81 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + size: 1082337 + timestamp: 1739176678486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + sha256: ef2a81c9a15080b996a37f0e1712881da90a710b234e63d8539d69892353de90 + md5: b1caec4561059e43a5d056684c5a2de0 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 283874 + timestamp: 1732349525684 +- conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda + sha256: 4b3256bd2b4e4b3183005d3bd8826d651eccd1a4740b70625afa2b7e7123d191 + md5: af0cbf037dd614c34399b3b3e568c557 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 291889 + timestamp: 1732349796504 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda + sha256: 0a9226c1b994f996229ffb54fa40d608cd4e4b48e8dc73a66134bea8ce949412 + md5: 29b5a4ed4613fa81a07c21045e3f5bf6 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 14074676 + timestamp: 1724801075448 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + sha256: bb50df7cfc1acb11eae63c5f4fdc251d381cda96bf02c086c3202c83a5200032 + md5: 6f2f9df7b093d6b33bc0c334acc7d2d9 + depends: + - __osx >=10.13 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 400099 + timestamp: 1734398943635 +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + sha256: c363a8baba4ce12b8f01f0ab74fe8b0dc83facd89c6604f4a191084923682768 + md5: defed79ff7a9164ad40320e3f116a138 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 978878 + timestamp: 1734399004259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + sha256: ec9da0a005c668c0964e0a6546c21416bab608569b5863edbdf135cee26e67d8 + md5: c86c7473f79a3c06de468b923416aa23 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 420128 + timestamp: 1737016791074 +- conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda + sha256: aeb71b2a2973ffed6d639ace6c1afef1a337836425e637d2320f3166dbaa5c80 + md5: a63a1ec1e8d017d1b9894aed98c419da + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 291944 + timestamp: 1737017103042 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 + md5: 5e0cefc99a231ac46ba21e27ae44689f + depends: + - __osx >=10.13 + constrains: + - libwebp 1.5.0 + license: BSD-3-Clause + license_family: BSD + size: 357662 + timestamp: 1734777539822 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + sha256: 1d75274614e83a5750b8b94f7bad2fc0564c2312ff407e697d99152ed095576f + md5: 33f7313967072c6e6d8f865f5493c7ae + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libwebp 1.5.0 + license: BSD-3-Clause + license_family: BSD + size: 273661 + timestamp: 1734777665516 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + sha256: 373f2973b8a358528b22be5e8d84322c165b4c5577d24d94fd67ad1bb0a0f261 + md5: 08bfa5da6e242025304b206d152479ef + depends: + - ucrt + constrains: + - pthreads-win32 <0.0a0 + - msys2-conda-epoch <0.0a0 + license: MIT AND BSD-3-Clause-Clear + size: 35794 + timestamp: 1737099561703 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + sha256: b9332bd8d47a72b7b8fa2ae13c24387ed4f5fd4e1f7ecf0031068c6a755267ae + md5: 23c629eba5239465a34bca0ed9c0b5d3 + depends: + - __osx >=10.13 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 608447 + timestamp: 1733443783886 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + sha256: 084dd4dde342f13c43ee418d153ac5b2610f95be029073a15fa9dda22b130d06 + md5: 77eaa84f90fc90643c5a0be0aa9bdd1b + depends: + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 1612294 + timestamp: 1733443909984 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + sha256: 8412f96504fc5993a63edf1e211d042a1fd5b1d51dedec755d2058948fcced09 + md5: 003a54a4e32b02f7355b50a837e699da + depends: + - __osx >=10.13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 57133 + timestamp: 1727963183990 +- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 + md5: 41fbfac52c601159df6c01f875de31b9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 55476 + timestamp: 1727963768015 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + sha256: b5b06821b0d4143f66ba652ffe6f535696dc3a4096175d9be8b19b1a7350c86d + md5: 65d08c50518999e69f421838c1d5b91f + depends: + - __osx >=10.13 + constrains: + - openmp 19.1.7|19.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 304885 + timestamp: 1736986327031 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda + sha256: 694ec5d1753cfff97785f3833173c1277d0ca0711d7c78ffc1011b40e7842741 + md5: 2585f8254d2ce24399a601e9b4e15652 + depends: + - __osx >=10.13 + - libllvm18 18.1.8 hc29ff6c_3 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-tools-18 18.1.8 hc29ff6c_3 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - clang 18.1.8 + - llvm 18.1.8 + - clang-tools 18.1.8 + - llvmdev 18.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 88081 + timestamp: 1737837724397 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda + sha256: 7a302073bd476d19474272471a5ed7ecec935e65fe16bb3f35e3d5d070ce0466 + md5: 61dfcd8dc654e2ca399a214641ab549f + depends: + - __osx >=10.13 + - libllvm18 18.1.8 hc29ff6c_3 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 25229705 + timestamp: 1737837655816 +- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + sha256: 20e52b0389586d0b914a49cd286c5ccc9c47949bed60ca6df004d1d295f2edbd + md5: 302dff2807f2927b3e9e0d19d60121de + depends: + - intel-openmp 2024.* + - tbb 2021.* + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 103106385 + timestamp: 1730232843711 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda + sha256: dddb6721dff05b8dfb654c532725330231fcb81ff1e27d885ee0cdcc9fccf1c4 + md5: d511e58aaaabfc23136880d9956fa7a6 + depends: + - __osx >=10.13 + - gmp >=6.3.0,<7.0a0 + license: LGPL-3.0-only + license_family: LGPL + size: 373396 + timestamp: 1725746891597 +- conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda + sha256: 4c8033476b623aed34f71482c03f892587166fd97227a1b576f15cd26da940db + md5: 9714a8ef685435ac5437defa415ffc5c + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + - ucrt >=10.0.20348.0 + license: LGPL-3.0-only + license_family: LGPL + size: 654269 + timestamp: 1725748295260 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + sha256: ea4a5d27ded18443749aefa49dc79f6356da8506d508b5296f60b8d51e0c4bd9 + md5: ced34dd9929f491ca6dab6a2927aff25 + depends: + - __osx >=10.13 + license: X11 AND BSD-3-Clause + size: 822259 + timestamp: 1738196181298 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda + sha256: 40f7b76b07067935f8a5886aab0164067b7aa71eb5ad20b7278618c0c2c98e06 + md5: 3aa1c7e292afeff25a0091ddd7c69b72 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 2198858 + timestamp: 1715440571685 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda + sha256: 230f11a2f73955b67550be09a0c1fd053772f5e01e98d5873547d63ebea73229 + md5: a0ebabd021c8191aeb82793fe43cfdcb + depends: + - __osx >=10.13 + - libcxx >=16 + license: Apache-2.0 + license_family: Apache + size: 124942 + timestamp: 1715440780183 +- conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda + sha256: b821cb72cb3ef08fab90a9bae899510e6cf3c23b5da6070d1ec30099dfe6a5be + md5: a557dde55343e03c68cd7e29e7f87279 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + size: 285150 + timestamp: 1715441052517 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda + sha256: 41b1aa2a67654917c9c32a5f0111970b11cfce49ed57cf44bba4aefdcd59e54b + md5: 00c3efa95b3a010ee85bc36aac6ab2f6 + depends: + - __osx >=10.13 + - libcxx >=16 + license: MIT + license_family: MIT + size: 122773 + timestamp: 1723652497933 +- conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda + sha256: 106af14431772a6bc659e8d5a3bb1930cf1010b85e0e7eca99ecd3e556e91470 + md5: 340cbb4ab78c90cd9d08f826ad22aed2 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 124255 + timestamp: 1723652081336 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.2-py312h72c5963_0.conda + sha256: c4161495b60f31de75b7ae5af3c93d5f3cd89ca0a53f132e3f9ea5ce1024bfd7 + md5: 7e984cb31e0366d1812096b41b361425 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 8480583 + timestamp: 1737331690623 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.2-py312h6693b03_0.conda + sha256: 5e2e6e06cf0a762e76c1a6d66cd3b46b710b659a14555ca14c2580ad3616b21c + md5: e223d8b92079f7a27355bedc72d74291 + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 7572175 + timestamp: 1737331525721 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.2-py312h3150e54_0.conda + sha256: 81042833d4756b9e59c438c871156eb55952ca3ce4252d7b794cac25ddb2b91f + md5: cba08d3c789f57ff31e45fbd54333428 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 7111468 + timestamp: 1737332033876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-novtk_he2768ca_103.conda + sha256: 801a89aad7276a56117f418ed0ebf1a94fc94b559651898bf679fadef6f98fe9 + md5: 2cc93f4634b2e18f9fd25ee0effda18e + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freeimage >=3.18.0,<3.19.0a0 + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libstdcxx >=13 + - rapidjson + - xorg-libxt >=1.3.0,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 28405633 + timestamp: 1729329914579 +- conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-novtk_h6d54593_103.conda + sha256: 4a20b71ca27c5a0cfb18e6821e46fce8beef8e659583fc43ea9575e55c3e3fc9 + md5: 21bf8bede9c8e7f9970d8e7b4df9af3d + depends: + - __osx >=10.13 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freeimage >=3.18.0,<3.19.0a0 + - freetype >=2.12.1,<3.0a0 + - libcxx >=17 + - rapidjson + arch: x86_64 + platform: osx + license: LGPL-2.1-only + license_family: LGPL + size: 24934160 + timestamp: 1729328376404 +- conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-novtk_hdfbec02_103.conda + sha256: 28e3da6feaec750f1a7b64f0aebc7a5f209d64ce3cbc49a3d1a22d2c81ff32d1 + md5: 6d69bb81e6f74e7818c3ba59fa026467 + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freeimage >=3.18.0,<3.19.0a0 + - freetype >=2.12.1,<3.0a0 + - rapidjson + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: LGPL-2.1-only + license_family: LGPL + size: 24745172 + timestamp: 1729330315091 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda + sha256: c4fe8f44c5c7c7cb872a518c9e279dc351047c479bda498bfd229ac58e6aff65 + md5: 3d2b6258db35c422c95ad89b72bf0aae + depends: + - __glibc >=2.17,<3.0.a0 + - imath >=3.1.12,<3.1.13.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1406200 + timestamp: 1734400244945 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda + sha256: 4b2380eec838014d6f9726acf94b02167aff0e5c5914aefccd5b7ceaf3f6d6d2 + md5: a61b89428c31ed7b31cbf01f1d380c50 + depends: + - __osx >=10.13 + - imath >=3.1.12,<3.1.13.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1218664 + timestamp: 1734400517405 +- conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda + sha256: 78064a2ffa02d3a23f27f63f04ac0ab9ad6ab95f61b2fe5e67ba883366694930 + md5: 88a5c7a59a7740104f0bfac86225a53d + depends: + - imath >=3.1.12,<3.1.13.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 1179194 + timestamp: 1734400780381 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + sha256: faea03f36c9aa3524c911213b116da41695ff64b952d880551edee2843fe115b + md5: 025c711177fc3309228ca1a32374458d + depends: + - __osx >=10.13 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 332320 + timestamp: 1733816828284 +- conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda + sha256: 410175815df192f57a07c29a6b3fdd4231937173face9e63f0830c1234272ce3 + md5: fc050366dd0b8313eb797ed1ffef3a29 + depends: + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 240148 + timestamp: 1733817010335 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda + sha256: 879a960d586cf8a64131ac0c060ef575cfb8aa9f6813093cba92042a86ee867c + md5: eaae23dbfc9ec84775097898526c72ea + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2590210 + timestamp: 1736086530077 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda + sha256: 519a06eaab7c878fbebb8cab98ea4a4465eafb1e9ed8c6ce67226068a80a92f0 + md5: fb45308ba8bfe1abf1f4a27bad24a743 + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + size: 8462960 + timestamp: 1736088436984 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f + md5: 58cde0663f487778bcd7a0c8daf50293 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 854306 + timestamp: 1723488807216 +- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 + md5: a3a3baddcfb8c80db84bec3cb7746fb8 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 820831 + timestamp: 1723489427046 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda + build_number: 1 + sha256: bee7b5288337cde8cbb21f34ff5b041511e4e9ba380838ab1be4deab1b55ea97 + md5: 68a31f9cfbdcab2a4baec79095374780 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 13683139 + timestamp: 1733410021762 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda + build_number: 1 + sha256: e1b37a398b3e2ea363de7cff6706e5ec2a5eb36b211132150e8601d7afd8f3aa + md5: 8cd0693344796fb32087185fca16f4cc + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 15812363 + timestamp: 1733408080064 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d + md5: c34dd4920e0addf7cfcc725809f25d8e + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6312 + timestamp: 1723823137004 +- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 9486662af81a219e96d343449eff242f38d7c5128ced5ce5acf85857265058d6 + md5: e8681f534453af7afab4cd2bc1423eec + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6730 + timestamp: 1723823139725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda + sha256: 645e408a91d3c3bea6cbb24e0c208222eb45694978b48e0224424369271ca0ef + md5: d6e98530772fc26c112640461110d127 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 145404 + timestamp: 1715006973191 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda + sha256: 07f88271bc5a73fc5a910895bf83bb6046b2b84a3935015c448667aef41abf9e + md5: 7b32c6b26b7c3a0d97ad484ab6f207c9 + depends: + - __osx >=10.13 + - libcxx >=16 + license: MIT + license_family: MIT + size: 145520 + timestamp: 1715007151117 +- conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + sha256: 569ccbf264ed1fd40ee92f9909e54019c87f8cfbccd508c6bb1983b1d6f93d4b + md5: b16fc1a64fe3ef08c3c886d372c64934 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 145494 + timestamp: 1715007138921 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 + md5: f17f77f2acf4d344734bda76829ce14e + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 255870 + timestamp: 1679532707590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + sha256: 04677caac29ec64a5d41d0cca8dbec5f60fa166d5458ff5a4393e4dc08a4799e + md5: 9af0e7981755f09c81421946c4bcea04 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 186921 + timestamp: 1728886721623 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda + sha256: 8680069a88f33e96046cf09c3c973074976064c5f13c282bf0e6d6a798f4f7ab + md5: a7a3324229bba7fd1c06bcbbb26a420a + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 178400 + timestamp: 1728886821902 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + sha256: 46fdeadf8f8d725819c4306838cdfd1099cd8fe3e17bd78862a5dfdcd6de61cf + md5: fbfb84b9de9a6939cb165c02c69b1865 + depends: + - openssl >=3.0.0,<4.0a0 + license: MIT + license_family: MIT + size: 213817 + timestamp: 1643442169866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda + sha256: 4771f7a2323d7f3c4d42b1c8ed670335ede7e78b80d8ba17d3c40b781dedcbdc + md5: 0e4da15e507b716140699aca1a279a88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - pcre2 >=10.44,<10.45.0a0 + license: GPL-3.0-or-later + license_family: GPL + size: 1248414 + timestamp: 1729588950292 +- conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda + sha256: 5d1accf5609d7152c8ee0961b7a83aa73519866f549e4e75aa0b8e2fe365db65 + md5: e977150e8f2dd12aa3fa3c94c87e5b8f + depends: + - __osx >=10.13 + - libcxx >=17 + - pcre2 >=10.44,<10.45.0a0 + license: GPL-3.0-or-later + license_family: GPL + size: 1160596 + timestamp: 1729589065015 +- conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda + sha256: b6f66e27dac7799a844e530f2b946713223106b8df66c809a6dda4a96ae68ba3 + md5: f076cd8282f1c164e57990a1daf70fd1 + depends: + - pcre2 >=10.44,<10.45.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-3.0-or-later + license_family: GPL + size: 1079944 + timestamp: 1729589112085 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + sha256: 69ab5804bdd2e8e493d5709eebff382a72fab3e9af6adf93a237ccf8f7dbd624 + md5: 460eba7851277ec1fd80a1a24080787a + depends: + - kernel-headers_linux-64 3.10.0 he073ed8_18 + - tzdata + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 + license_family: GPL + size: 15166921 + timestamp: 1735290488259 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda + sha256: f97372a1c75b749298cb990405a690527e8004ff97e452ed2c59e4bc6a35d132 + md5: c6ee25eb54accb3f1c8fc39203acfaf1 + depends: + - __osx >=10.13 + - libcxx >=17.0.0.a0 + - ncurses >=6.5,<7.0a0 + license: NCSA + license_family: MIT + size: 221236 + timestamp: 1725491044729 +- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 + md5: 9190dd0a23d925f7602f9628b3aed511 + depends: + - libhwloc >=2.11.2,<2.11.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + size: 151460 + timestamp: 1732982860332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3270220 + timestamp: 1699202389792 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 + md5: fc048363eb8f03cd1737600a5d08aafe + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: TCL + license_family: BSD + size: 3503410 + timestamp: 1699202577803 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 + md5: 6797b005cd0f439c4c5c9ac565783700 + constrains: + - vs2015_runtime >=14.29.30037 + license: LicenseRef-MicrosoftWindowsSDK10 + size: 559710 + timestamp: 1728377334097 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda + sha256: 7ce178cf139ccea5079f9c353b3d8415d1d49b0a2f774662c355d3f89163d7b4 + md5: 00cf3a61562bd53bd5ea99e6888793d0 + depends: + - vc14_runtime >=14.40.33810 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 17693 + timestamp: 1737627189024 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda + sha256: abda97b8728cf6e3c37df8f1178adde7219bed38b96e392cb3be66336386d32e + md5: 2441e010ee255e6a38bf16705a756e94 + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.42.34433.* *_24 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + size: 753531 + timestamp: 1737627061911 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda + sha256: 09102e0bd283af65772c052d85028410b0c31989b3cd96c260485d28e270836e + md5: 117fcc5b86c48f3b322b0722258c7259 + depends: + - vc14_runtime >=14.42.34433 + license: BSD-3-Clause + license_family: BSD + size: 17669 + timestamp: 1737627066773 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda + sha256: 4125acd871ba3498f25799b1999bf0fa4d80b0b353eb56ac170809f9eda19dd1 + md5: 41aaa71a5d4f668f5795c0647eeea776 + depends: + - vswhere + constrains: + - vs_win-64 2019.11 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 20377 + timestamp: 1737627273487 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.42.34433-hd920555_24.conda + sha256: 3966f53623d5aa259c2ae8b5a62f9d59cafcd35da393a38d74a5596bdad95b62 + md5: b7bf381ce6c037f88f32d93103a4e6d4 + depends: + - vswhere + constrains: + - vs_win-64 2022.12 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 20370 + timestamp: 1737627065789 +- conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda + sha256: 8caeda9c0898cb8ee2cf4f45640dbbbdf772ddc01345cfb0f7b352c58b4d8025 + md5: ba83df93b48acfc528f5464c9a882baa + license: MIT + license_family: MIT + size: 219013 + timestamp: 1719460515960 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 + md5: 4c3e9fab69804ec6077697922d70c6e2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + license: MIT + license_family: MIT + size: 27198 + timestamp: 1734229639785 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + sha256: a0e7fca9e341dc2455b20cd320fc1655e011f7f5f28367ecf8617cccd4bb2821 + md5: b6eb6d0cb323179af168df8fe16fb0a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + license: MIT + license_family: MIT + size: 835157 + timestamp: 1738613163812 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + sha256: a8afba4a55b7b530eb5c8ad89737d60d60bc151a03fbef7a2182461256953f0e + md5: 279b0de5f6ba95457190a1c459a64e31 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 379686 + timestamp: 1731860547604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda + sha256: 91fc251034fa5199919680aa50299296d89da54b2d066fb6e6a60461c17c0c4a + md5: bb511c87804cf7220246a3a6efc45c22 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.4 hb9d3cd8_0 + - liblzma-devel 5.6.4 hb9d3cd8_0 + - xz-gpl-tools 5.6.4 hbcc6ac9_0 + - xz-tools 5.6.4 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23477 + timestamp: 1738525395307 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda + sha256: 6412811e1592b530e84ea5030dedd7088fbe3258fdad9e60253d681b5be367a2 + md5: 702db4b35cffa4f94b94414066ffbb2b + depends: + - __osx >=10.13 + - liblzma 5.6.4 hd471939_0 + - liblzma-devel 5.6.4 hd471939_0 + - xz-gpl-tools 5.6.4 h357f2ed_0 + - xz-tools 5.6.4 hd471939_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23585 + timestamp: 1738525517200 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.4-h208afaa_0.conda + sha256: 26d5a1569c391566d42e7094aa5a3695487cf6c5cf33f45a7bb750bbcaca79fc + md5: 97e1f122231e057a3da5cd32affcc9c2 + depends: + - liblzma 5.6.4 h2466b09_0 + - liblzma-devel 5.6.4 h2466b09_0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz-tools 5.6.4 h2466b09_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23977 + timestamp: 1738525637903 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda + sha256: 300fc4e5993a36c979e61b1a38d00f0c23c0c56d5989be537cbc7bd8658254ed + md5: 246840b451f7a66bd68869e56b066dd5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.4 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33285 + timestamp: 1738525381548 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda + sha256: 57430768c0f26413dadec7fa4ac203984372a67e906a271f68777d1ad0085d20 + md5: bbe2c5315d02654eb195bdf012bad66c + depends: + - __osx >=10.13 + - liblzma 5.6.4 hd471939_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33480 + timestamp: 1738525498669 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda + sha256: 57506a312d8cfbee98217fb382822bd49794ea6318dd4e0413a0d588dc6f4f69 + md5: a098f9f949af52610fdceb8e35b57513 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.4 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89735 + timestamp: 1738525367692 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda + sha256: 5361cadd518a24a19b009cfea1c113bea979b040858a15bbbd3a58c4d4f9774a + md5: 479783497192d1ad6671cbd0080f6dcb + depends: + - __osx >=10.13 + - liblzma 5.6.4 hd471939_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81728 + timestamp: 1738525483936 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda + sha256: 100d88365523051c5542a2657598cb25a85feb387bba8fa7e4ccb99fa57ad3f6 + md5: 213c6ca29a37cf0d84281d063368428d + depends: + - liblzma 5.6.4 h2466b09_0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: 0BSD AND LGPL-2.1-or-later + size: 64183 + timestamp: 1738525614199 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda + sha256: 219edbdfe7f073564375819732cbf7cc0d7c7c18d3f546a09c2dfaf26e4d69f3 + md5: c989e0295dcbdc08106fe5d9e935f0b9 + depends: + - __osx >=10.13 + - libzlib 1.3.1 hd23fc13_2 + license: Zlib + license_family: Other + size: 88544 + timestamp: 1727963189976 +- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda + sha256: 8c688797ba23b9ab50cef404eca4d004a948941b6ee533ead0ff3bf52012528c + md5: be60c4e8efa55fddc17b4131aa47acbd + depends: + - libzlib 1.3.1 h2466b09_2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Zlib + license_family: Other + size: 107439 + timestamp: 1727963788936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 + md5: 4cb2cd56f039b129bb0e491c1164167e + depends: + - __osx >=10.9 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 498900 + timestamp: 1714723303098 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 + md5: 9a17230f95733c04dc40a2b1e5491d74 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 349143 + timestamp: 1714723445995 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000000..61e0bafd95 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,56 @@ +[project] +name = "IfcOpenShell" +version = "0.8.2" +description = "IfcOpenShell is a library to support the IFC file format" +channels = ["conda-forge"] +platforms = ["win-64", "linux-64", "osx-64"] + +[environments] +common = { features = ["common"], no-default-feature = true } +prod = { features = ["prod", "common"], no-default-feature = true } +dev = { features = ["dev", "common"], no-default-feature = true } + +[feature.common.dependencies] +# Build deps +cmake = "==3.30.5" +ninja = "*" +swig = "*" +c-compiler = "*" +cxx-compiler = "*" + +# Runtime deps +python = "3.12.*" +libboost-devel = "*" +occt = { version = "*", build = "*novtk*" } +cgal-cpp = "*" +numpy = "*" +lark = "*" +hdf5 = "*" +eigen = "*" +mpfr = "*" +gmp = "*" +nlohmann_json = "*" +zlib = "*" + + +[feature.common.target.win-64.dependencies] +vs2022_win-64 = "*" +#vs_win-64 = "*" # Visual Studio +#vswhere = "*" # Visual Studio + +[feature.common.target.win-64.tasks] +init-submodules = { cmd = "git submodule update --init --recursive", outputs =["$PIXI_PROJECT_ROOT/src/svgfill/3rdparty/svgpp/*"]} + +[feature.prod.target.win-64.tasks] +configure-release = { cmd = ["cmake", "--preset", "win-release", "-B", "build/win-release", "cmake"], description = "Configure the project", depends-on=["init-submodules"] } +build-release = { cmd = ["cmake", "--build", "build/win-release", "--config", "Release"], description = "Build the project" } + +[feature.dev.target.win-64.tasks] +configure-debug = { cmd = ["cmake", "--preset", "win-debug", "-B", "build/win-debug", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["$PIXI_PROJECT_ROOT/build/win-debug/CMakeCache.txt"] } +build-debug = { cmd = ["cmake", "--build", "build/win-debug", "--config", "Debug"], description = "Build the project" } +install-debug = { cmd = ["cmake", "--install", "build/win-debug", "--config", "Debug"], description = "Install the project" } + +vsdebug = { cmd = ["python"], description = "Run a python script with vs debugger attached" } + +[feature.common.target.win-64.activation] +#scripts = ["cmake/activate.bat"] \ No newline at end of file diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index d7b15859d3..cbccc69215 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -17,106 +17,133 @@ * * ********************************************************************************/ -#include "mapping.h" #include "../function_item_evaluator.h" +#include "mapping.h" #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcFixedReferenceSweptAreaSolid +namespace { +// Helper function to check if an IFC instance has alignment elements +bool has_alignment_elements(const IfcSchema::IfcFixedReferenceSweptAreaSolid* inst) { + if (inst->Directrix()->declaration().name() == "IfcGradientCurve") { + return true; + } else { + return false; + } +} +} // namespace + taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid* inst) { - auto dir = map(inst->Directrix()); - auto ref = taxonomy::cast(map(inst->FixedReference())); - auto profile = taxonomy::cast(map(inst->SweptArea())); + auto dir = map(inst->Directrix()); + auto ref = taxonomy::cast(map(inst->FixedReference())); + auto profile = taxonomy::cast(map(inst->SweptArea())); - auto loft = taxonomy::make(); - // @todo intialize as default - loft->axis = nullptr; - - // @todo currently only the case is handled where directrix returns a piecewise_function - if (auto fn = taxonomy::dcast(dir)) { - function_item_evaluator evaluator(settings_,fn); - double start = 0; - double end = fn->length(); + auto loft = taxonomy::make(); + // @todo intialize as default + loft->axis = nullptr; + // Check if this instance has alignment elements + if (has_alignment_elements(inst)) { + // @todo currently only the case is handled where directrix returns a piecewise_function + if (auto fn = taxonomy::dcast(dir)) { + function_item_evaluator evaluator(settings_, fn); + double start = 0; + double end = fn->length(); #ifdef SCHEMA_HAS_IfcDirectrixCurveSweptAreaSolid - // IfcDirectrixCurveSweptAreaSolid introduced in 4.3 changed attribute type - // from optional IfcParamValue to optional IfcCurveMeasureSelect. - // Invocation of mapping on pre-4.3 models can never result in a piecewise_function. - if (inst->StartParam() && inst->StartParam()->as()) { - double s = *inst->StartParam()->as(); - if (s > start) { - start = s; - } - } - if (inst->EndParam() && inst->EndParam()->as()) { - double e = *inst->EndParam()->as(); - if (e < end) { - end = e; - } - } + // IfcDirectrixCurveSweptAreaSolid introduced in 4.3 changed attribute type + // from optional IfcParamValue to optional IfcCurveMeasureSelect. + // Invocation of mapping on pre-4.3 models can never result in a piecewise_function. + if (inst->StartParam() && inst->StartParam()->as()) { + double s = *inst->StartParam()->as(); + if (s > start) { + start = s; + } + } + if (inst->EndParam() && inst->EndParam()->as()) { + double e = *inst->EndParam()->as(); + if (e < end) { + end = e; + } + } #endif - auto evaluation_points = evaluator.evaluation_points(); - for (const auto& dist_along : evaluation_points) { - auto m4 = evaluator.evaluate(dist_along); - - /* - std::stringstream ss; - ss << m4; - auto s = ss.str(); - std::wcout << s.c_str() << std::endl; + auto evaluation_points = evaluator.evaluation_points(); + for (const auto& dist_along : evaluation_points) { + auto m4 = evaluator.evaluate(dist_along); + + /* + std::stringstream ss; + ss << m4; + auto s = ss.str(); + std::wcout << s.c_str() << std::endl; std::wcout << "determinant: " << m4.determinant() << std::endl; - */ + */ + + Eigen::Matrix4d m4b = Eigen::Matrix4d::Identity(); + bool is_directrix_derived = false; - Eigen::Matrix4d m4b = Eigen::Matrix4d::Identity(); - bool is_directrix_derived = false; - #ifdef SCHEMA_HAS_IfcDirectrixDerivedReferenceSweptAreaSolid - if (inst->as()) { - is_directrix_derived = true; - } + if (inst->as()) { + is_directrix_derived = true; + } #endif - auto pos = m4.col(3).head<3>(); + auto pos = m4.col(3).head<3>(); - if (is_directrix_derived) { - m4b.col(0).head<3>() = m4.col(1).head<3>(); - m4b.col(1).head<3>() = m4.col(0).head<3>().cross(m4.col(1).head<3>()); - m4b.col(2).head<3>() = m4.col(0).head<3>(); - m4b.col(3).head<3>() = pos; - } else { - Eigen::Vector3d tangent = m4.col(0).head<3>().normalized(); - Eigen::Vector3d proj = (ref->components() - tangent * tangent.dot(ref->components())); - proj.normalize(); - auto ref = proj.cross(tangent); + if (is_directrix_derived) { + m4b.col(0).head<3>() = m4.col(1).head<3>(); + m4b.col(1).head<3>() = m4.col(0).head<3>().cross(m4.col(1).head<3>()); + m4b.col(2).head<3>() = m4.col(0).head<3>(); + m4b.col(3).head<3>() = pos; + } else { + Eigen::Vector3d tangent = m4.col(0).head<3>().normalized(); + Eigen::Vector3d proj = (ref->components() - tangent * tangent.dot(ref->components())); + proj.normalize(); + auto ref = proj.cross(tangent); - m4b.col(0).head<3>() = proj; - m4b.col(1).head<3>() = ref; - m4b.col(2).head<3>() = tangent; - m4b.col(3).head<3>() = pos; + m4b.col(0).head<3>() = proj; + m4b.col(1).head<3>() = ref; + m4b.col(2).head<3>() = tangent; + m4b.col(3).head<3>() = pos; - /* - Eigen::JacobiSVD svd(m4b); - auto condition_number = svd.singularValues()(0) - / svd.singularValues()(svd.singularValues().size() - 1); - if (condition_number > 1.e10) { - Logger::Error("Non-invertible matrix at " + std::to_string(distalong) + " conversion will likely fail."); - } - */ - } + /* + Eigen::JacobiSVD svd(m4b); + auto condition_number = svd.singularValues()(0) + / svd.singularValues()(svd.singularValues().size() - 1); + if (condition_number > 1.e10) { + Logger::Error("Non-invertible matrix at " + std::to_string(distalong) + " conversion will likely fail."); + } + */ + } - // @todo taxonomy::clone() does not actually clone. That's really confusing. - // loft->children.push_back(taxonomy::clone(profile)); - loft->children.push_back(taxonomy::face::ptr(profile->clone_())); - loft->children.back()->matrix = taxonomy::make(); - - if (profile->matrix) { - loft->children.back()->matrix->components() = (m4b * profile->matrix->ccomponents()).eval(); - } else { - loft->children.back()->matrix->components() = m4b; - } - } - } + // @todo taxonomy::clone() does not actually clone. That's really confusing. + // loft->children.push_back(taxonomy::clone(profile)); + loft->children.push_back(taxonomy::face::ptr(profile->clone_())); + loft->children.back()->matrix = taxonomy::make(); - return loft; + if (profile->matrix) { + loft->children.back()->matrix->components() = (m4b * profile->matrix->ccomponents()).eval(); + } else { + loft->children.back()->matrix->components() = m4b; + } + } + } + } else { + // TODO: Implement handling for non-alignment curves using sweep_along_curve + auto sweep = taxonomy::make( + nullptr, // matrix4::ptr - no transformation needed + profile, // face::ptr - the profile to sweep + nullptr, // item::ptr surface - not used for fixed reference sweep + dir // item::ptr curve - the directrix curve + + ); + + // Set the fixed reference direction for the sweep + sweep->direction = ref; // The fixed reference direction + + return sweep; + } + + return loft; } #endif diff --git a/src/ifcgeom/taxonomy.h b/src/ifcgeom/taxonomy.h index 703504abc2..669dacf346 100644 --- a/src/ifcgeom/taxonomy.h +++ b/src/ifcgeom/taxonomy.h @@ -1158,6 +1158,7 @@ typedef item const* ptr; item::ptr surface; item::ptr curve; + direction3::ptr direction = nullptr; virtual sweep_along_curve* clone_() const { return new sweep_along_curve(*this); } virtual kinds kind() const { return SWEEP_ALONG_CURVE; } From 48358297005c8955551f966bf2b632f2a07a3bd5 Mon Sep 17 00:00:00 2001 From: krande Date: Tue, 26 Aug 2025 16:09:32 +0200 Subject: [PATCH 03/39] refactor IfcFixedReferenceSweptAreaSolid logic and adjust install-debug task --- pixi.toml | 3 +- .../IfcFixedReferenceSweptAreaSolid.cpp | 117 ++++++++---------- 2 files changed, 54 insertions(+), 66 deletions(-) diff --git a/pixi.toml b/pixi.toml index 61e0bafd95..b229951ca9 100644 --- a/pixi.toml +++ b/pixi.toml @@ -48,7 +48,8 @@ build-release = { cmd = ["cmake", "--build", "build/win-release", "--config", "R [feature.dev.target.win-64.tasks] configure-debug = { cmd = ["cmake", "--preset", "win-debug", "-B", "build/win-debug", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["$PIXI_PROJECT_ROOT/build/win-debug/CMakeCache.txt"] } build-debug = { cmd = ["cmake", "--build", "build/win-debug", "--config", "Debug"], description = "Build the project" } -install-debug = { cmd = ["cmake", "--install", "build/win-debug", "--config", "Debug"], description = "Install the project" } + +install-debug = { cmd = ["cmake", "--install", "build/win-debug", "--config", "Debug"], description = "Install the project" } # Optionally Install files to your desired env using --prefix vsdebug = { cmd = ["python"], description = "Run a python script with vs debugger attached" } diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index cbccc69215..c6992c3957 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -24,17 +24,6 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcFixedReferenceSweptAreaSolid -namespace { -// Helper function to check if an IFC instance has alignment elements -bool has_alignment_elements(const IfcSchema::IfcFixedReferenceSweptAreaSolid* inst) { - if (inst->Directrix()->declaration().name() == "IfcGradientCurve") { - return true; - } else { - return false; - } -} -} // namespace - taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid* inst) { auto dir = map(inst->Directrix()); auto ref = taxonomy::cast(map(inst->FixedReference())); @@ -44,34 +33,33 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid // @todo intialize as default loft->axis = nullptr; // Check if this instance has alignment elements - if (has_alignment_elements(inst)) { - // @todo currently only the case is handled where directrix returns a piecewise_function - if (auto fn = taxonomy::dcast(dir)) { - function_item_evaluator evaluator(settings_, fn); - double start = 0; - double end = fn->length(); + // @todo currently only the case is handled where directrix returns a piecewise_function + if (auto fn = std::dynamic_pointer_cast(dir)) { + function_item_evaluator evaluator(settings_, fn); + double start = 0; + double end = fn->length(); #ifdef SCHEMA_HAS_IfcDirectrixCurveSweptAreaSolid - // IfcDirectrixCurveSweptAreaSolid introduced in 4.3 changed attribute type - // from optional IfcParamValue to optional IfcCurveMeasureSelect. - // Invocation of mapping on pre-4.3 models can never result in a piecewise_function. - if (inst->StartParam() && inst->StartParam()->as()) { - double s = *inst->StartParam()->as(); - if (s > start) { - start = s; - } + // IfcDirectrixCurveSweptAreaSolid introduced in 4.3 changed attribute type + // from optional IfcParamValue to optional IfcCurveMeasureSelect. + // Invocation of mapping on pre-4.3 models can never result in a piecewise_function. + if (inst->StartParam() && inst->StartParam()->as()) { + double s = *inst->StartParam()->as(); + if (s > start) { + start = s; } - if (inst->EndParam() && inst->EndParam()->as()) { - double e = *inst->EndParam()->as(); - if (e < end) { - end = e; - } + } + if (inst->EndParam() && inst->EndParam()->as()) { + double e = *inst->EndParam()->as(); + if (e < end) { + end = e; } + } #endif - auto evaluation_points = evaluator.evaluation_points(); - for (const auto& dist_along : evaluation_points) { - auto m4 = evaluator.evaluate(dist_along); + auto evaluation_points = evaluator.evaluation_points(); + for (const auto& dist_along : evaluation_points) { + auto m4 = evaluator.evaluate(dist_along); - /* + /* std::stringstream ss; ss << m4; auto s = ss.str(); @@ -79,33 +67,33 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid std::wcout << "determinant: " << m4.determinant() << std::endl; */ - Eigen::Matrix4d m4b = Eigen::Matrix4d::Identity(); - bool is_directrix_derived = false; + Eigen::Matrix4d m4b = Eigen::Matrix4d::Identity(); + bool is_directrix_derived = false; #ifdef SCHEMA_HAS_IfcDirectrixDerivedReferenceSweptAreaSolid - if (inst->as()) { - is_directrix_derived = true; - } + if (inst->as()) { + is_directrix_derived = true; + } #endif - auto pos = m4.col(3).head<3>(); + auto pos = m4.col(3).head<3>(); - if (is_directrix_derived) { - m4b.col(0).head<3>() = m4.col(1).head<3>(); - m4b.col(1).head<3>() = m4.col(0).head<3>().cross(m4.col(1).head<3>()); - m4b.col(2).head<3>() = m4.col(0).head<3>(); - m4b.col(3).head<3>() = pos; - } else { - Eigen::Vector3d tangent = m4.col(0).head<3>().normalized(); - Eigen::Vector3d proj = (ref->components() - tangent * tangent.dot(ref->components())); - proj.normalize(); - auto ref = proj.cross(tangent); + if (is_directrix_derived) { + m4b.col(0).head<3>() = m4.col(1).head<3>(); + m4b.col(1).head<3>() = m4.col(0).head<3>().cross(m4.col(1).head<3>()); + m4b.col(2).head<3>() = m4.col(0).head<3>(); + m4b.col(3).head<3>() = pos; + } else { + Eigen::Vector3d tangent = m4.col(0).head<3>().normalized(); + Eigen::Vector3d proj = (ref->components() - tangent * tangent.dot(ref->components())); + proj.normalize(); + auto ref = proj.cross(tangent); - m4b.col(0).head<3>() = proj; - m4b.col(1).head<3>() = ref; - m4b.col(2).head<3>() = tangent; - m4b.col(3).head<3>() = pos; + m4b.col(0).head<3>() = proj; + m4b.col(1).head<3>() = ref; + m4b.col(2).head<3>() = tangent; + m4b.col(3).head<3>() = pos; - /* + /* Eigen::JacobiSVD svd(m4b); auto condition_number = svd.singularValues()(0) / svd.singularValues()(svd.singularValues().size() - 1); @@ -113,18 +101,17 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid Logger::Error("Non-invertible matrix at " + std::to_string(distalong) + " conversion will likely fail."); } */ - } + } - // @todo taxonomy::clone() does not actually clone. That's really confusing. - // loft->children.push_back(taxonomy::clone(profile)); - loft->children.push_back(taxonomy::face::ptr(profile->clone_())); - loft->children.back()->matrix = taxonomy::make(); + // @todo taxonomy::clone() does not actually clone. That's really confusing. + // loft->children.push_back(taxonomy::clone(profile)); + loft->children.push_back(taxonomy::face::ptr(profile->clone_())); + loft->children.back()->matrix = taxonomy::make(); - if (profile->matrix) { - loft->children.back()->matrix->components() = (m4b * profile->matrix->ccomponents()).eval(); - } else { - loft->children.back()->matrix->components() = m4b; - } + if (profile->matrix) { + loft->children.back()->matrix->components() = (m4b * profile->matrix->ccomponents()).eval(); + } else { + loft->children.back()->matrix->components() = m4b; } } } else { From a0cc94a6141da8b1f593eced8d905de709846c1a Mon Sep 17 00:00:00 2001 From: krande Date: Tue, 26 Aug 2025 16:21:29 +0200 Subject: [PATCH 04/39] Add test for IfcFixedReferenceSweptAreaSolid with simple sweep example Includes `simple_sweep_1.ifc` test input and geometry validation. Updates dependencies in `pixi.lock`. --- pixi.lock | 180 ++++++++++++++++++++++++++++- pixi.toml | 1 + test/input_temp/simple_sweep_1.ifc | 74 ++++++++++++ test/test_sweeps.py | 62 ++++++++++ 4 files changed, 311 insertions(+), 6 deletions(-) create mode 100644 test/input_temp/simple_sweep_1.ifc create mode 100644 test/test_sweeps.py diff --git a/pixi.lock b/pixi.lock index cf6b15c296..f509501368 100644 --- a/pixi.lock +++ b/pixi.lock @@ -16,8 +16,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -37,6 +39,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -94,8 +97,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda @@ -104,6 +111,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -132,10 +141,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -149,6 +160,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda @@ -202,7 +214,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda @@ -212,6 +228,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda @@ -225,8 +243,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -239,6 +259,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda @@ -282,13 +303,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda @@ -321,8 +348,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -342,6 +371,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -399,8 +429,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda @@ -409,6 +443,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -437,10 +473,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -454,6 +492,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda @@ -507,7 +546,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda @@ -517,6 +560,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda @@ -530,8 +575,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -544,6 +591,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda @@ -587,13 +635,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda @@ -622,8 +676,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -643,6 +699,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -700,8 +757,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda @@ -710,6 +771,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -738,10 +801,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -755,6 +820,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda @@ -808,7 +874,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda @@ -818,6 +888,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda @@ -831,8 +903,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -845,6 +919,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda @@ -888,13 +963,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda @@ -1270,6 +1351,15 @@ packages: license_family: BSD size: 14357142 timestamp: 1728417628536 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda sha256: 30bd259ad8909c02ee9da8b13bf7c9f6dc0f4d6fa3c5d1cd82213180ca5f9c03 md5: bc1714a1e73be18e411cff30dc1fe011 @@ -1354,6 +1444,15 @@ packages: license_family: MOZILLA size: 1089706 timestamp: 1690273089254 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + sha256: ce61f4f99401a4bd455b89909153b40b9c823276aefcbb06f2044618696009ca + md5: 72e42d28960d875c7654614f8b50939a + depends: + - python >=3.9 + - typing_extensions >=4.6.0 + license: MIT and PSF-2.0 + size: 21284 + timestamp: 1746947398083 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -1736,6 +1835,15 @@ packages: license_family: BSD size: 160408 timestamp: 1725972042635 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca + md5: 6837f3eff7dcea42ecd714ce1ac2b108 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11474 + timestamp: 1733223232820 - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 md5: 2d89243bfb53652c182a7c73182cce4f @@ -3372,8 +3480,6 @@ packages: - libstdcxx >=13 - rapidjson - xorg-libxt >=1.3.0,<2.0a0 - arch: x86_64 - platform: linux license: LGPL-2.1-only license_family: LGPL size: 28405633 @@ -3389,8 +3495,6 @@ packages: - freetype >=2.12.1,<3.0a0 - libcxx >=17 - rapidjson - arch: x86_64 - platform: osx license: LGPL-2.1-only license_family: LGPL size: 24934160 @@ -3407,8 +3511,6 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win license: LGPL-2.1-only license_family: LGPL size: 24745172 @@ -3528,6 +3630,16 @@ packages: license_family: Apache size: 8462960 timestamp: 1736088436984 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 + md5: 58335b26c38bf4a20f399384c33cbcf9 + depends: + - python >=3.8 + - python + license: Apache-2.0 + license_family: APACHE + size: 62477 + timestamp: 1745345660407 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d md5: df359c09c41cd186fffb93a2d87aa6f5 @@ -3564,6 +3676,15 @@ packages: license_family: BSD size: 820831 timestamp: 1723489427046 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + sha256: a8eb555eef5063bbb7ba06a379fa7ea714f57d9741fe0efdb9442dbbc2cccbcc + md5: 7da7ccd349dbf6487a7778579d2bb971 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 24246 + timestamp: 1747339794916 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -3574,6 +3695,33 @@ packages: license_family: MIT size: 8252 timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a + md5: 6b6ece66ebcae2d5f326c77ef2c5a066 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 889287 + timestamp: 1750615908735 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: a49c2283f24696a7b30367b7346a0144 + depends: + - colorama >=0.4 + - exceptiongroup >=1 + - iniconfig >=1 + - packaging >=20 + - pluggy >=1.5,<2 + - pygments >=2.7.2 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 276562 + timestamp: 1750239526127 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda build_number: 1 sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 @@ -3851,6 +3999,26 @@ packages: license_family: BSD size: 3503410 timestamp: 1699202577803 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + sha256: 040a5a05c487647c089ad5e05ad5aff5942830db2a4e656f1e300d73436436f1 + md5: 30a0a26c8abccf4b7991d590fe17c699 + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + size: 21238 + timestamp: 1753796677376 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + sha256: 4f52390e331ea8b9019b87effaebc4f80c6466d09f68453f52d5cdc2a3e1194f + md5: e523f4f1e980ed7a4240d7e27e9ec81f + depends: + - python >=3.9 + - python + license: PSF-2.0 + license_family: PSF + size: 51065 + timestamp: 1751643513473 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de md5: dbcace4706afdfb7eb891f7b37d07c04 diff --git a/pixi.toml b/pixi.toml index b229951ca9..48923af5c2 100644 --- a/pixi.toml +++ b/pixi.toml @@ -31,6 +31,7 @@ mpfr = "*" gmp = "*" nlohmann_json = "*" zlib = "*" +pytest = "*" [feature.common.target.win-64.dependencies] diff --git a/test/input_temp/simple_sweep_1.ifc b/test/input_temp/simple_sweep_1.ifc new file mode 100644 index 0000000000..780d436bd7 --- /dev/null +++ b/test/input_temp/simple_sweep_1.ifc @@ -0,0 +1,74 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); +FILE_NAME('/dev/null','2025-08-26T16:01:38+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPROJECT('1TMwI763XBx9E7h3kqXonB',$,'AdaProject',$,$,$,$,(#11),#6); +#2=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#3=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#4=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#5=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#6=IFCUNITASSIGNMENT((#5,#3,#4,#2)); +#7=IFCCARTESIANPOINT((0.,0.,0.)); +#8=IFCDIRECTION((0.,0.,1.)); +#9=IFCDIRECTION((1.,0.,0.)); +#10=IFCAXIS2PLACEMENT3D(#7,#8,#9); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#10,$); +#12=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#11,$,.MODEL_VIEW.,$); +#13=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#11,$,.GRAPH_VIEW.,$); +#14=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Box','Model',*,*,*,*,#11,$,.MODEL_VIEW.,$); +#15=IFCACTORROLE(.ENGINEER.,$,$); +#16=IFCPERSON('AdaUser',$,$,$,$,$,(#15),$); +#17=IFCORGANIZATION('ADA','Assembly For Design and Analysis',$,$,$); +#18=IFCPERSONANDORGANIZATION(#16,#17,$); +#19=IFCAPPLICATION(#17,'XXX','ADA','ADA'); +#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756216898); +#21=IFCDIRECTION((0.,0.,1.)); +#22=IFCDIRECTION((1.,0.,0.)); +#23=IFCCARTESIANPOINT((0.,0.,0.)); +#24=IFCAXIS2PLACEMENT3D(#23,#21,#22); +#25=IFCLOCALPLACEMENT($,#24); +#26=IFCSITE('301mrn5JHCxRMMvjp9uGM1',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); +#27=IFCRELAGGREGATES('0RnSPGnurA1RhM0uNbRZ8k',#20,'Project Container',$,#1,(#26)); +#28=IFCPROPERTYSINGLEVALUE('project',$,IFCTEXT('AdaProject'),$); +#29=IFCPROPERTYSINGLEVALUE('schema',$,IFCTEXT('IFC4X3_add2'),$); +#30=IFCPROPERTYSET('1Yj9$v$uH0ZQk9AOoWx4hD',#20,'Properties',$,(#28,#29)); +#31=IFCRELDEFINESBYPROPERTIES('2zKQjOOuP0VwvxPEpnJusI',#20,'Properties',$,(#26),#30); +#32=IFCMATERIAL('S355',$,'Steel'); +#33=IFCPROPERTYSINGLEVALUE('Grade',$,IFCTEXT('S355'),$); +#34=IFCPROPERTYSINGLEVALUE('YieldStress',$,IFCPRESSUREMEASURE(355000000.),$); +#35=IFCPROPERTYSINGLEVALUE('YoungModulus',$,IFCMODULUSOFELASTICITYMEASURE(210000000000.),$); +#36=IFCPROPERTYSINGLEVALUE('PoissonRatio',$,IFCPOSITIVERATIOMEASURE(0.3),$); +#37=IFCPROPERTYSINGLEVALUE('ThermalExpansionCoefficient',$,IFCTHERMALEXPANSIONCOEFFICIENTMEASURE(1.2E-05),$); +#38=IFCPROPERTYSINGLEVALUE('SpecificHeatCapacity',$,IFCSPECIFICHEATCAPACITYMEASURE(0.03),$); +#39=IFCPROPERTYSINGLEVALUE('MassDensity',$,IFCMASSDENSITYMEASURE(7850.),$); +#40=IFCMATERIALPROPERTIES('MaterialMechanical','A Material property description',(#33,#34,#35,#36,#37,#38,#39),#32); +#41=IFCRELASSOCIATESMATERIAL('13SLSaNyz4PwOBYuDhXcWi',#20,'S355','Objects related to S355',(#64),#32); +#42=IFCDIRECTION((0.,0.,1.)); +#43=IFCDIRECTION((1.,0.,0.)); +#44=IFCCARTESIANPOINT((0.,0.,0.)); +#45=IFCAXIS2PLACEMENT3D(#44,#42,#43); +#46=IFCLOCALPLACEMENT(#25,#45); +#47=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.1),(0.1,0.),(0.1,0.1)),$); +#48=IFCINDEXEDPOLYCURVE(#47,(IFCLINEINDEX((3,1)),IFCLINEINDEX((1,2)),IFCLINEINDEX((2,4)),IFCLINEINDEX((4,3))),$); +#49=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#48); +#50=IFCCARTESIANPOINTLIST3D(((-1.,0.,0.8),(-0.14253,0.,0.542759),(-0.039541321421393,0.,0.470579850861542),(0.,0.,0.),(0.,0.,0.351194)),$); +#51=IFCINDEXEDPOLYCURVE(#50,(IFCLINEINDEX((4,5)),IFCARCINDEX((5,3,2)),IFCLINEINDEX((2,1))),$); +#52=IFCDIRECTION((-0.,1.,0.)); +#53=IFCCARTESIANPOINT((0.,0.,0.)); +#54=IFCDIRECTION((1.,0.,0.)); +#55=IFCDIRECTION((0.,0.,-1.)); +#56=IFCAXIS2PLACEMENT3D(#53,#54,#55); +#57=IFCFIXEDREFERENCESWEPTAREASOLID(#49,#56,#51,$,$,#52); +#58=IFCSHAPEREPRESENTATION(#12,'Body','AdvancedSweptSolid',(#57)); +#59=IFCPRODUCTDEFINITIONSHAPE($,$,(#58)); +#60=IFCCOLOURRGB('Color1',0.8,0.8,0.8); +#61=IFCSURFACESTYLESHADING(#60,0.); +#62=IFCSURFACESTYLE('Color1',.BOTH.,(#61)); +#63=IFCSTYLEDITEM(#57,(#62),'Color1'); +#64=IFCBUILDINGELEMENTPROXY('1R8AUxDeX02RhatZPFgzSt',#20,'sweep1',$,$,#46,#59,$,$); +#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('0HNU_Fs7r0SRBiQ9Xqgv$k',#20,'Physical model',$,(#64),#26); +ENDSEC; +END-ISO-10303-21; diff --git a/test/test_sweeps.py b/test/test_sweeps.py new file mode 100644 index 0000000000..f38d3c7ee1 --- /dev/null +++ b/test/test_sweeps.py @@ -0,0 +1,62 @@ +import pathlib +from typing import List, Sequence, Tuple + +import ifcopenshell +import pytest + + +def _bbox_from_vertices(verts: List[Tuple[float, float, float]]): + if not verts: + return (0, 0, 0), (0, 0, 0) + xs = [v[0] for v in verts] + ys = [v[1] for v in verts] + zs = [v[2] for v in verts] + mn = (min(xs), min(ys), min(zs)) + mx = (max(xs), max(ys), max(zs)) + return mn, mx + + +def _size_from_bbox(mn, mx): + return (mx[0] - mn[0], mx[1] - mn[1], mx[2] - mn[2]) + + +def _triples(flat: Sequence[float]) -> List[Tuple[float, float, float]]: + return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] + +def load_ifc_mesh_bbox(ifc_path: str): + """Load first product's mesh from IFC using ifcopenshell.geom and return bbox and size.""" + try: + import ifcopenshell.geom as geom + except Exception as e: + raise RuntimeError("ifcopenshell.geom not available: cannot validate IFC geometry") from e + + settings = geom.settings() + settings.set(settings.USE_WORLD_COORDS, True) + + f = ifcopenshell.open(ifc_path) + # Prefer the proxy we created, otherwise take any product with representation + products = f.by_type("IfcProduct") + target = None + for p in products: + if p.is_a("IfcBuildingElementProxy") and getattr(p, "Representation", None): + target = p + break + if target is None: + for p in products: + if getattr(p, "Representation", None): + target = p + break + if target is None: + raise RuntimeError("No representable product found in IFC for validation") + + shape = geom.create_shape(settings, target) + verts = _triples(shape.geometry.verts) + mn, mx = _bbox_from_vertices(verts) + return mn, mx, _size_from_bbox(mn, mx) + +@pytest.fixture +def test_dir(): + return pathlib.Path(__file__).parent.resolve().absolute() +def test_simple_sweep_1(test_dir): + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(test_dir / "input_temp/simple_sweep_1.ifc") + assert ifc_sz == pytest.approx((1.1, 0.1, 0.89578254)) \ No newline at end of file From 1de5940294376ab57fe550b458cebe9bfe880821 Mon Sep 17 00:00:00 2001 From: Richard Brice <37087370+RickBrice@users.noreply.github.com> Date: Mon, 25 Aug 2025 19:58:55 -0700 Subject: [PATCH 05/39] Separates referent and alignment layout usages into different referents --- .../ifcopenshell/api/alignment/__init__.py | 6 ++++ .../api/alignment/_add_segment_to_layout.py | 6 ++-- .../api/alignment/add_stationing_referent.py | 4 ++- .../ifcopenshell/api/alignment/create.py | 1 - .../api/alignment/get_alignment.py | 14 ++++---- .../alignment/get_alignment_layout_nest.py | 36 +++++++++++++++++++ .../alignment/get_alignment_segment_nest.py | 33 +++++++++++++++++ .../api/alignment/get_referent_nest.py | 36 +++++++++++++++++++ .../alignment/test_add_vertical_alignment.py | 30 +++++++--------- .../api/alignment/test_create_by_pi_method.py | 25 +++++-------- .../test_horizontal_layout_by_pi_method.py | 17 ++++----- .../test_vertical_layout_by_pi_method.py | 23 ++++-------- 12 files changed, 160 insertions(+), 71 deletions(-) create mode 100644 src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py create mode 100644 src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py create mode 100644 src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py index 9154159bb5..fb51da7cde 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py @@ -60,6 +60,8 @@ from .create_segment_representations import create_segment_representations from .create_representation import create_representation from .distance_along_from_station import distance_along_from_station from .get_alignment import get_alignment +from .get_alignment_layout_nest import get_alignment_layout_nest +from .get_alignment_segment_nest import get_alignment_segment_nest from .get_alignment_station import get_alignment_station from .get_curve_segment_transition_code import get_curve_segment_transition_code from .get_layout_segments import get_layout_segments @@ -74,6 +76,7 @@ from .get_curve import get_curve from .get_layout_curve import get_layout_curve from .get_mapped_segments import get_mapped_segments from .get_parent_alignment import get_parent_alignment +from .get_referent_nest import get_referent_nest from .has_zero_length_segment import has_zero_length_segment from .layout_horizontal_alignment_by_pi_method import layout_horizontal_alignment_by_pi_method from .layout_vertical_alignment_by_pi_method import layout_vertical_alignment_by_pi_method @@ -97,7 +100,9 @@ __all__ = [ "create_segment_representations", "distance_along_from_station", "get_alignment", + "get_alignment_layout_nest", "get_alignment_layouts", + "get_alignment_segment_nest", "get_alignment_station", "get_axis_subcontext", "get_basis_curve", @@ -109,6 +114,7 @@ __all__ = [ "get_layout_curve", "get_layout_segments", "get_parent_alignment", + "get_referent_nest", "get_vertical_layout", "has_zero_length_segment", "layout_horizontal_alignment_by_pi_method", diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py index cd0d89e234..b02f033fab 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py @@ -173,7 +173,8 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg # get the previous segment. Working from the end of the basis curve, -1 is zero length segment # -2 is the newly added segment, so -3 is the segment occuring just before the newly added segment - prev_segment = layout.IsNestedBy[0].RelatedObjects[-3] if 2 < len(layout.IsNestedBy[0].RelatedObjects) else None + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout) + prev_segment = segment_nest.RelatedObjects[-3] if 2 < len(segment_nest.RelatedObjects) else None name = f"{_get_segment_start_point_label(prev_segment,segment)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" referent = ifcopenshell.api.alignment.add_stationing_referent( file, segment, distance_along=dist_along, station=station, name=name @@ -183,7 +184,8 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg # this is the first real segment in the horizontal alignment # update the location of the alignment's stationing referent alignment = ifcopenshell.api.alignment.get_alignment(layout) - stationing_referent = alignment.IsNestedBy[0].RelatedObjects[0] + ref_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + stationing_referent = ref_nest.RelatedObjects[0] p = curve_evaluator.evaluate( stationing_referent.ObjectPlacement.RelativePlacement.Location.DistanceAlong.wrappedValue ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py index eece9ce581..286f660319 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py @@ -133,7 +133,9 @@ def add_stationing_referent( ) pset_stationing = ifcopenshell.api.pset.add_pset(file, product=referent, name="Pset_Stationing") ifcopenshell.api.pset.edit_pset(file, pset=pset_stationing, properties={"Station": station}) - ifcopenshell.api.nest.assign_object(file, related_objects=[referent], relating_object=element) + + nest = ifcopenshell.api.alignment.get_referent_nest(file,element) + nest.RelatedObjects += (referent,) if len(alignment.Positions) == 0: rel_positions = file.createIfcRelPositions( diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py index 670ce47e77..8fb591a256 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py @@ -87,7 +87,6 @@ def create( # define stationing name = ifcopenshell.util.alignment.station_as_string(file, start_station) referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name) - ifcopenshell.api.nest.reorder_nesting(file, referent, -1, 0) # IFC 4.1.4.1.1 Alignment Aggregation To Project diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py index 21dc9f9d2b..3086bac669 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py @@ -16,16 +16,16 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . -import ifcopenshell -import ifcopenshell.util from ifcopenshell import entity_instance -from collections.abc import Sequence - -import ifcopenshell.util.representation - def get_alignment(layout: entity_instance) -> entity_instance: """ Returns the alignment that nests this layout """ - return layout.Nests[0].RelatingObject if 0 < len(layout.Nests) else None + alignment = None + for nest in layout.Nests: + if nest.RelatingObject.is_a("IfcAlignment"): + alignment = nest.RelatingObject + break + + return alignment diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py new file mode 100644 index 0000000000..495157ce14 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py @@ -0,0 +1,36 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2025 Thomas Krijnen +# +# This file is part of IfcOpenShell. +# +# IfcOpenShell is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# IfcOpenShell is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with IfcOpenShell. If not, see . + +import ifcopenshell +from ifcopenshell import entity_instance + +def get_alignment_layout_nest(alignment: entity_instance) -> entity_instance: + """ + Searches for the IfcRelNest that contains IfcAlignmentHorizontal, IfcAlignmentVertical, or IfcAlignmentCant + + :param alignment: the alignment + :return: Returns the IfcRelNests containing the alignment layout + """ + layout_types = ["IfcAlignmentHorizontal", "IfcAlignmentVertical", "IfcAlignmentCant"] + + for nest in alignment.IsNestedBy: + for related_object in nest.RelatedObjects: + if related_object.is_a() in layout_types: + return nest + + return None diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py new file mode 100644 index 0000000000..49cb7628e5 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py @@ -0,0 +1,33 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2025 Thomas Krijnen +# +# This file is part of IfcOpenShell. +# +# IfcOpenShell is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# IfcOpenShell is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with IfcOpenShell. If not, see . + +import ifcopenshell +from ifcopenshell import entity_instance + +def get_alignment_segment_nest(layout: entity_instance) -> entity_instance: + """ + Searches for the IfcRelNest that contains IfcAlignmentSegment + + :param layout: an alignment layout, expected to be one of IfcAlignmentHorizontal, IfcAlignmentVertical, or IfcAlignmentCant + :return: Returns the IfcRelNests + """ + for nest in layout.IsNestedBy: + for related_object in nest.RelatedObjects: + if related_object.is_a("IfcAlignmentSegment"): + return nest + return None diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py new file mode 100644 index 0000000000..74eab17056 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py @@ -0,0 +1,36 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2025 Thomas Krijnen +# +# This file is part of IfcOpenShell. +# +# IfcOpenShell is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# IfcOpenShell is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with IfcOpenShell. If not, see . + +import ifcopenshell +from ifcopenshell import entity_instance + +def get_referent_nest(file: ifcopenshell.file,entity: entity_instance) -> entity_instance: + """ + Searches for the IfcRelNest that contains IfcReferent. If one is not found, a empty IfcRelNests is created. + + :param file: + :param entity: any entity that is the parent in a nesting relationship, but intended to be IfcAlignment, IfcAlignmentHorizontal, IfcAlignmentVertical, or IfcAlignmentCant + :return: Returns the IfcRelNests. + """ + for nest in entity.IsNestedBy: + for related_object in nest.RelatedObjects: + if related_object.is_a("IfcReferent"): + return nest + + nest = file.createIfcRelNests(GlobalId=ifcopenshell.guid.new(),RelatingObject=entity,RelatedObjects=[]) + return nest diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py index 256c9eab37..6287d28738 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py @@ -32,23 +32,20 @@ def test_add_vertical_alignment(): alignment = ifcopenshell.api.alignment.create(file, "A1", include_vertical=False) assert len(alignment.IsDecomposedBy) == 0 # no child alignments - assert len(alignment.IsNestedBy) == 1 # one nest - assert len(alignment.IsNestedBy[0].RelatedObjects) == 2 # nesting IfcReferent, IfcAlignmentHorizontal - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcReferent") - assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentHorizontal") + assert len(alignment.IsNestedBy) == 2 # nests for layout and referents + assert len(alignment.IsNestedBy[0].RelatedObjects) == 1 + assert ifcopenshell.api.alignment.get_referent_nest(file,alignment).RelatedObjects[0].is_a("IfcReferent") + assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") curve = ifcopenshell.api.alignment.get_curve(alignment) assert curve.is_a("IfcCompositeCurve") vertical_layout = ifcopenshell.api.alignment.add_vertical_layout(file, alignment) assert len(alignment.IsDecomposedBy) == 0 # no child alignments - assert len(alignment.IsNestedBy) == 1 # one nest - assert ( - len(alignment.IsNestedBy[0].RelatedObjects) == 3 - ) # nesting IfcReferent, IfcAlignmentHorizontal, IfcAlignmentVertical - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcReferent") - assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentHorizontal") - assert alignment.IsNestedBy[0].RelatedObjects[2].is_a("IfcAlignmentVertical") + assert len(alignment.IsNestedBy) == 2 + assert (len(alignment.IsNestedBy[0].RelatedObjects) == 2) + assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") + assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentVertical") curve = ifcopenshell.api.alignment.get_curve(alignment) assert curve.is_a("IfcGradientCurve") @@ -56,9 +53,7 @@ def test_add_vertical_alignment(): vertical_layout = ifcopenshell.api.alignment.add_vertical_layout(file, alignment) assert len(alignment.IsDecomposedBy) == 1 # 1 IfcRelAggreates relationship for the child algiments - assert ( - len(alignment.IsDecomposedBy[0].RelatedObjects) == 2 - ) # two child alignments, one for the first vertical and one for the vertical just added + assert (len(alignment.IsDecomposedBy[0].RelatedObjects) == 2) for child_alignment in alignment.IsDecomposedBy[0].RelatedObjects: assert child_alignment.is_a("IfcAlignment") @@ -66,10 +61,9 @@ def test_add_vertical_alignment(): assert len(child_alignment.IsNestedBy[0].RelatedObjects) == 1 # The IfcAlignmentVertical assert child_alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentVertical") - assert len(alignment.IsNestedBy) == 1 # 1 nesting relationsip for the alignments - assert len(alignment.IsNestedBy[0].RelatedObjects) == 2 # nesting IfcReferent and IfcAlignmentHorizontal - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcReferent") - assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentHorizontal") + assert len(alignment.IsNestedBy) == 2 + assert len(alignment.IsNestedBy[0].RelatedObjects) == 1 + assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") test_add_vertical_alignment() diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py index 0f1bb5fd3a..95868f80a6 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py @@ -46,22 +46,15 @@ def test_create_by_pi_method(): ) assert len(alignment.IsDecomposedBy) == 0 # no child alignments - assert len(alignment.IsNestedBy) == 1 # one nest - assert ( - len(alignment.IsNestedBy[0].RelatedObjects) == 3 - ) # nesting IfcReferent, IfcAlignmentHorizontal, IfcAlignmentVertical - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcReferent") - assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentHorizontal") - assert alignment.IsNestedBy[0].RelatedObjects[2].is_a("IfcAlignmentVertical") - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[1].IsNestedBy) == 1 - ) # nesting of segments beneath IfcAlignmentHorizontal - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[1].IsNestedBy[0].RelatedObjects) == 8 - ) # segments in horizontal layout - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[2].IsNestedBy[0].RelatedObjects) == 10 - ) # segments in vertical layout + assert len(alignment.IsNestedBy) == 2 # one nest + assert (len(alignment.IsNestedBy[0].RelatedObjects) == 2) + assert ifcopenshell.api.alignment.get_referent_nest(file,alignment).RelatedObjects[0].is_a("IfcReferent") + layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) + assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") + assert layout_nest.RelatedObjects[1].is_a("IfcAlignmentVertical") + assert (len(layout_nest.RelatedObjects[0].IsNestedBy) == 1) # nesting of segments beneath IfcAlignmentHorizontal + assert (len(layout_nest.RelatedObjects[0].IsNestedBy[0].RelatedObjects) == 8) # segments in horizontal layout + assert (len(layout_nest.RelatedObjects[1].IsNestedBy[0].RelatedObjects) == 10) # segments in vertical layout test_create_by_pi_method() diff --git a/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py index fd3321b425..c500d3d66e 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py @@ -45,16 +45,13 @@ def test_horizontal_layout_by_pi_method(): alignment = ifcopenshell.api.alignment.create_by_pi_method(file, "TestAlignment", coordinates, radii) assert len(alignment.IsDecomposedBy) == 0 # no child alignments - assert len(alignment.IsNestedBy) == 1 # one nest - assert len(alignment.IsNestedBy[0].RelatedObjects) == 2 # nesting IfcReferent, IfcAlignmentHorizontal - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcReferent") - assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentHorizontal") - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[1].IsNestedBy) == 1 - ) # nesting of segments beneath IfcAlignmentHorizontal - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[1].IsNestedBy[0].RelatedObjects) == 3 - ) # segments in horizontal layout + assert len(alignment.IsNestedBy) == 2 + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) + assert referent_nest.RelatedObjects[0].is_a("IfcReferent") + assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout_nest.RelatedObjects[0]) + assert (len(segment_nest.RelatedObjects) == 3) # segments in horizontal layout test_horizontal_layout_by_pi_method() diff --git a/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py index be9f9b55a3..9d39cf4b36 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py @@ -58,22 +58,13 @@ def test_vertical_layout_by_pi_method(): ifcopenshell.api.alignment.layout_vertical_alignment_by_pi_method(file, vlayout, vpoints, lengths) assert len(alignment.IsDecomposedBy) == 0 # no child alignments - assert len(alignment.IsNestedBy) == 1 # one nest - assert ( - len(alignment.IsNestedBy[0].RelatedObjects) == 3 - ) # nesting IfcReferent, IfcAlignmentHorizontal, IfcAlignmentVertical - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcReferent") - assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentHorizontal") - assert alignment.IsNestedBy[0].RelatedObjects[2].is_a("IfcAlignmentVertical") - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[1].IsNestedBy) == 1 - ) # nesting of segments beneath IfcAlignmentHorizontal - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[1].IsNestedBy[0].RelatedObjects) == 2 - ) # segments in horizontal layout - assert ( - len(alignment.IsNestedBy[0].RelatedObjects[2].IsNestedBy[0].RelatedObjects) == 3 - ) # segments in vertical layout + assert len(alignment.IsNestedBy) == 2 + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) + assert(len(referent_nest.RelatedObjects) == 1) + assert(len(layout_nest.RelatedObjects) == 2) + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vlayout) + assert(len(segment_nest.RelatedObjects) == 3) test_vertical_layout_by_pi_method() From 234cb76cd7a3a354030789dfb1a2e0e5796cfc13 Mon Sep 17 00:00:00 2001 From: krande Date: Tue, 26 Aug 2025 20:48:05 +0200 Subject: [PATCH 06/39] add 1 more test --- pixi.lock | 464 ++++++++++++++++++++++++------------- pixi.toml | 23 +- test/input_temp/.gitignore | 1 + test/input_temp/pipe.ifc | 119 ++++++++++ test/test_sweeps.py | 11 +- 5 files changed, 447 insertions(+), 171 deletions(-) create mode 100644 test/input_temp/.gitignore create mode 100644 test/input_temp/pipe.ifc diff --git a/pixi.lock b/pixi.lock index f509501368..af1589ab03 100644 --- a/pixi.lock +++ b/pixi.lock @@ -68,8 +68,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -102,17 +102,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.8.1.1-novtk_h9a8ab00_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -120,9 +123,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda osx-64: @@ -185,12 +188,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda @@ -200,7 +203,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-he1bc88e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda @@ -218,22 +221,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda win-64: @@ -279,7 +285,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda @@ -292,7 +298,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h741aa76_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda @@ -307,20 +313,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_31.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.42.34433-hd920555_24.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda @@ -400,8 +410,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -434,17 +444,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.8.1.1-novtk_h9a8ab00_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -452,9 +465,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda osx-64: @@ -517,12 +530,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda @@ -532,7 +545,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-he1bc88e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda @@ -550,22 +563,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda win-64: @@ -611,7 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda @@ -624,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h741aa76_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda @@ -639,20 +655,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_31.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.42.34433-hd920555_24.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda @@ -728,8 +748,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -762,17 +782,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.8.1.1-novtk_h9a8ab00_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -780,9 +803,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda osx-64: @@ -845,12 +868,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda @@ -860,7 +883,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-he1bc88e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda @@ -878,22 +901,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda win-64: @@ -939,7 +965,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda @@ -952,7 +978,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h741aa76_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda @@ -967,20 +993,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_31.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.42.34433-hd920555_24.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda @@ -2601,22 +2631,24 @@ packages: license_family: BSD size: 2390021 timestamp: 1731375651179 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 - md5: 6c3628d047e151efba7cf08c5e54d1ca +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 + md5: 210a85a1119f97ea7887188d176db135 + depends: + - __osx >=10.13 license: LGPL-2.1-only - size: 666538 - timestamp: 1702682713201 -- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b - md5: e1eb10b1cca179f2baa3601e4efc8712 + size: 737846 + timestamp: 1754908900138 +- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda + sha256: 0dcdb1a5f01863ac4e8ba006a8b0dc1a02d2221ec3319b5915a1863254d7efa7 + md5: 64571d1dd6cdcfa25d0664a5950fdaa2 depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: LGPL-2.1-only - size: 636146 - timestamp: 1702682547199 + size: 696926 + timestamp: 1754909290005 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f md5: ea25936bb4080d843790b586850f82b8 @@ -2702,23 +2734,27 @@ packages: license_family: Apache size: 27771340 timestamp: 1737837075440 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 + md5: 1a580f7796c7bf6393fddb8bbbde58dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz 5.8.1.* license: 0BSD - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - sha256: a895b5b16468a6ed436f022d72ee52a657f9b58214b91fabfab6230e3592a6dd - md5: db9d7b0152613f097cdb61ccf9f70ef5 + size: 112894 + timestamp: 1749230047870 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 + md5: 8468beea04b9065b9807fc8b9cdc5894 depends: - __osx >=10.13 + constrains: + - xz 5.8.1.* license: 0BSD - size: 103749 - timestamp: 1738525448522 + size: 104826 + timestamp: 1749230155443 - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda sha256: 3f552b0bdefdd1459ffc827ea3bf70a6a6920c7879d22b6bfd0d73015b55227b md5: c48f6ad0ef0a555b27b233dfcab46a90 @@ -2729,25 +2765,25 @@ packages: license: 0BSD size: 104465 timestamp: 1738525557254 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.4-hb9d3cd8_0.conda - sha256: 34928b36a3946902196a6786db80c8a4a97f6c9418838d67be90a1388479a682 - md5: 5ab1a0df19c8f3ec00d5e63458e0a420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda + sha256: 329e66330a8f9cbb6a8d5995005478188eb4ba8a6b6391affa849744f4968492 + md5: f61edadbb301530bd65a32646bd81552 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.4 hb9d3cd8_0 + - liblzma 5.8.1 hb9d3cd8_2 license: 0BSD - size: 378821 - timestamp: 1738525353119 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.4-hd471939_0.conda - sha256: 0f8c5679cce617a3c45f58a4e984cf2ec920a9b98f4e522fc3e0e6a69a31bf26 - md5: 06eccf9183d7bfeb45888e07804e6297 + size: 439868 + timestamp: 1749230061968 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda + sha256: a020ad9f1e27d4f7a522cbbb9613b99f64a5cc41f80caf62b9fdd1cf818acf18 + md5: 2e16f5b4f6c92b96f6a346f98adc4e3e depends: - __osx >=10.13 - - liblzma 5.6.4 hd471939_0 + - liblzma 5.8.1 hd471939_2 license: 0BSD - size: 113686 - timestamp: 1738525464050 + size: 116356 + timestamp: 1749230171181 - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.4-h2466b09_0.conda sha256: 9b185dc6889843f6660584be226c45c048e9b18598642e7455b69e277587c872 md5: 1e5c2564c8615e8ed993ff634e4181a9 @@ -3186,32 +3222,32 @@ packages: license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda - sha256: b9332bd8d47a72b7b8fa2ae13c24387ed4f5fd4e1f7ecf0031068c6a755267ae - md5: 23c629eba5239465a34bca0ed9c0b5d3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-he1bc88e_1.conda + sha256: 248871154c6f86f0c6d456872457ad4f5799e23c09512a473041da3b9b9ee83c + md5: 1d31029d8d2685d56a812dec48083483 depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 608447 - timestamp: 1733443783886 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda - sha256: 084dd4dde342f13c43ee418d153ac5b2610f95be029073a15fa9dda22b130d06 - md5: 77eaa84f90fc90643c5a0be0aa9bdd1b + size: 611430 + timestamp: 1754315569848 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h741aa76_1.conda + sha256: 32fa908bb2f2a6636dab0edaac1d4bf5ff62ad404a82d8bb16702bc5b8eb9114 + md5: aeb49dc1f5531de13d2c0d57ffa6d0c8 depends: - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 1612294 - timestamp: 1733443909984 + size: 1519401 + timestamp: 1754315497781 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -3704,6 +3740,16 @@ packages: license_family: BSD size: 889287 timestamp: 1750615908735 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda + sha256: afe32182b1090911b64ac0f29eb47e03a015d142833d8a917defd65d91c99b74 + md5: aa0028616c0750c773698fdc254b2b8d + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + size: 102292 + timestamp: 1753873557076 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d md5: a49c2283f24696a7b30367b7346a0144 @@ -3823,6 +3869,62 @@ packages: license_family: BSD size: 6730 timestamp: 1723823139725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.8.1.1-novtk_h9a8ab00_100.conda + sha256: c232420f79ea822ba777c301839f859e7fa2b52f8bd2aa3a87244075a59a75de + md5: 6d87689e9c120801a7bd3e62ecf62bb9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - occt 7.8.1 *novtk* + - occt >=7.8.1,<7.8.2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - svgwrite + constrains: + - occt 7.8.1 *novtk* + license: LGPL-3.0-or-later + license_family: LGPL + size: 58088195 + timestamp: 1734428515614 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda + sha256: 067307705005656e692421481a9ca5edcaea01aafae20b19077b3f85ec82248d + md5: 1f51ba5cb8c3ae3b087bf727b088c7dc + depends: + - __osx >=10.13 + - libcxx >=18 + - numpy >=1.19,<3 + - occt 7.8.1 *novtk* + - occt >=7.8.1,<7.8.2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - svgwrite + constrains: + - occt 7.8.1 *novtk* + license: LGPL-3.0-or-later + license_family: LGPL + size: 45956286 + timestamp: 1734427012959 +- conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda + sha256: 4975251069b5929edd112fd25ef0a79c784b68976d6b851ec7cf9be992c1232b + md5: d2eb7ca3ace2e6f8f0ff44cd37baf3d9 + depends: + - numpy >=1.19,<3 + - occt 7.8.1 *novtk* + - occt >=7.8.1,<7.8.2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - svgwrite + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - occt 7.8.1 *novtk* + license: LGPL-3.0-or-later + license_family: LGPL + size: 39954303 + timestamp: 1734428743098 - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda sha256: 645e408a91d3c3bea6cbb24e0c208222eb45694978b48e0224424369271ca0ef md5: d6e98530772fc26c112640461110d127 @@ -3901,6 +4003,16 @@ packages: license_family: MIT size: 213817 timestamp: 1643442169866 +- conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda + sha256: 0571b8426cd6fab05cd0639d4a5203e0f01ba8da75b48ed7b7b1103445e6a3b2 + md5: 9a13b437c86284d668ba1ad03647f6c7 + depends: + - pyparsing >=2.0.1 + - python >=3.9 + license: MIT + license_family: MIT + size: 55407 + timestamp: 1734380310892 - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda sha256: 4771f7a2323d7f3c4d42b1c8ed670335ede7e78b80d8ba17d3c40b781dedcbdc md5: 0e4da15e507b716140699aca1a279a88 @@ -4009,16 +4121,16 @@ packages: license_family: MIT size: 21238 timestamp: 1753796677376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - sha256: 4f52390e331ea8b9019b87effaebc4f80c6466d09f68453f52d5cdc2a3e1194f - md5: e523f4f1e980ed7a4240d7e27e9ec81f +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 + md5: 0caa1af407ecff61170c9437a808404d depends: - - python >=3.9 + - python >=3.10 - python license: PSF-2.0 license_family: PSF - size: 51065 - timestamp: 1751643513473 + size: 51692 + timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de md5: dbcace4706afdfb7eb891f7b37d07c04 @@ -4044,26 +4156,38 @@ packages: license_family: BSD size: 17693 timestamp: 1737627189024 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-h6356254_24.conda - sha256: abda97b8728cf6e3c37df8f1178adde7219bed38b96e392cb3be66336386d32e - md5: 2441e010ee255e6a38bf16705a756e94 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_31.conda + sha256: af4b4b354b87a9a8d05b8064ff1ea0b47083274f7c30b4eb96bc2312c9b5f08f + md5: 603e41da40a765fd47995faa021da946 + depends: + - ucrt >=10.0.20348.0 + - vcomp14 14.44.35208 h818238b_31 + constrains: + - vs2015_runtime 14.44.35208.* *_31 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + size: 682424 + timestamp: 1753739239305 +- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda + sha256: 67b317b64f47635415776718d25170a9a6f9a1218c0f5a6202bfd687e07b6ea4 + md5: a6b1d5c1fc3cb89f88f7179ee6a9afe3 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.42.34433.* *_24 + - vs2015_runtime 14.44.35208.* *_31 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary - size: 753531 - timestamp: 1737627061911 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hfef2bbc_24.conda - sha256: 09102e0bd283af65772c052d85028410b0c31989b3cd96c260485d28e270836e - md5: 117fcc5b86c48f3b322b0722258c7259 + size: 113963 + timestamp: 1753739198723 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_31.conda + sha256: 8b20152d00e1153ccb1ed377a160110482f286a6d85a82b57ffcd60517d523a7 + md5: d75abcfbc522ccd98082a8c603fce34c depends: - - vc14_runtime >=14.42.34433 + - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 17669 - timestamp: 1737627066773 + size: 18249 + timestamp: 1753739241918 - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_24.conda sha256: 4125acd871ba3498f25799b1999bf0fa4d80b0b353eb56ac170809f9eda19dd1 md5: 41aaa71a5d4f668f5795c0647eeea776 @@ -4163,31 +4287,31 @@ packages: license_family: MIT size: 379686 timestamp: 1731860547604 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.4-hbcc6ac9_0.conda - sha256: 91fc251034fa5199919680aa50299296d89da54b2d066fb6e6a60461c17c0c4a - md5: bb511c87804cf7220246a3a6efc45c22 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + sha256: 802725371682ea06053971db5b4fb7fbbcaee9cb1804ec688f55e51d74660617 + md5: 68eae977d7d1196d32b636a026dc015d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.4 hb9d3cd8_0 - - liblzma-devel 5.6.4 hb9d3cd8_0 - - xz-gpl-tools 5.6.4 hbcc6ac9_0 - - xz-tools 5.6.4 hb9d3cd8_0 + - liblzma 5.8.1 hb9d3cd8_2 + - liblzma-devel 5.8.1 hb9d3cd8_2 + - xz-gpl-tools 5.8.1 hbcc6ac9_2 + - xz-tools 5.8.1 hb9d3cd8_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23477 - timestamp: 1738525395307 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.4-h357f2ed_0.conda - sha256: 6412811e1592b530e84ea5030dedd7088fbe3258fdad9e60253d681b5be367a2 - md5: 702db4b35cffa4f94b94414066ffbb2b + size: 23987 + timestamp: 1749230104359 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + sha256: 89248de6c9417522b6fec011dc26b81c25af731a31ba91e668f72f1b9aab05d7 + md5: 7eee908c7df8478c1f35b28efa2e42b1 depends: - __osx >=10.13 - - liblzma 5.6.4 hd471939_0 - - liblzma-devel 5.6.4 hd471939_0 - - xz-gpl-tools 5.6.4 h357f2ed_0 - - xz-tools 5.6.4 hd471939_0 + - liblzma 5.8.1 hd471939_2 + - liblzma-devel 5.8.1 hd471939_2 + - xz-gpl-tools 5.8.1 h357f2ed_2 + - xz-tools 5.8.1 hd471939_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23585 - timestamp: 1738525517200 + size: 24033 + timestamp: 1749230223096 - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.4-h208afaa_0.conda sha256: 26d5a1569c391566d42e7094aa5a3695487cf6c5cf33f45a7bb750bbcaca79fc md5: 97e1f122231e057a3da5cd32affcc9c2 @@ -4201,44 +4325,52 @@ packages: license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later size: 23977 timestamp: 1738525637903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.4-hbcc6ac9_0.conda - sha256: 300fc4e5993a36c979e61b1a38d00f0c23c0c56d5989be537cbc7bd8658254ed - md5: 246840b451f7a66bd68869e56b066dd5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + sha256: 840838dca829ec53f1160f3fca6dbfc43f2388b85f15d3e867e69109b168b87b + md5: bf627c16aa26231720af037a2709ab09 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.4 hb9d3cd8_0 + - liblzma 5.8.1 hb9d3cd8_2 + constrains: + - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33285 - timestamp: 1738525381548 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.4-h357f2ed_0.conda - sha256: 57430768c0f26413dadec7fa4ac203984372a67e906a271f68777d1ad0085d20 - md5: bbe2c5315d02654eb195bdf012bad66c + size: 33911 + timestamp: 1749230090353 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + sha256: 5cdadfff31de7f50d1b2f919dd80697c0a08d90f8d6fb89f00c93751ec135c3c + md5: d4044359fad6af47224e9ef483118378 depends: - __osx >=10.13 - - liblzma 5.6.4 hd471939_0 + - liblzma 5.8.1 hd471939_2 + constrains: + - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33480 - timestamp: 1738525498669 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.4-hb9d3cd8_0.conda - sha256: 57506a312d8cfbee98217fb382822bd49794ea6318dd4e0413a0d588dc6f4f69 - md5: a098f9f949af52610fdceb8e35b57513 + size: 33890 + timestamp: 1749230206830 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda + sha256: 58034f3fca491075c14e61568ad8b25de00cb3ae479de3e69be6d7ee5d3ace28 + md5: 1bad2995c8f1c8075c6c331bf96e46fb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.4 hb9d3cd8_0 + - liblzma 5.8.1 hb9d3cd8_2 + constrains: + - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later - size: 89735 - timestamp: 1738525367692 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.4-hd471939_0.conda - sha256: 5361cadd518a24a19b009cfea1c113bea979b040858a15bbbd3a58c4d4f9774a - md5: 479783497192d1ad6671cbd0080f6dcb + size: 96433 + timestamp: 1749230076687 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda + sha256: 3b1d8958f8dceaa4442100d5326b2ec9bcc2e8d7ee55345bf7101dc362fb9868 + md5: 349148960ad74aece88028f2b5c62c51 depends: - __osx >=10.13 - - liblzma 5.6.4 hd471939_0 + - liblzma 5.8.1 hd471939_2 + constrains: + - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later - size: 81728 - timestamp: 1738525483936 + size: 85777 + timestamp: 1749230191007 - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda sha256: 100d88365523051c5542a2657598cb25a85feb387bba8fa7e4ccb99fa57ad3f6 md5: 213c6ca29a37cf0d84281d063368428d diff --git a/pixi.toml b/pixi.toml index 48923af5c2..2b98462902 100644 --- a/pixi.toml +++ b/pixi.toml @@ -9,6 +9,7 @@ platforms = ["win-64", "linux-64", "osx-64"] common = { features = ["common"], no-default-feature = true } prod = { features = ["prod", "common"], no-default-feature = true } dev = { features = ["dev", "common"], no-default-feature = true } +#tests = { features = ["tests", "common"], no-default-feature = true } [feature.common.dependencies] # Build deps @@ -31,15 +32,26 @@ mpfr = "*" gmp = "*" nlohmann_json = "*" zlib = "*" -pytest = "*" +pythonocc-core = "*" +#[feature.tests.dependencies] +# tests +pytest = "*" +#shapely = "*" +#tabulate = "*" +#isodate = "*" +#python-dateutil = "*" +#xmlschema = "*" +#xsdata = "*" +#lxml = "*" +#networkx = "*" [feature.common.target.win-64.dependencies] vs2022_win-64 = "*" #vs_win-64 = "*" # Visual Studio #vswhere = "*" # Visual Studio -[feature.common.target.win-64.tasks] +[feature.common.tasks] init-submodules = { cmd = "git submodule update --init --recursive", outputs =["$PIXI_PROJECT_ROOT/src/svgfill/3rdparty/svgpp/*"]} [feature.prod.target.win-64.tasks] @@ -47,12 +59,15 @@ configure-release = { cmd = ["cmake", "--preset", "win-release", "-B", "build/wi build-release = { cmd = ["cmake", "--build", "build/win-release", "--config", "Release"], description = "Build the project" } [feature.dev.target.win-64.tasks] -configure-debug = { cmd = ["cmake", "--preset", "win-debug", "-B", "build/win-debug", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["$PIXI_PROJECT_ROOT/build/win-debug/CMakeCache.txt"] } -build-debug = { cmd = ["cmake", "--build", "build/win-debug", "--config", "Debug"], description = "Build the project" } +configure-debug = { cmd = ["cmake", "--preset", "win-debug", "-B", "build/win-debug", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["build/win-debug/CMakeCache.txt"] } +build-debug = { cmd = ["cmake", "--build", "build/win-debug", "--config", "Debug"], description = "Build the project", depends-on = ["configure-debug"] } install-debug = { cmd = ["cmake", "--install", "build/win-debug", "--config", "Debug"], description = "Install the project" } # Optionally Install files to your desired env using --prefix vsdebug = { cmd = ["python"], description = "Run a python script with vs debugger attached" } +#[feature.tests.target.win-64.tasks] +test = { cmd = "pytest test/test_sweeps.py"} + [feature.common.target.win-64.activation] #scripts = ["cmake/activate.bat"] \ No newline at end of file diff --git a/test/input_temp/.gitignore b/test/input_temp/.gitignore new file mode 100644 index 0000000000..bdc9933c2c --- /dev/null +++ b/test/input_temp/.gitignore @@ -0,0 +1 @@ +*.glb \ No newline at end of file diff --git a/test/input_temp/pipe.ifc b/test/input_temp/pipe.ifc new file mode 100644 index 0000000000..724ad84230 --- /dev/null +++ b/test/input_temp/pipe.ifc @@ -0,0 +1,119 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2025-02-14T16:16:53',(''),(''),'IfcOpenShell 0.8.1-c49ca69','IfcOpenShell 0.8.1-c49ca69',''); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'Pravin.Muthukrishnan',$,$,$,$,$); +#2=IFCORGANIZATION($,'BG&E Pty Ltd','BG&E Pty Ltd',$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'15.0C1n','12d Model','12d Model'); +#5=IFCOWNERHISTORY(#3,#4,$,.NOCHANGE.,$,$,$,1739508662); +#6=IFCCARTESIANPOINT((0.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCDIRECTION((1.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#6,#7,#8); +#10=IFCDIRECTION((0.,1.,0.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-06,#9,#10); +#12=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#13=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#14=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#15=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#16=IFCUNITASSIGNMENT((#12,#13,#14,#15)); +#17=IFCPROJECT('3f4tUCcZz5OBp_RAlF3Yjd',#5,'DRAINAGE DESIGN','No description set',$,$,$,(#11),#16); +#18=IFCPERSON($,$,'Pravin.Muthukrishnan',$,$,$,$,$); +#19=IFCORGANIZATION($,'BG&E Pty Ltd','BG&E Pty Ltd',$,$); +#20=IFCPERSONANDORGANIZATION(#18,#19,$); +#21=IFCAPPLICATION(#19,'15.0C1n','12d Model','12d Model'); +#22=IFCOWNERHISTORY(#20,#21,$,.NOCHANGE.,$,$,$,1739508662); +#30=IFCCARTESIANPOINT((0.,0.)); +#31=IFCAXIS2PLACEMENT2D(#30,$); +#32=IFCCIRCLEPROFILEDEF(.AREA.,$,#31,0.179); +#33=IFCCARTESIANPOINT((289080.818499209,5822851.36621952,118.886)); +#34=IFCCARTESIANPOINT((289081.570466963,5822857.54453541,118.886)); +#35=IFCPOLYLINE((#33,#34)); +#36=IFCDIRECTION((1.,0.,0.)); +#37=IFCFIXEDREFERENCESWEPTAREASOLID(#32,$,#35,$,$,#36); +#38=IFCSHAPEREPRESENTATION(#11,'Body','AdvancedSweptSolid',(#37)); +#39=IFCPRODUCTDEFINITIONSHAPE($,$,(#38)); +#40=IFCFLOWSEGMENT('1iJOpv7cX1SBoQLaHDDolV',#108,'5','5-1 to 1-1','EXISTING (RETAINED)',#103,#39,$); +#41=IFCRELDEFINESBYPROPERTIES('10rIwnj8r8RR3PKc1TXqSB',#22,'12d Model','Attributes',(#40),#94); +#42=IFCPROPERTYSINGLEVALUE('calculated critical cover chainage',$,IFCREAL(2.24873590275508),$); +#43=IFCPROPERTYSINGLEVALUE('nominal diameter',$,IFCREAL(0.3),$); +#44=IFCPROPERTYSINGLEVALUE('pipe id',$,IFCINTEGER(35),$); +#45=IFCPROPERTYSINGLEVALUE('colour',$,IFCLABEL('orange'),$); +#46=IFCPROPERTYSINGLEVALUE('group',$,IFCLABEL('EX'),$); +#47=IFCCOMPLEXPROPERTY('pipe sched','12d_attribute_group',$,(#46)); +#48=IFCPROPERTYSINGLEVALUE('name',$,IFCLABEL('EX'),$); +#49=IFCCOMPLEXPROPERTY('lplot','12d_attribute_group',$,(#48)); +#50=IFCPROPERTYSINGLEVALUE('pipe name',$,IFCLABEL('5-1 to 1-1'),$); +#51=IFCPROPERTYSINGLEVALUE('calculated direct pipe flow total minor',$,IFCREAL(0.),$); +#52=IFCPROPERTYSINGLEVALUE('calculated direct pipe flow total major',$,IFCREAL(0.),$); +#53=IFCPROPERTYSINGLEVALUE('calculated direct pit and pipe flow total minor',$,IFCREAL(0.),$); +#54=IFCPROPERTYSINGLEVALUE('calculated direct pit and pipe flow total major',$,IFCREAL(0.),$); +#55=IFCPROPERTYSINGLEVALUE('pipe type',$,IFCLABEL('EXISTING (RETAINED)'),$); +#56=IFCPROPERTYSINGLEVALUE('roughness text',$,IFCLABEL('n=0.013'),$); +#57=IFCPROPERTYSINGLEVALUE('calculated design grade minimum',$,IFCREAL(1.),$); +#58=IFCPROPERTYSINGLEVALUE('calculated pipe length',$,IFCREAL(7.19890895752825),$); +#59=IFCPROPERTYSINGLEVALUE('invert us',$,IFCREAL(118.736),$); +#60=IFCPROPERTYSINGLEVALUE('invert ds',$,IFCREAL(118.736),$); +#61=IFCPROPERTYSINGLEVALUE('calculated pipe grade',$,IFCREAL(-0.),$); +#62=IFCPROPERTYSINGLEVALUE('calculated pipe vert angle',$,IFCREAL(0.),$); +#63=IFCPROPERTYSINGLEVALUE('calculated pipe grade 1 in',$,IFCREAL(1000000.),$); +#64=IFCPROPERTYSINGLEVALUE('pipe size',$,IFCLABEL('300'),$); +#65=IFCPROPERTYSINGLEVALUE('diameter',$,IFCREAL(0.3),$); +#66=IFCPROPERTYSINGLEVALUE('nominal pipe size',$,IFCLABEL('300'),$); +#67=IFCPROPERTYSINGLEVALUE('calculated us deflection',$,IFCREAL(0.),$); +#68=IFCPROPERTYSINGLEVALUE('calculated ds deflection',$,IFCREAL(89.4496469263205),$); +#69=IFCPROPERTYSINGLEVALUE('calculated design drop',$,IFCREAL(0.02),$); +#70=IFCPROPERTYSINGLEVALUE('calculated drop',$,IFCREAL(0.),$); +#71=IFCPROPERTYSINGLEVALUE('calculated pipe vert ds deflection angle',$,IFCREAL(-4.09980829540645),$); +#72=IFCPROPERTYSINGLEVALUE('calculated design cover',$,IFCREAL(1.1),$); +#73=IFCPROPERTYSINGLEVALUE('minimum cover',$,IFCREAL(1.67561504823626),$); +#74=IFCPROPERTYSINGLEVALUE('pipe colour',$,IFCINTEGER(8),$); +#75=IFCPROPERTYSINGLEVALUE('conduit shape',$,IFCLABEL('Circular'),$); +#76=IFCPROPERTYSINGLEVALUE('calculated invert us',$,IFCREAL(118.736),$); +#77=IFCPROPERTYSINGLEVALUE('calculated invert ds',$,IFCREAL(118.736),$); +#78=IFCPROPERTYSINGLEVALUE('calculated hgl us',$,IFCREAL(118.736),$); +#79=IFCPROPERTYSINGLEVALUE('calculated hgl ds',$,IFCREAL(118.736),$); +#80=IFCPROPERTYSINGLEVALUE('lock us il',$,IFCINTEGER(1),$); +#81=IFCPROPERTYSINGLEVALUE('lock ds il',$,IFCINTEGER(1),$); +#82=IFCPROPERTYSINGLEVALUE('critical barrel',$,IFCINTEGER(0),$); +#83=IFCPROPERTYSINGLEVALUE('critical side',$,IFCINTEGER(0),$); +#84=IFCPROPERTYSINGLEVALUE('Pipe Name',$,IFCLABEL('5-1 to 1-1'),$); +#85=IFCPROPERTYSINGLEVALUE('Pipe Type',$,IFCLABEL('EXISTING (RETAINED)'),$); +#86=IFCPROPERTYSINGLEVALUE('Justification',$,IFCLABEL('Invert'),$); +#87=IFCPROPERTYSINGLEVALUE('Start x',$,IFCREAL(289080.818499209),$); +#88=IFCPROPERTYSINGLEVALUE('Start y',$,IFCREAL(5822851.36621952),$); +#89=IFCPROPERTYSINGLEVALUE('Start z',$,IFCREAL(118.736),$); +#90=IFCPROPERTYSINGLEVALUE('End x',$,IFCREAL(289081.570466963),$); +#91=IFCPROPERTYSINGLEVALUE('End y',$,IFCREAL(5822857.54453541),$); +#92=IFCPROPERTYSINGLEVALUE('End z',$,IFCREAL(118.736),$); +#93=IFCCOMPLEXPROPERTY('Geometry','12d_attribute_group',$,(#86,#87,#88,#89,#90,#91,#92)); +#94=IFCPROPERTYSET('0pqqHlNsb54w9VRYcNog0C',#22,'12d Model',$,(#42,#43,#44,#45,#47,#49,#50,#51,#52,#53,#54,#55,#56,#57,#58,#59,#60,#61,#62,#63,#64,#65,#66,#67,#68,#69,#70,#71,#72,#73,#74,#75,#76,#77,#78,#79,#80,#81,#82,#83,#84,#85,#93)); +#95=IFCSTYLEDITEM(#37,(#98),$); +#96=IFCCOLOURRGB('orange',1.,0.647058823529412,0.); +#97=IFCSURFACESTYLERENDERING(#96,$,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.00390625),IFCSPECULAREXPONENT(10.),.NOTDEFINED.); +#98=IFCSURFACESTYLE($,.POSITIVE.,(#97)); +#99=IFCCARTESIANPOINT((0.,0.,0.)); +#100=IFCDIRECTION((0.,0.,1.)); +#101=IFCDIRECTION((1.,0.,0.)); +#102=IFCAXIS2PLACEMENT3D(#99,#100,#101); +#103=IFCLOCALPLACEMENT($,#102); +#104=IFCACTORROLE(.USERDEFINED.,'CONTRIBUTOR',$); +#105=IFCTELECOMADDRESS(.USERDEFINED.,$,'WEBPAGE',$,$,$,$,'https://ifcopenshell.org',$); +#106=IFCORGANIZATION('IfcOpenShell','IfcOpenShell','IfcOpenShell is an open source software library that helps users and software developers to work with IFC data.',(#104),(#105)); +#107=IFCAPPLICATION(#106,'0.8.1-alpha250208-3832077','Bonsai','Bonsai'); +#108=IFCOWNERHISTORY(#20,#21,$,.MODIFIED.,1739510213,#3,#107,1739508662); +#114=IFCSITE('2CTfxIYCTCsRAvUEqFZoH3',#120,'Default Site','Description of Default Site',$,#119,$,$,.ELEMENT.,$,$,$,$,$); +#115=IFCCARTESIANPOINT((0.,0.,0.)); +#116=IFCDIRECTION((0.,0.,1.)); +#117=IFCDIRECTION((1.,0.,0.)); +#118=IFCAXIS2PLACEMENT3D(#115,#116,#117); +#119=IFCLOCALPLACEMENT($,#118); +#120=IFCOWNERHISTORY(#20,#21,$,.MODIFIED.,1739510213,#3,#107,1739508662); +#121=IFCRELCONTAINEDINSPATIALSTRUCTURE('05AVd4pPf1jeS4OU20v7N9',#5,$,$,(#40),#114); +#122=IFCRELAGGREGATES('3PxVuUIG14dQdQEHf8wUca',#5,$,$,#17,(#114)); +ENDSEC; +END-ISO-10303-21; diff --git a/test/test_sweeps.py b/test/test_sweeps.py index f38d3c7ee1..a0b1a617e1 100644 --- a/test/test_sweeps.py +++ b/test/test_sweeps.py @@ -23,6 +23,9 @@ def _size_from_bbox(mn, mx): def _triples(flat: Sequence[float]) -> List[Tuple[float, float, float]]: return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] +def load_ifc_occ_shape(ifc_path: str) -> TopoDS_Shape: + ... + def load_ifc_mesh_bbox(ifc_path: str): """Load first product's mesh from IFC using ifcopenshell.geom and return bbox and size.""" try: @@ -59,4 +62,10 @@ def test_dir(): return pathlib.Path(__file__).parent.resolve().absolute() def test_simple_sweep_1(test_dir): ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(test_dir / "input_temp/simple_sweep_1.ifc") - assert ifc_sz == pytest.approx((1.1, 0.1, 0.89578254)) \ No newline at end of file + assert ifc_sz == pytest.approx((1.1, 0.1, 0.89578254)) + +def test_pipe_12d(test_dir): + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(test_dir / "input_temp/pipe.ifc") + assert ifc_sz == pytest.approx((1.1068712115520611, 6.2215114729478955, 0.35776115971654576)) + assert ifc_mn == pytest.approx((289080.64128449163, 5822851.344592881, 118.70711942014172)) + assert ifc_mx == pytest.approx((289081.7481557032, 5822857.566104354, 119.06488057985827)) From 2369f727980a734a7515fa441e8522cdb25ca0b2 Mon Sep 17 00:00:00 2001 From: krande Date: Tue, 26 Aug 2025 21:24:40 +0200 Subject: [PATCH 07/39] Improve `IfcFixedReferenceSweptAreaSolid` handling and add swept shape tests Enhances geometry processing for swept area solids by integrating matrix transformations. Includes new utility `_is_swept_shape` for topology analysis, extends testing with `load_ifc_occ_shape`, and updates schema versions in CMake presets. --- cmake/CMakePresets.json | 2 +- .../IfcFixedReferenceSweptAreaSolid.cpp | 9 +- test/test_sweeps.py | 149 +++++++++++++++++- 3 files changed, 155 insertions(+), 5 deletions(-) diff --git a/cmake/CMakePresets.json b/cmake/CMakePresets.json index c36dd0990a..6a611bb98f 100644 --- a/cmake/CMakePresets.json +++ b/cmake/CMakePresets.json @@ -16,7 +16,7 @@ "BUILD_IFCMAX": "OFF", "IFCXML_SUPPORT": "ON", "HDF5_SUPPORT": "ON", - "SCHEMA_VERSIONS": "4x3_add2", + "SCHEMA_VERSIONS": "4;4x3_add2", "CITYJSON_SUPPORT": "OFF", "CMAKE_GENERATOR_PLATFORM": "", "CMAKE_GENERATOR_TOOLSET": "" diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index c6992c3957..9bc33fe8fd 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -115,9 +115,16 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid } } } else { + taxonomy::matrix4::ptr matrix; + bool has_position = true; + has_position = inst->Position() != nullptr; + auto pos = inst->Position(); + if (has_position) { + matrix = taxonomy::cast(map(inst->Position())); + } // TODO: Implement handling for non-alignment curves using sweep_along_curve auto sweep = taxonomy::make( - nullptr, // matrix4::ptr - no transformation needed + matrix, // matrix4::ptr - no transformation needed profile, // face::ptr - the profile to sweep nullptr, // item::ptr surface - not used for fixed reference sweep dir // item::ptr curve - the directrix curve diff --git a/test/test_sweeps.py b/test/test_sweeps.py index a0b1a617e1..c969011920 100644 --- a/test/test_sweeps.py +++ b/test/test_sweeps.py @@ -3,6 +3,8 @@ from typing import List, Sequence, Tuple import ifcopenshell import pytest +from OCC.Core.BRep import BRep_Tool +from OCC.Core.TopoDS import TopoDS_Shape, TopoDS_Compound def _bbox_from_vertices(verts: List[Tuple[float, float, float]]): @@ -23,8 +25,143 @@ def _size_from_bbox(mn, mx): def _triples(flat: Sequence[float]) -> List[Tuple[float, float, float]]: return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] +def _is_swept_shape(occ_shape: TopoDS_Shape) -> bool: + """Analyze if the given OpenCASCADE shape represents a swept shape using topology exploration.""" + try: + from OCC.Core.TopExp import TopExp_Explorer + from OCC.Core.TopAbs import TopAbs_FACE, TopAbs_EDGE, TopAbs_WIRE + from OCC.Core.BRep_Tool import BRep_Tool + from OCC.Core.GeomLProp_SLProps import GeomLProp_SLProps + from OCC.Core.BRepAdaptor_Surface import BRepAdaptor_Surface + from OCC.Core.GeomAbs import GeomAbs_Cylinder, GeomAbs_Plane, GeomAbs_SurfaceOfExtrusion, GeomAbs_SurfaceOfRevolution + from OCC.Core.gp import gp_Vec + import math + except ImportError as e: + raise RuntimeError("pythonocc-core not available for topology analysis") from e + + if occ_shape.IsNull(): + return False + + # Explore faces to look for swept surface characteristics + face_explorer = TopExp_Explorer(occ_shape, TopAbs_FACE) + swept_indicators = 0 + total_faces = 0 + + while face_explorer.More(): + face = face_explorer.Current() + total_faces += 1 + + # Get the surface adaptor for this face + surface_adaptor = BRepAdaptor_Surface(face) + surface_type = surface_adaptor.GetType() + + # Check for surface types that indicate swept geometry + if surface_type in [GeomAbs_Cylinder, GeomAbs_SurfaceOfExtrusion, GeomAbs_SurfaceOfRevolution]: + swept_indicators += 1 + + # For planar surfaces, check if they form a pattern consistent with swept geometry + elif surface_type == GeomAbs_Plane: + # Analyze if planar faces are arranged in a swept pattern + # This is a simplified check - could be enhanced further + if _has_parallel_opposite_faces(occ_shape, face): + swept_indicators += 0.5 # Partial indicator + + face_explorer.Next() + + # Additional check: analyze edge patterns for swept characteristics + edge_analysis = _analyze_edge_patterns(occ_shape) + + # Determine if this is likely a swept shape + # If more than 50% of faces show swept characteristics, or we have strong edge patterns + swept_ratio = swept_indicators / max(total_faces, 1) + is_swept = swept_ratio > 0.5 or edge_analysis + + if is_swept: + print(f"Swept shape analysis: {swept_indicators}/{total_faces} faces show swept characteristics") + if edge_analysis: + print("Edge pattern analysis also indicates swept geometry") + + return is_swept + + +def _has_parallel_opposite_faces(shape: TopoDS_Shape, reference_face) -> bool: + """Check if the shape has faces parallel to the reference face (indicating extrusion).""" + try: + from OCC.Core.TopExp import TopExp_Explorer + from OCC.Core.TopAbs import TopAbs_FACE + from OCC.Core.BRepAdaptor_Surface import BRepAdaptor_Surface + from OCC.Core.GeomAbs import GeomAbs_Plane + from OCC.Core.gp import gp_Vec + import math + + ref_adaptor = BRepAdaptor_Surface(reference_face) + if ref_adaptor.GetType() != GeomAbs_Plane: + return False + + ref_normal = ref_adaptor.Plane().Axis().Direction() + + face_explorer = TopExp_Explorer(shape, TopAbs_FACE) + while face_explorer.More(): + face = face_explorer.Current() + if not face.IsSame(reference_face): + face_adaptor = BRepAdaptor_Surface(face) + if face_adaptor.GetType() == GeomAbs_Plane: + face_normal = face_adaptor.Plane().Axis().Direction() + # Check if normals are parallel (dot product close to ±1) + dot_product = abs(ref_normal.Dot(face_normal)) + if dot_product > 0.99: # Very close to parallel + return True + face_explorer.Next() + return False + except: + return False + + def load_ifc_occ_shape(ifc_path: str) -> TopoDS_Shape: - ... + try: + import ifcopenshell.geom as geom + except Exception as e: + raise RuntimeError("ifcopenshell.geom not available: cannot validate IFC geometry") from e + + settings = geom.settings() + settings.set(settings.USE_WORLD_COORDS, True) + settings.set("use-python-opencascade", True) + + # Open the IFC file + f = ifcopenshell.open(ifc_path) + + # Find the first representable product (prefer IfcBuildingElementProxy, then any product with representation) + products = f.by_type("IfcProduct") + target = None + for p in products: + if p.is_a("IfcBuildingElementProxy") and getattr(p, "Representation", None): + target = p + break + if target is None: + for p in products: + if getattr(p, "Representation", None): + target = p + break + if target is None: + raise RuntimeError("No representable product found in IFC for shape extraction") + + # Create the shape using ifcopenshell.geom with opencascade geometry library + shape_result = geom.create_shape(settings, target, geometry_library="opencascade") + + # Extract the OpenCASCADE TopoDS_Shape from the result + # The create_shape function returns an object with an occ_shape attribute when using opencascade + if hasattr(shape_result, 'geometry') and shape_result.geometry: + occ_shape = shape_result.geometry + if isinstance(occ_shape, TopoDS_Compound): + json_data = occ_shape.DumpJson() + print(json_data) + else: + raise NotImplemented(f"Unsupported shape type: {type(occ_shape)}") + + return occ_shape + else: + raise RuntimeError("Failed to extract OpenCASCADE shape from IFC geometry") + def load_ifc_mesh_bbox(ifc_path: str): """Load first product's mesh from IFC using ifcopenshell.geom and return bbox and size.""" @@ -61,11 +198,17 @@ def load_ifc_mesh_bbox(ifc_path: str): def test_dir(): return pathlib.Path(__file__).parent.resolve().absolute() def test_simple_sweep_1(test_dir): - ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(test_dir / "input_temp/simple_sweep_1.ifc") + ifc_file_path = test_dir / "input_temp/simple_sweep_1.ifc" + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) + occ_shape = load_ifc_occ_shape(ifc_file_path) + assert occ_shape is not None assert ifc_sz == pytest.approx((1.1, 0.1, 0.89578254)) def test_pipe_12d(test_dir): - ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(test_dir / "input_temp/pipe.ifc") + ifc_file_path = test_dir / "input_temp/pipe.ifc" + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) + occ_shape = load_ifc_occ_shape(ifc_file_path) + assert occ_shape is not None assert ifc_sz == pytest.approx((1.1068712115520611, 6.2215114729478955, 0.35776115971654576)) assert ifc_mn == pytest.approx((289080.64128449163, 5822851.344592881, 118.70711942014172)) assert ifc_mx == pytest.approx((289081.7481557032, 5822857.566104354, 119.06488057985827)) From 6d9650e8269a106cc8a51e41efde4a7557c8c168 Mon Sep 17 00:00:00 2001 From: krande Date: Tue, 26 Aug 2025 21:24:54 +0200 Subject: [PATCH 08/39] Update CMake presets: remove schema version 4 --- cmake/CMakePresets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CMakePresets.json b/cmake/CMakePresets.json index 6a611bb98f..c36dd0990a 100644 --- a/cmake/CMakePresets.json +++ b/cmake/CMakePresets.json @@ -16,7 +16,7 @@ "BUILD_IFCMAX": "OFF", "IFCXML_SUPPORT": "ON", "HDF5_SUPPORT": "ON", - "SCHEMA_VERSIONS": "4;4x3_add2", + "SCHEMA_VERSIONS": "4x3_add2", "CITYJSON_SUPPORT": "OFF", "CMAKE_GENERATOR_PLATFORM": "", "CMAKE_GENERATOR_TOOLSET": "" From 8420b98f3fe8f9b8742982e22198fb58b2cc7b97 Mon Sep 17 00:00:00 2001 From: krande Date: Wed, 27 Aug 2025 11:52:56 +0200 Subject: [PATCH 09/39] Simplify `IfcFixedReferenceSweptAreaSolid` position check logic --- src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index 9bc33fe8fd..805d51b572 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -116,10 +116,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid } } else { taxonomy::matrix4::ptr matrix; - bool has_position = true; - has_position = inst->Position() != nullptr; - auto pos = inst->Position(); - if (has_position) { + if (inst->Position() != nullptr) { matrix = taxonomy::cast(map(inst->Position())); } // TODO: Implement handling for non-alignment curves using sweep_along_curve From 604e0b0d94e4b9541b36d86e829c523604650e11 Mon Sep 17 00:00:00 2001 From: krande Date: Wed, 27 Aug 2025 11:53:34 +0200 Subject: [PATCH 10/39] Update `.gitignore` in test directory to include `*.tmp` files --- test/input_temp/.gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/input_temp/.gitignore b/test/input_temp/.gitignore index bdc9933c2c..fc33106236 100644 --- a/test/input_temp/.gitignore +++ b/test/input_temp/.gitignore @@ -1 +1,2 @@ -*.glb \ No newline at end of file +*.glb +*.tmp \ No newline at end of file From d01bf9690d2df49ccb6b6fb2c77586a928ce7a22 Mon Sep 17 00:00:00 2001 From: krande Date: Wed, 27 Aug 2025 12:11:02 +0200 Subject: [PATCH 11/39] Add test and input for `simple_sweep_2.ifc`; extend constructor for `sweep_along_curve` to support fixed reference swept area solids Includes `simple_sweep_2.ifc` test input, geometry validations in `test_sweeps.py`, and a new constructor for `sweep_along_curve` to handle directrix-based sweeps. --- .../IfcFixedReferenceSweptAreaSolid.cpp | 2 - src/ifcgeom/taxonomy.h | 3 + test/input_temp/simple_sweep_2.ifc | 74 +++++++++++++++++++ test/test_sweeps.py | 9 +++ 4 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 test/input_temp/simple_sweep_2.ifc diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index 805d51b572..16bdfa3c35 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -123,9 +123,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid auto sweep = taxonomy::make( matrix, // matrix4::ptr - no transformation needed profile, // face::ptr - the profile to sweep - nullptr, // item::ptr surface - not used for fixed reference sweep dir // item::ptr curve - the directrix curve - ); // Set the fixed reference direction for the sweep diff --git a/src/ifcgeom/taxonomy.h b/src/ifcgeom/taxonomy.h index af3aa33c4e..d099579cc9 100644 --- a/src/ifcgeom/taxonomy.h +++ b/src/ifcgeom/taxonomy.h @@ -1217,6 +1217,9 @@ typedef item const* ptr; sweep_along_curve(matrix4::ptr m, face::ptr basis, item::ptr surf, item::ptr crv) : sweep(m, basis), surface(surf), curve(crv) {} + // New constructor for fixed reference swept area solid + sweep_along_curve(matrix4::ptr m, face::ptr profile, item::ptr directrix) : sweep(m, profile), surface(nullptr), curve(directrix) { } + virtual size_t calc_hash() const { auto v = std::make_tuple(static_cast(SWEEP_ALONG_CURVE), matrix->hash_components(), basis->calc_hash(), surface->calc_hash(), curve->calc_hash()); return boost::hash{}(v); diff --git a/test/input_temp/simple_sweep_2.ifc b/test/input_temp/simple_sweep_2.ifc new file mode 100644 index 0000000000..11d70bcf81 --- /dev/null +++ b/test/input_temp/simple_sweep_2.ifc @@ -0,0 +1,74 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); +FILE_NAME('/dev/null','2025-08-27T11:12:44+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPROJECT('0bfgwqvaX7Vvg12DS5E4TH',$,'AdaProject',$,$,$,$,(#11),#6); +#2=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#3=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#4=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#5=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#6=IFCUNITASSIGNMENT((#4,#2,#5,#3)); +#7=IFCCARTESIANPOINT((0.,0.,0.)); +#8=IFCDIRECTION((0.,0.,1.)); +#9=IFCDIRECTION((1.,0.,0.)); +#10=IFCAXIS2PLACEMENT3D(#7,#8,#9); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#10,$); +#12=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#11,$,.MODEL_VIEW.,$); +#13=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#11,$,.GRAPH_VIEW.,$); +#14=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Box','Model',*,*,*,*,#11,$,.MODEL_VIEW.,$); +#15=IFCACTORROLE(.ENGINEER.,$,$); +#16=IFCPERSON('AdaUser',$,$,$,$,$,(#15),$); +#17=IFCORGANIZATION('ADA','Assembly For Design and Analysis',$,$,$); +#18=IFCPERSONANDORGANIZATION(#16,#17,$); +#19=IFCAPPLICATION(#17,'XXX','ADA','ADA'); +#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756285964); +#21=IFCDIRECTION((0.,0.,1.)); +#22=IFCDIRECTION((1.,0.,0.)); +#23=IFCCARTESIANPOINT((0.,0.,0.)); +#24=IFCAXIS2PLACEMENT3D(#23,#21,#22); +#25=IFCLOCALPLACEMENT($,#24); +#26=IFCSITE('1GDQO$O1L1QOKEaI81COHL',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); +#27=IFCRELAGGREGATES('34vxVzLRfCB8P7OThopnom',#20,'Project Container',$,#1,(#26)); +#28=IFCPROPERTYSINGLEVALUE('project',$,IFCTEXT('AdaProject'),$); +#29=IFCPROPERTYSINGLEVALUE('schema',$,IFCTEXT('IFC4X3_add2'),$); +#30=IFCPROPERTYSET('2hTgvJbh1B7RR4nwsOfRDy',#20,'Properties',$,(#28,#29)); +#31=IFCRELDEFINESBYPROPERTIES('2wzYfhPqT9hwqI5vOO4yex',#20,'Properties',$,(#26),#30); +#32=IFCMATERIAL('S355',$,'Steel'); +#33=IFCPROPERTYSINGLEVALUE('Grade',$,IFCTEXT('S355'),$); +#34=IFCPROPERTYSINGLEVALUE('YieldStress',$,IFCPRESSUREMEASURE(355000000.),$); +#35=IFCPROPERTYSINGLEVALUE('YoungModulus',$,IFCMODULUSOFELASTICITYMEASURE(210000000000.),$); +#36=IFCPROPERTYSINGLEVALUE('PoissonRatio',$,IFCPOSITIVERATIOMEASURE(0.3),$); +#37=IFCPROPERTYSINGLEVALUE('ThermalExpansionCoefficient',$,IFCTHERMALEXPANSIONCOEFFICIENTMEASURE(1.2E-05),$); +#38=IFCPROPERTYSINGLEVALUE('SpecificHeatCapacity',$,IFCSPECIFICHEATCAPACITYMEASURE(0.03),$); +#39=IFCPROPERTYSINGLEVALUE('MassDensity',$,IFCMASSDENSITYMEASURE(7850.),$); +#40=IFCMATERIALPROPERTIES('MaterialMechanical','A Material property description',(#33,#34,#35,#36,#37,#38,#39),#32); +#41=IFCRELASSOCIATESMATERIAL('0vr_O6t$T7vPWIa1EqEt6b',#20,'S355','Objects related to S355',(#64),#32); +#42=IFCDIRECTION((0.,0.,1.)); +#43=IFCDIRECTION((1.,0.,0.)); +#44=IFCCARTESIANPOINT((0.,0.,0.)); +#45=IFCAXIS2PLACEMENT3D(#44,#42,#43); +#46=IFCLOCALPLACEMENT(#25,#45); +#47=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.1),(0.1,0.),(0.1,0.1)),$); +#48=IFCINDEXEDPOLYCURVE(#47,(IFCLINEINDEX((3,1)),IFCLINEINDEX((1,2)),IFCLINEINDEX((2,4)),IFCLINEINDEX((4,3))),$); +#49=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#48); +#50=IFCCARTESIANPOINTLIST3D(((-100.,-50.,199.610854),(-100.,-50.,200.),(-99.974928791787,-49.9996866104928,199.513897412378),(-99.9060013418686,-49.998825019006,199.441251),(-99.3499585838692,-49.9918744730554,199.093724161494),(-99.2406758662487,-49.9607719931374,198.987781372709),(-99.2000000393918,-49.8803717417563,198.861230109006),(-99.2000000393918,-49.3859696738752,198.235404705615),(-99.1121322022443,-49.2544691526923,198.068948349419),(-98.9000000393918,-49.2000000638752,198.000000135615),(-98.3,-49.1999999172672,197.999999950035)),$); +#51=IFCINDEXEDPOLYCURVE(#50,(IFCLINEINDEX((2,1)),IFCARCINDEX((1,3,4)),IFCLINEINDEX((4,5)),IFCARCINDEX((5,6,7)),IFCLINEINDEX((7,8)),IFCARCINDEX((8,9,10)),IFCLINEINDEX((10,11))),$); +#52=IFCDIRECTION((1.,-0.,0.)); +#53=IFCCARTESIANPOINT((0.,0.,0.)); +#54=IFCDIRECTION((0.,0.,-1.)); +#55=IFCDIRECTION((0.,1.,0.)); +#56=IFCAXIS2PLACEMENT3D(#53,#54,#55); +#57=IFCFIXEDREFERENCESWEPTAREASOLID(#49,#56,#51,$,$,#52); +#58=IFCSHAPEREPRESENTATION(#12,'Body','AdvancedSweptSolid',(#57)); +#59=IFCPRODUCTDEFINITIONSHAPE($,$,(#58)); +#60=IFCCOLOURRGB('Color1',0.8,0.8,0.8); +#61=IFCSURFACESTYLESHADING(#60,0.); +#62=IFCSURFACESTYLE('Color1',.BOTH.,(#61)); +#63=IFCSTYLEDITEM(#57,(#62),'Color1'); +#64=IFCBUILDINGELEMENTPROXY('0pDZhwPyT3dRMnPGA47kAn',#20,'sweep1',$,$,#46,#59,$,$); +#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('196Q7zPfr4LxqeArD0gmJa',#20,'Physical model',$,(#64),#26); +ENDSEC; +END-ISO-10303-21; diff --git a/test/test_sweeps.py b/test/test_sweeps.py index c969011920..f275bb5c98 100644 --- a/test/test_sweeps.py +++ b/test/test_sweeps.py @@ -204,6 +204,15 @@ def test_simple_sweep_1(test_dir): assert occ_shape is not None assert ifc_sz == pytest.approx((1.1, 0.1, 0.89578254)) +def test_simple_sweep_2(test_dir): + ifc_file_path = test_dir / "input_temp/simple_sweep_2.ifc" + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) + occ_shape = load_ifc_occ_shape(ifc_file_path) + assert occ_shape is not None + assert ifc_sz == pytest.approx((1.800000679914902, 0.9243618756667757, 2.0958492522636902)) + assert ifc_mn == pytest.approx((-100.1, -50.0, 197.9041507477363)) + assert ifc_mx == pytest.approx((-98.29999932008509, -49.075638124333224, 200.0)) + def test_pipe_12d(test_dir): ifc_file_path = test_dir / "input_temp/pipe.ifc" ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) From 9dd7b488d65b67bb60ba656dd7661e17bc471542 Mon Sep 17 00:00:00 2001 From: krande Date: Wed, 27 Aug 2025 13:55:42 +0200 Subject: [PATCH 12/39] Refactor and extend swept shape tests; adjust comments and import structure Improves formatting and readability in `test_sweeps.py`, adjusts imports and comments, and adds assertions for geometry validation in `simple_sweep_1.ifc` and `simple_sweep_2.ifc` tests. Updates code comments in `IfcFixedReferenceSweptAreaSolid`. --- .../IfcFixedReferenceSweptAreaSolid.cpp | 2 +- test/test_sweeps.py | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index 16bdfa3c35..6506705605 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -121,7 +121,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid } // TODO: Implement handling for non-alignment curves using sweep_along_curve auto sweep = taxonomy::make( - matrix, // matrix4::ptr - no transformation needed + matrix, // matrix4::ptr - no transformation needed profile, // face::ptr - the profile to sweep dir // item::ptr curve - the directrix curve ); diff --git a/test/test_sweeps.py b/test/test_sweeps.py index f275bb5c98..e78fb9499f 100644 --- a/test/test_sweeps.py +++ b/test/test_sweeps.py @@ -3,7 +3,6 @@ from typing import List, Sequence, Tuple import ifcopenshell import pytest -from OCC.Core.BRep import BRep_Tool from OCC.Core.TopoDS import TopoDS_Shape, TopoDS_Compound @@ -25,6 +24,7 @@ def _size_from_bbox(mn, mx): def _triples(flat: Sequence[float]) -> List[Tuple[float, float, float]]: return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] + def _is_swept_shape(occ_shape: TopoDS_Shape) -> bool: """Analyze if the given OpenCASCADE shape represents a swept shape using topology exploration.""" try: @@ -33,7 +33,12 @@ def _is_swept_shape(occ_shape: TopoDS_Shape) -> bool: from OCC.Core.BRep_Tool import BRep_Tool from OCC.Core.GeomLProp_SLProps import GeomLProp_SLProps from OCC.Core.BRepAdaptor_Surface import BRepAdaptor_Surface - from OCC.Core.GeomAbs import GeomAbs_Cylinder, GeomAbs_Plane, GeomAbs_SurfaceOfExtrusion, GeomAbs_SurfaceOfRevolution + from OCC.Core.GeomAbs import ( + GeomAbs_Cylinder, + GeomAbs_Plane, + GeomAbs_SurfaceOfExtrusion, + GeomAbs_SurfaceOfRevolution, + ) from OCC.Core.gp import gp_Vec import math except ImportError as e: @@ -150,7 +155,7 @@ def load_ifc_occ_shape(ifc_path: str) -> TopoDS_Shape: # Extract the OpenCASCADE TopoDS_Shape from the result # The create_shape function returns an object with an occ_shape attribute when using opencascade - if hasattr(shape_result, 'geometry') and shape_result.geometry: + if hasattr(shape_result, "geometry") and shape_result.geometry: occ_shape = shape_result.geometry if isinstance(occ_shape, TopoDS_Compound): json_data = occ_shape.DumpJson() @@ -194,15 +199,21 @@ def load_ifc_mesh_bbox(ifc_path: str): mn, mx = _bbox_from_vertices(verts) return mn, mx, _size_from_bbox(mn, mx) + @pytest.fixture def test_dir(): return pathlib.Path(__file__).parent.resolve().absolute() + + def test_simple_sweep_1(test_dir): ifc_file_path = test_dir / "input_temp/simple_sweep_1.ifc" ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) occ_shape = load_ifc_occ_shape(ifc_file_path) assert occ_shape is not None assert ifc_sz == pytest.approx((1.1, 0.1, 0.89578254)) + assert ifc_mn == pytest.approx((-1.0, -1.3877787807814457e-17, 0.0)) + assert ifc_mx == pytest.approx((0.10000000000000002, 0.1, 0.8957825463853046)) + def test_simple_sweep_2(test_dir): ifc_file_path = test_dir / "input_temp/simple_sweep_2.ifc" @@ -213,6 +224,7 @@ def test_simple_sweep_2(test_dir): assert ifc_mn == pytest.approx((-100.1, -50.0, 197.9041507477363)) assert ifc_mx == pytest.approx((-98.29999932008509, -49.075638124333224, 200.0)) + def test_pipe_12d(test_dir): ifc_file_path = test_dir / "input_temp/pipe.ifc" ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) From c090073858b4519a5d7519b66f44719e26d43ce1 Mon Sep 17 00:00:00 2001 From: Richard Brice <37087370+RickBrice@users.noreply.github.com> Date: Wed, 27 Aug 2025 07:35:49 -0700 Subject: [PATCH 13/39] Removes assumption about which nest contains alignment layout segments --- .../ifcopenshell/api/alignment/create_representation.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_representation.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_representation.py index 443345bd0f..c94ee873fa 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_representation.py @@ -50,5 +50,6 @@ def create_representation( layouts = ifcopenshell.api.alignment.get_alignment_layouts(alignment) for layout in layouts: curve = ifcopenshell.api.alignment.get_layout_curve(layout) - for segment in layout.IsNestedBy[0].RelatedObjects: + layout_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout) + for segment in layout_nest.RelatedObjects: _add_segment_to_curve(file, segment, curve) From 1cd32be2fc7e2d59eb296c1fd34ae6e8ce164d7e Mon Sep 17 00:00:00 2001 From: krande Date: Wed, 27 Aug 2025 19:37:47 +0200 Subject: [PATCH 14/39] Refactor `test_sweeps.py`: remove `_is_swept_shape`, restructure test directories, update test fixtures, and adjust assertions for geometry validation. Extend `sweep_along_curve` constructor to support fixed reference direction. --- .../IfcFixedReferenceSweptAreaSolid.cpp | 7 +- src/ifcgeom/taxonomy.h | 4 +- .../test/fixtures/geom}/pipe.ifc | 4 +- .../test/fixtures/geom}/simple_sweep_1.ifc | 20 +- .../test/fixtures/geom}/simple_sweep_2.ifc | 28 +-- .../test/geom/test_sweeps.py | 138 ++++++++++ test/test_sweeps.py | 235 ------------------ 7 files changed, 168 insertions(+), 268 deletions(-) rename {test/input_temp => src/ifcopenshell-python/test/fixtures/geom}/pipe.ifc (98%) rename {test/input_temp => src/ifcopenshell-python/test/fixtures/geom}/simple_sweep_1.ifc (84%) rename {test/input_temp => src/ifcopenshell-python/test/fixtures/geom}/simple_sweep_2.ifc (70%) create mode 100644 src/ifcopenshell-python/test/geom/test_sweeps.py delete mode 100644 test/test_sweeps.py diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index 6506705605..e462fc75e0 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -123,11 +123,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid auto sweep = taxonomy::make( matrix, // matrix4::ptr - no transformation needed profile, // face::ptr - the profile to sweep - dir // item::ptr curve - the directrix curve - ); - - // Set the fixed reference direction for the sweep - sweep->direction = ref; // The fixed reference direction + dir, // item::ptr curve - the directrix curve + ref); return sweep; } diff --git a/src/ifcgeom/taxonomy.h b/src/ifcgeom/taxonomy.h index d099579cc9..94e2e7bf52 100644 --- a/src/ifcgeom/taxonomy.h +++ b/src/ifcgeom/taxonomy.h @@ -1215,10 +1215,10 @@ typedef item const* ptr; virtual sweep_along_curve* clone_() const { return new sweep_along_curve(*this); } virtual kinds kind() const { return SWEEP_ALONG_CURVE; } - sweep_along_curve(matrix4::ptr m, face::ptr basis, item::ptr surf, item::ptr crv) : sweep(m, basis), surface(surf), curve(crv) {} + sweep_along_curve(matrix4::ptr m, face::ptr basis, item::ptr surf, item::ptr crv) : sweep(m, basis), surface(surf), curve(crv), direction(nullptr) {} // New constructor for fixed reference swept area solid - sweep_along_curve(matrix4::ptr m, face::ptr profile, item::ptr directrix) : sweep(m, profile), surface(nullptr), curve(directrix) { } + sweep_along_curve(matrix4::ptr m, face::ptr profile, item::ptr directrix, direction3::ptr ref) : sweep(m, profile), surface(nullptr), curve(directrix), direction(ref) { } virtual size_t calc_hash() const { auto v = std::make_tuple(static_cast(SWEEP_ALONG_CURVE), matrix->hash_components(), basis->calc_hash(), surface->calc_hash(), curve->calc_hash()); diff --git a/test/input_temp/pipe.ifc b/src/ifcopenshell-python/test/fixtures/geom/pipe.ifc similarity index 98% rename from test/input_temp/pipe.ifc rename to src/ifcopenshell-python/test/fixtures/geom/pipe.ifc index 724ad84230..2c49742dda 100644 --- a/test/input_temp/pipe.ifc +++ b/src/ifcopenshell-python/test/fixtures/geom/pipe.ifc @@ -30,8 +30,8 @@ DATA; #30=IFCCARTESIANPOINT((0.,0.)); #31=IFCAXIS2PLACEMENT2D(#30,$); #32=IFCCIRCLEPROFILEDEF(.AREA.,$,#31,0.179); -#33=IFCCARTESIANPOINT((289080.818499209,5822851.36621952,118.886)); -#34=IFCCARTESIANPOINT((289081.570466963,5822857.54453541,118.886)); +#33=IFCCARTESIANPOINT((289.080,582.2,118.886)); +#34=IFCCARTESIANPOINT((290.081,582.9,118.886)); #35=IFCPOLYLINE((#33,#34)); #36=IFCDIRECTION((1.,0.,0.)); #37=IFCFIXEDREFERENCESWEPTAREASOLID(#32,$,#35,$,$,#36); diff --git a/test/input_temp/simple_sweep_1.ifc b/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_1.ifc similarity index 84% rename from test/input_temp/simple_sweep_1.ifc rename to src/ifcopenshell-python/test/fixtures/geom/simple_sweep_1.ifc index 780d436bd7..0afe5fc07e 100644 --- a/test/input_temp/simple_sweep_1.ifc +++ b/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_1.ifc @@ -1,11 +1,11 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); -FILE_NAME('/dev/null','2025-08-26T16:01:38+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); +FILE_NAME('/dev/null','2025-08-27T14:53:55+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); FILE_SCHEMA(('IFC4X3_ADD2')); ENDSEC; DATA; -#1=IFCPROJECT('1TMwI763XBx9E7h3kqXonB',$,'AdaProject',$,$,$,$,(#11),#6); +#1=IFCPROJECT('2MG118AczBnBRhfOi7rLGC',$,'AdaProject',$,$,$,$,(#11),#6); #2=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); #3=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); #4=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); @@ -24,18 +24,18 @@ DATA; #17=IFCORGANIZATION('ADA','Assembly For Design and Analysis',$,$,$); #18=IFCPERSONANDORGANIZATION(#16,#17,$); #19=IFCAPPLICATION(#17,'XXX','ADA','ADA'); -#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756216898); +#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756299235); #21=IFCDIRECTION((0.,0.,1.)); #22=IFCDIRECTION((1.,0.,0.)); #23=IFCCARTESIANPOINT((0.,0.,0.)); #24=IFCAXIS2PLACEMENT3D(#23,#21,#22); #25=IFCLOCALPLACEMENT($,#24); -#26=IFCSITE('301mrn5JHCxRMMvjp9uGM1',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); -#27=IFCRELAGGREGATES('0RnSPGnurA1RhM0uNbRZ8k',#20,'Project Container',$,#1,(#26)); +#26=IFCSITE('2V9fV9zKnAP9J5CfXLkqps',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); +#27=IFCRELAGGREGATES('12FX4aagX3HQdiLOLDvGX_',#20,'Project Container',$,#1,(#26)); #28=IFCPROPERTYSINGLEVALUE('project',$,IFCTEXT('AdaProject'),$); #29=IFCPROPERTYSINGLEVALUE('schema',$,IFCTEXT('IFC4X3_add2'),$); -#30=IFCPROPERTYSET('1Yj9$v$uH0ZQk9AOoWx4hD',#20,'Properties',$,(#28,#29)); -#31=IFCRELDEFINESBYPROPERTIES('2zKQjOOuP0VwvxPEpnJusI',#20,'Properties',$,(#26),#30); +#30=IFCPROPERTYSET('2yltt4JCTAOAyhAFFKmDBW',#20,'Properties',$,(#28,#29)); +#31=IFCRELDEFINESBYPROPERTIES('3U0CyjG8XALx2oClwZMPg9',#20,'Properties',$,(#26),#30); #32=IFCMATERIAL('S355',$,'Steel'); #33=IFCPROPERTYSINGLEVALUE('Grade',$,IFCTEXT('S355'),$); #34=IFCPROPERTYSINGLEVALUE('YieldStress',$,IFCPRESSUREMEASURE(355000000.),$); @@ -45,7 +45,7 @@ DATA; #38=IFCPROPERTYSINGLEVALUE('SpecificHeatCapacity',$,IFCSPECIFICHEATCAPACITYMEASURE(0.03),$); #39=IFCPROPERTYSINGLEVALUE('MassDensity',$,IFCMASSDENSITYMEASURE(7850.),$); #40=IFCMATERIALPROPERTIES('MaterialMechanical','A Material property description',(#33,#34,#35,#36,#37,#38,#39),#32); -#41=IFCRELASSOCIATESMATERIAL('13SLSaNyz4PwOBYuDhXcWi',#20,'S355','Objects related to S355',(#64),#32); +#41=IFCRELASSOCIATESMATERIAL('3__DXGCfr15fk06ugmrrR4',#20,'S355','Objects related to S355',(#64),#32); #42=IFCDIRECTION((0.,0.,1.)); #43=IFCDIRECTION((1.,0.,0.)); #44=IFCCARTESIANPOINT((0.,0.,0.)); @@ -68,7 +68,7 @@ DATA; #61=IFCSURFACESTYLESHADING(#60,0.); #62=IFCSURFACESTYLE('Color1',.BOTH.,(#61)); #63=IFCSTYLEDITEM(#57,(#62),'Color1'); -#64=IFCBUILDINGELEMENTPROXY('1R8AUxDeX02RhatZPFgzSt',#20,'sweep1',$,$,#46,#59,$,$); -#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('0HNU_Fs7r0SRBiQ9Xqgv$k',#20,'Physical model',$,(#64),#26); +#64=IFCBUILDINGELEMENTPROXY('07ngBzsO5BK8C3rDUqQfSD',#20,'sweep1',$,$,#46,#59,$,$); +#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('1_r$SsBj1C3wgAjnhfmkqs',#20,'Physical model',$,(#64),#26); ENDSEC; END-ISO-10303-21; diff --git a/test/input_temp/simple_sweep_2.ifc b/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_2.ifc similarity index 70% rename from test/input_temp/simple_sweep_2.ifc rename to src/ifcopenshell-python/test/fixtures/geom/simple_sweep_2.ifc index 11d70bcf81..7181f44337 100644 --- a/test/input_temp/simple_sweep_2.ifc +++ b/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_2.ifc @@ -1,16 +1,16 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); -FILE_NAME('/dev/null','2025-08-27T11:12:44+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); +FILE_NAME('/dev/null','2025-08-27T15:03:01+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); FILE_SCHEMA(('IFC4X3_ADD2')); ENDSEC; DATA; -#1=IFCPROJECT('0bfgwqvaX7Vvg12DS5E4TH',$,'AdaProject',$,$,$,$,(#11),#6); +#1=IFCPROJECT('1tjHZhewf3AROX1xjpvefY',$,'AdaProject',$,$,$,$,(#11),#6); #2=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); #3=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); #4=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); #5=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); -#6=IFCUNITASSIGNMENT((#4,#2,#5,#3)); +#6=IFCUNITASSIGNMENT((#5,#4,#2,#3)); #7=IFCCARTESIANPOINT((0.,0.,0.)); #8=IFCDIRECTION((0.,0.,1.)); #9=IFCDIRECTION((1.,0.,0.)); @@ -24,18 +24,18 @@ DATA; #17=IFCORGANIZATION('ADA','Assembly For Design and Analysis',$,$,$); #18=IFCPERSONANDORGANIZATION(#16,#17,$); #19=IFCAPPLICATION(#17,'XXX','ADA','ADA'); -#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756285964); +#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756299781); #21=IFCDIRECTION((0.,0.,1.)); #22=IFCDIRECTION((1.,0.,0.)); #23=IFCCARTESIANPOINT((0.,0.,0.)); #24=IFCAXIS2PLACEMENT3D(#23,#21,#22); #25=IFCLOCALPLACEMENT($,#24); -#26=IFCSITE('1GDQO$O1L1QOKEaI81COHL',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); -#27=IFCRELAGGREGATES('34vxVzLRfCB8P7OThopnom',#20,'Project Container',$,#1,(#26)); +#26=IFCSITE('1$h1D7pKLBhQ2roRvKz9Kq',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); +#27=IFCRELAGGREGATES('1cbS0eMMz5482GelhPUH3D',#20,'Project Container',$,#1,(#26)); #28=IFCPROPERTYSINGLEVALUE('project',$,IFCTEXT('AdaProject'),$); #29=IFCPROPERTYSINGLEVALUE('schema',$,IFCTEXT('IFC4X3_add2'),$); -#30=IFCPROPERTYSET('2hTgvJbh1B7RR4nwsOfRDy',#20,'Properties',$,(#28,#29)); -#31=IFCRELDEFINESBYPROPERTIES('2wzYfhPqT9hwqI5vOO4yex',#20,'Properties',$,(#26),#30); +#30=IFCPROPERTYSET('2Jj1ZXLcTFjxFj$8jn9r9Z',#20,'Properties',$,(#28,#29)); +#31=IFCRELDEFINESBYPROPERTIES('30tu3wf014T9Gbje7aeoNI',#20,'Properties',$,(#26),#30); #32=IFCMATERIAL('S355',$,'Steel'); #33=IFCPROPERTYSINGLEVALUE('Grade',$,IFCTEXT('S355'),$); #34=IFCPROPERTYSINGLEVALUE('YieldStress',$,IFCPRESSUREMEASURE(355000000.),$); @@ -45,16 +45,16 @@ DATA; #38=IFCPROPERTYSINGLEVALUE('SpecificHeatCapacity',$,IFCSPECIFICHEATCAPACITYMEASURE(0.03),$); #39=IFCPROPERTYSINGLEVALUE('MassDensity',$,IFCMASSDENSITYMEASURE(7850.),$); #40=IFCMATERIALPROPERTIES('MaterialMechanical','A Material property description',(#33,#34,#35,#36,#37,#38,#39),#32); -#41=IFCRELASSOCIATESMATERIAL('0vr_O6t$T7vPWIa1EqEt6b',#20,'S355','Objects related to S355',(#64),#32); +#41=IFCRELASSOCIATESMATERIAL('1kAam6k_5CO9mOkVDyk7FN',#20,'S355','Objects related to S355',(#64),#32); #42=IFCDIRECTION((0.,0.,1.)); #43=IFCDIRECTION((1.,0.,0.)); #44=IFCCARTESIANPOINT((0.,0.,0.)); #45=IFCAXIS2PLACEMENT3D(#44,#42,#43); #46=IFCLOCALPLACEMENT(#25,#45); -#47=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.1),(0.1,0.),(0.1,0.1)),$); -#48=IFCINDEXEDPOLYCURVE(#47,(IFCLINEINDEX((3,1)),IFCLINEINDEX((1,2)),IFCLINEINDEX((2,4)),IFCLINEINDEX((4,3))),$); +#47=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.1,0.),(0.1,0.05)),$); +#48=IFCINDEXEDPOLYCURVE(#47,(IFCLINEINDEX((3,1)),IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3))),$); #49=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#48); -#50=IFCCARTESIANPOINTLIST3D(((-100.,-50.,199.610854),(-100.,-50.,200.),(-99.974928791787,-49.9996866104928,199.513897412378),(-99.9060013418686,-49.998825019006,199.441251),(-99.3499585838692,-49.9918744730554,199.093724161494),(-99.2406758662487,-49.9607719931374,198.987781372709),(-99.2000000393918,-49.8803717417563,198.861230109006),(-99.2000000393918,-49.3859696738752,198.235404705615),(-99.1121322022443,-49.2544691526923,198.068948349419),(-98.9000000393918,-49.2000000638752,198.000000135615),(-98.3,-49.1999999172672,197.999999950035)),$); +#50=IFCCARTESIANPOINTLIST3D(((100.,50.,-200.389146),(100.,50.,-200.),(100.025071208213,50.0003133895072,-200.486102587622),(100.093998658131,50.001174980994,-200.558749),(100.650041416131,50.0081255269446,-200.906275838506),(100.759324133751,50.0392280068626,-201.012218627291),(100.799999960608,50.1196282582437,-201.138769890994),(100.799999960608,50.6140303261248,-201.764595294385),(100.887867797756,50.7455308473077,-201.931051650581),(101.099999960608,50.7999999361248,-201.999999864385),(101.7,50.8000000827328,-202.000000049965)),$); #51=IFCINDEXEDPOLYCURVE(#50,(IFCLINEINDEX((2,1)),IFCARCINDEX((1,3,4)),IFCLINEINDEX((4,5)),IFCARCINDEX((5,6,7)),IFCLINEINDEX((7,8)),IFCARCINDEX((8,9,10)),IFCLINEINDEX((10,11))),$); #52=IFCDIRECTION((1.,-0.,0.)); #53=IFCCARTESIANPOINT((0.,0.,0.)); @@ -68,7 +68,7 @@ DATA; #61=IFCSURFACESTYLESHADING(#60,0.); #62=IFCSURFACESTYLE('Color1',.BOTH.,(#61)); #63=IFCSTYLEDITEM(#57,(#62),'Color1'); -#64=IFCBUILDINGELEMENTPROXY('0pDZhwPyT3dRMnPGA47kAn',#20,'sweep1',$,$,#46,#59,$,$); -#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('196Q7zPfr4LxqeArD0gmJa',#20,'Physical model',$,(#64),#26); +#64=IFCBUILDINGELEMENTPROXY('34gqNt7M58Z972x$etr9V2',#20,'sweep2',$,$,#46,#59,$,$); +#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('1kbNj7znLCygBdHO9SJygX',#20,'Physical model',$,(#64),#26); ENDSEC; END-ISO-10303-21; diff --git a/src/ifcopenshell-python/test/geom/test_sweeps.py b/src/ifcopenshell-python/test/geom/test_sweeps.py new file mode 100644 index 0000000000..6f0ea5b1a8 --- /dev/null +++ b/src/ifcopenshell-python/test/geom/test_sweeps.py @@ -0,0 +1,138 @@ +import pathlib +from typing import List, Sequence, Tuple + +import ifcopenshell +import pytest +from OCC.Core.TopoDS import TopoDS_Shape, TopoDS_Compound + + +def _bbox_from_vertices(verts: List[Tuple[float, float, float]]): + if not verts: + return (0, 0, 0), (0, 0, 0) + xs = [v[0] for v in verts] + ys = [v[1] for v in verts] + zs = [v[2] for v in verts] + mn = (min(xs), min(ys), min(zs)) + mx = (max(xs), max(ys), max(zs)) + return mn, mx + + +def _size_from_bbox(mn, mx): + return (mx[0] - mn[0], mx[1] - mn[1], mx[2] - mn[2]) + + +def _triples(flat: Sequence[float]) -> List[Tuple[float, float, float]]: + return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] + + +def load_ifc_occ_shape(ifc_path: str) -> TopoDS_Shape: + try: + import ifcopenshell.geom as geom + except Exception as e: + raise RuntimeError("ifcopenshell.geom not available: cannot validate IFC geometry") from e + + settings = geom.settings() + settings.set(settings.USE_WORLD_COORDS, True) + settings.set("use-python-opencascade", True) + + # Open the IFC file + f = ifcopenshell.open(ifc_path) + + # Find the first representable product (prefer IfcBuildingElementProxy, then any product with representation) + products = f.by_type("IfcProduct") + target = None + for p in products: + if p.is_a("IfcBuildingElementProxy") and getattr(p, "Representation", None): + target = p + break + if target is None: + for p in products: + if getattr(p, "Representation", None): + target = p + break + if target is None: + raise RuntimeError("No representable product found in IFC for shape extraction") + + # Create the shape using ifcopenshell.geom with opencascade geometry library + shape_result = geom.create_shape(settings, target, geometry_library="opencascade") + + # Extract the OpenCASCADE TopoDS_Shape from the result + # The create_shape function returns an object with an occ_shape attribute when using opencascade + if hasattr(shape_result, "geometry") and shape_result.geometry: + occ_shape = shape_result.geometry + if isinstance(occ_shape, TopoDS_Compound): + json_data = occ_shape.DumpJson() + print(json_data) + else: + raise NotImplemented(f"Unsupported shape type: {type(occ_shape)}") + + return occ_shape + else: + raise RuntimeError("Failed to extract OpenCASCADE shape from IFC geometry") + + +def load_ifc_mesh_bbox(ifc_path: str): + """Load first product's mesh from IFC using ifcopenshell.geom and return bbox and size.""" + try: + import ifcopenshell.geom as geom + except Exception as e: + raise RuntimeError("ifcopenshell.geom not available: cannot validate IFC geometry") from e + + settings = geom.settings() + settings.set(settings.USE_WORLD_COORDS, True) + + f = ifcopenshell.open(ifc_path) + # Prefer the proxy we created, otherwise take any product with representation + products = f.by_type("IfcProduct") + target = None + for p in products: + if p.is_a("IfcBuildingElementProxy") and getattr(p, "Representation", None): + target = p + break + if target is None: + for p in products: + if getattr(p, "Representation", None): + target = p + break + if target is None: + raise RuntimeError("No representable product found in IFC for validation") + + shape = geom.create_shape(settings, target) + verts = _triples(shape.geometry.verts) + mn, mx = _bbox_from_vertices(verts) + return mn, mx, _size_from_bbox(mn, mx) + + +@pytest.fixture +def geom_dir(): + return pathlib.Path(__file__).parent.parent.resolve().absolute() / "fixtures/geom" + + +def test_simple_sweep_1(geom_dir): + ifc_file_path = geom_dir / "simple_sweep_1.ifc" + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) + occ_shape = load_ifc_occ_shape(ifc_file_path) + assert occ_shape is not None + assert ifc_sz == pytest.approx((0.8957825463853046, 0.1, 1.1)) + assert ifc_mn == pytest.approx((0.0, 0, -0.1)) + assert ifc_mx == pytest.approx((0.8957825463853046, 0.1, 1.0)) + + +def test_simple_sweep_2(geom_dir): + ifc_file_path = geom_dir / "simple_sweep_2.ifc" + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) + occ_shape = load_ifc_occ_shape(ifc_file_path) + assert occ_shape is not None + assert ifc_sz == pytest.approx((0.8764374444355525, 1.800000587893038, 2.095849252263605)) + assert ifc_mn == pytest.approx((50.0, 99.9, 200.0)) + assert ifc_mx == pytest.approx((50.87643744443555, 101.70000058789304, 202.0958492522636)) + + +def test_pipe_12d(geom_dir): + ifc_file_path = geom_dir / "pipe.ifc" + ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) + occ_shape = load_ifc_occ_shape(ifc_file_path) + assert occ_shape is not None + assert ifc_sz == pytest.approx((1.205888147422229, 0.9929900508137735, 0.35776115971654576)) + assert ifc_mn == pytest.approx((288.9774190979147, 582.0537006391681, 118.70711942014172)) + assert ifc_mx == pytest.approx((290.18330724533695, 583.0466906899819, 119.06488057985827)) diff --git a/test/test_sweeps.py b/test/test_sweeps.py deleted file mode 100644 index e78fb9499f..0000000000 --- a/test/test_sweeps.py +++ /dev/null @@ -1,235 +0,0 @@ -import pathlib -from typing import List, Sequence, Tuple - -import ifcopenshell -import pytest -from OCC.Core.TopoDS import TopoDS_Shape, TopoDS_Compound - - -def _bbox_from_vertices(verts: List[Tuple[float, float, float]]): - if not verts: - return (0, 0, 0), (0, 0, 0) - xs = [v[0] for v in verts] - ys = [v[1] for v in verts] - zs = [v[2] for v in verts] - mn = (min(xs), min(ys), min(zs)) - mx = (max(xs), max(ys), max(zs)) - return mn, mx - - -def _size_from_bbox(mn, mx): - return (mx[0] - mn[0], mx[1] - mn[1], mx[2] - mn[2]) - - -def _triples(flat: Sequence[float]) -> List[Tuple[float, float, float]]: - return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] - - -def _is_swept_shape(occ_shape: TopoDS_Shape) -> bool: - """Analyze if the given OpenCASCADE shape represents a swept shape using topology exploration.""" - try: - from OCC.Core.TopExp import TopExp_Explorer - from OCC.Core.TopAbs import TopAbs_FACE, TopAbs_EDGE, TopAbs_WIRE - from OCC.Core.BRep_Tool import BRep_Tool - from OCC.Core.GeomLProp_SLProps import GeomLProp_SLProps - from OCC.Core.BRepAdaptor_Surface import BRepAdaptor_Surface - from OCC.Core.GeomAbs import ( - GeomAbs_Cylinder, - GeomAbs_Plane, - GeomAbs_SurfaceOfExtrusion, - GeomAbs_SurfaceOfRevolution, - ) - from OCC.Core.gp import gp_Vec - import math - except ImportError as e: - raise RuntimeError("pythonocc-core not available for topology analysis") from e - - if occ_shape.IsNull(): - return False - - # Explore faces to look for swept surface characteristics - face_explorer = TopExp_Explorer(occ_shape, TopAbs_FACE) - swept_indicators = 0 - total_faces = 0 - - while face_explorer.More(): - face = face_explorer.Current() - total_faces += 1 - - # Get the surface adaptor for this face - surface_adaptor = BRepAdaptor_Surface(face) - surface_type = surface_adaptor.GetType() - - # Check for surface types that indicate swept geometry - if surface_type in [GeomAbs_Cylinder, GeomAbs_SurfaceOfExtrusion, GeomAbs_SurfaceOfRevolution]: - swept_indicators += 1 - - # For planar surfaces, check if they form a pattern consistent with swept geometry - elif surface_type == GeomAbs_Plane: - # Analyze if planar faces are arranged in a swept pattern - # This is a simplified check - could be enhanced further - if _has_parallel_opposite_faces(occ_shape, face): - swept_indicators += 0.5 # Partial indicator - - face_explorer.Next() - - # Additional check: analyze edge patterns for swept characteristics - edge_analysis = _analyze_edge_patterns(occ_shape) - - # Determine if this is likely a swept shape - # If more than 50% of faces show swept characteristics, or we have strong edge patterns - swept_ratio = swept_indicators / max(total_faces, 1) - is_swept = swept_ratio > 0.5 or edge_analysis - - if is_swept: - print(f"Swept shape analysis: {swept_indicators}/{total_faces} faces show swept characteristics") - if edge_analysis: - print("Edge pattern analysis also indicates swept geometry") - - return is_swept - - -def _has_parallel_opposite_faces(shape: TopoDS_Shape, reference_face) -> bool: - """Check if the shape has faces parallel to the reference face (indicating extrusion).""" - try: - from OCC.Core.TopExp import TopExp_Explorer - from OCC.Core.TopAbs import TopAbs_FACE - from OCC.Core.BRepAdaptor_Surface import BRepAdaptor_Surface - from OCC.Core.GeomAbs import GeomAbs_Plane - from OCC.Core.gp import gp_Vec - import math - - ref_adaptor = BRepAdaptor_Surface(reference_face) - if ref_adaptor.GetType() != GeomAbs_Plane: - return False - - ref_normal = ref_adaptor.Plane().Axis().Direction() - - face_explorer = TopExp_Explorer(shape, TopAbs_FACE) - while face_explorer.More(): - face = face_explorer.Current() - if not face.IsSame(reference_face): - face_adaptor = BRepAdaptor_Surface(face) - if face_adaptor.GetType() == GeomAbs_Plane: - face_normal = face_adaptor.Plane().Axis().Direction() - # Check if normals are parallel (dot product close to ±1) - dot_product = abs(ref_normal.Dot(face_normal)) - if dot_product > 0.99: # Very close to parallel - return True - face_explorer.Next() - return False - except: - return False - - -def load_ifc_occ_shape(ifc_path: str) -> TopoDS_Shape: - try: - import ifcopenshell.geom as geom - except Exception as e: - raise RuntimeError("ifcopenshell.geom not available: cannot validate IFC geometry") from e - - settings = geom.settings() - settings.set(settings.USE_WORLD_COORDS, True) - settings.set("use-python-opencascade", True) - - # Open the IFC file - f = ifcopenshell.open(ifc_path) - - # Find the first representable product (prefer IfcBuildingElementProxy, then any product with representation) - products = f.by_type("IfcProduct") - target = None - for p in products: - if p.is_a("IfcBuildingElementProxy") and getattr(p, "Representation", None): - target = p - break - if target is None: - for p in products: - if getattr(p, "Representation", None): - target = p - break - if target is None: - raise RuntimeError("No representable product found in IFC for shape extraction") - - # Create the shape using ifcopenshell.geom with opencascade geometry library - shape_result = geom.create_shape(settings, target, geometry_library="opencascade") - - # Extract the OpenCASCADE TopoDS_Shape from the result - # The create_shape function returns an object with an occ_shape attribute when using opencascade - if hasattr(shape_result, "geometry") and shape_result.geometry: - occ_shape = shape_result.geometry - if isinstance(occ_shape, TopoDS_Compound): - json_data = occ_shape.DumpJson() - print(json_data) - else: - raise NotImplemented(f"Unsupported shape type: {type(occ_shape)}") - - return occ_shape - else: - raise RuntimeError("Failed to extract OpenCASCADE shape from IFC geometry") - - -def load_ifc_mesh_bbox(ifc_path: str): - """Load first product's mesh from IFC using ifcopenshell.geom and return bbox and size.""" - try: - import ifcopenshell.geom as geom - except Exception as e: - raise RuntimeError("ifcopenshell.geom not available: cannot validate IFC geometry") from e - - settings = geom.settings() - settings.set(settings.USE_WORLD_COORDS, True) - - f = ifcopenshell.open(ifc_path) - # Prefer the proxy we created, otherwise take any product with representation - products = f.by_type("IfcProduct") - target = None - for p in products: - if p.is_a("IfcBuildingElementProxy") and getattr(p, "Representation", None): - target = p - break - if target is None: - for p in products: - if getattr(p, "Representation", None): - target = p - break - if target is None: - raise RuntimeError("No representable product found in IFC for validation") - - shape = geom.create_shape(settings, target) - verts = _triples(shape.geometry.verts) - mn, mx = _bbox_from_vertices(verts) - return mn, mx, _size_from_bbox(mn, mx) - - -@pytest.fixture -def test_dir(): - return pathlib.Path(__file__).parent.resolve().absolute() - - -def test_simple_sweep_1(test_dir): - ifc_file_path = test_dir / "input_temp/simple_sweep_1.ifc" - ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) - occ_shape = load_ifc_occ_shape(ifc_file_path) - assert occ_shape is not None - assert ifc_sz == pytest.approx((1.1, 0.1, 0.89578254)) - assert ifc_mn == pytest.approx((-1.0, -1.3877787807814457e-17, 0.0)) - assert ifc_mx == pytest.approx((0.10000000000000002, 0.1, 0.8957825463853046)) - - -def test_simple_sweep_2(test_dir): - ifc_file_path = test_dir / "input_temp/simple_sweep_2.ifc" - ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) - occ_shape = load_ifc_occ_shape(ifc_file_path) - assert occ_shape is not None - assert ifc_sz == pytest.approx((1.800000679914902, 0.9243618756667757, 2.0958492522636902)) - assert ifc_mn == pytest.approx((-100.1, -50.0, 197.9041507477363)) - assert ifc_mx == pytest.approx((-98.29999932008509, -49.075638124333224, 200.0)) - - -def test_pipe_12d(test_dir): - ifc_file_path = test_dir / "input_temp/pipe.ifc" - ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) - occ_shape = load_ifc_occ_shape(ifc_file_path) - assert occ_shape is not None - assert ifc_sz == pytest.approx((1.1068712115520611, 6.2215114729478955, 0.35776115971654576)) - assert ifc_mn == pytest.approx((289080.64128449163, 5822851.344592881, 118.70711942014172)) - assert ifc_mx == pytest.approx((289081.7481557032, 5822857.566104354, 119.06488057985827)) From 39100b7c97767fc0452dec356d8216fa43997cc4 Mon Sep 17 00:00:00 2001 From: Richard Brice <37087370+RickBrice@users.noreply.github.com> Date: Wed, 27 Aug 2025 11:32:25 -0700 Subject: [PATCH 15/39] Fixes problems with referents --- .../api/alignment/_add_segment_to_layout.py | 10 +++-- .../api/alignment/_add_zero_length_segment.py | 5 ++- .../api/alignment/add_stationing_referent.py | 18 +++++++-- .../ifcopenshell/api/alignment/create.py | 2 +- .../api/alignment/create_as_polyline.py | 4 +- .../ifcopenshell/api/alignment/util.py | 8 ++++ .../alignment/test_add_segment_to_layout.py | 13 +++---- .../api/alignment/test_create_by_pi_method.py | 23 ++++++++---- .../test/api/alignment/test_name_segments.py | 20 +++++----- .../test/api/alignment/test_referent_names.py | 37 +++++++++++-------- 10 files changed, 85 insertions(+), 55 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py index b02f033fab..4baf0a4e8f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py @@ -89,7 +89,8 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg # update the zero length layout segment unit_scale = ifcopenshell.util.unit.calculate_unit_scale(file) - zero_length_segment = layout.IsNestedBy[0].RelatedObjects[-1] + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout) + zero_length_segment = segment_nest.RelatedObjects[-1] # DesignParameters.StartPoint for IfcAlignmentHorizontalSegment is automatically updated when the # geometric representation is updated because the semantic and geometric data use the same IfcPoint. # This is not the case of IfcAlignmentVerticalSegment and IfcAlignmentCantSegment. For these @@ -136,7 +137,8 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg start_dist_along = segment.DesignParameters.StartDistAlong + segment.DesignParameters.HorizontalLength zero_length_segment.DesignParameters.StartDistAlong = start_dist_along - end_referent = zero_length_segment.IsNestedBy[0].RelatedObjects[0] + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,layout) + end_referent = referent_nest.RelatedObjects[-1] end_referent.Name = f"{_get_segment_start_point_label(zero_length_segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,start_station+start_dist_along)})" # update the referent's geometric representation's location @@ -173,12 +175,12 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg # get the previous segment. Working from the end of the basis curve, -1 is zero length segment # -2 is the newly added segment, so -3 is the segment occuring just before the newly added segment - segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout) prev_segment = segment_nest.RelatedObjects[-3] if 2 < len(segment_nest.RelatedObjects) else None name = f"{_get_segment_start_point_label(prev_segment,segment)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" referent = ifcopenshell.api.alignment.add_stationing_referent( - file, segment, distance_along=dist_along, station=station, name=name + file, layout, distance_along=dist_along, station=station, name=name, positioned_product=segment ) + ifcopenshell.api.nest.reorder_nesting(file,referent,-1,-1) if len(curve.Segments) == 2 and layout.is_a("IfcAlignmentHorizontal"): # this is the first real segment in the horizontal alignment diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py index db74fc472f..dacae0be54 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py @@ -48,8 +48,9 @@ def _add_zero_length_segment(file: ifcopenshell.file, layout: entity_instance) - if curve: ifcopenshell.api.alignment.add_zero_length_segment(file, curve) - segment = layout.IsNestedBy[0].RelatedObjects[-1] + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout) + segment = segment_nest.RelatedObjects[-1] alignment = ifcopenshell.api.alignment.get_alignment(layout) station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) name = f"{_get_segment_start_point_label(segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" - ifcopenshell.api.alignment.add_stationing_referent(file, segment, 0.0, station, name=name) + ifcopenshell.api.alignment.add_stationing_referent(file, layout, 0.0, station, name, segment) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py index 286f660319..2c68fbb2a4 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py @@ -34,6 +34,7 @@ def add_stationing_referent( distance_along: float, station: float, name: str, + positioned_product: entity_instance ) -> entity_instance: """ Adds an IfcReferent to the element with the Pset_Stationing property set. @@ -43,6 +44,7 @@ def add_stationing_referent( :param distance_along: distance along the alignment curve :param station: station value :param name: name to assign to IfcReferent.Name, typically a stringized version of the station value + :param positioned_product: the product whose position is informed by the referent :return: referent Example: @@ -54,9 +56,17 @@ def add_stationing_referent( """ alignment = element + layout_types = [ + "IfcAlignmentHorizontal", + "IfcAlignmentVertical", + "IfcAlignmentCant", + ] + if element.is_a("IfcAlignmentSegment"): layout = element.Nests[0].RelatingObject alignment = ifcopenshell.api.alignment.get_alignment(layout) + elif element.is_a() in layout_types: + alignment = ifcopenshell.api.alignment.get_alignment(element) basis_curve = ifcopenshell.api.alignment.get_basis_curve(alignment) @@ -137,15 +147,15 @@ def add_stationing_referent( nest = ifcopenshell.api.alignment.get_referent_nest(file,element) nest.RelatedObjects += (referent,) - if len(alignment.Positions) == 0: + if len(referent.Positions) == 0: rel_positions = file.createIfcRelPositions( GlobalId=ifcopenshell.guid.new(), - RelatingPositioningElement=alignment, + RelatingPositioningElement=referent, RelatedProducts=[ - referent, + positioned_product, ], ) else: - alignment.Positions[0].RelatedProducts += (referent,) + referent.Positions[0].RelatedProducts += (positioned_product,) return referent diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py index 8fb591a256..67c3757bcb 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py @@ -86,7 +86,7 @@ def create( if include_geometry: # define stationing name = ifcopenshell.util.alignment.station_as_string(file, start_station) - referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name) + referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name, alignment) # IFC 4.1.4.1.1 Alignment Aggregation To Project diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py index cd7ebeb896..d8c48d1b3c 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py @@ -137,13 +137,11 @@ def create_as_polyline( Name=name, ) - # _create_layout(file,alignment,points) - _create_polyline_representation(file, alignment, points) # define stationing name = ifcopenshell.util.alignment.station_as_string(file, start_station) - referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name) + referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name, alignment) ifcopenshell.api.nest.reorder_nesting(file, referent, -1, 0) # IFC 4.1.4.1.1 Alignment Aggregation To Project diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py index 7f24b4eddf..f0295b331b 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py @@ -162,3 +162,11 @@ def print_composite_curve_deep(curve): print(" " * 4, segment.Placement) print(" " * 4, segment.Placement.Location) print(" " * 4, segment.Placement.RefDirection) + +def print_positioned_products(file: ifcopenshell.file): + referents = file.by_type("IfcReferent") + for referent in referents: + print(referent) + for rel in referent.Positions: + for product in rel.RelatedProducts: + print(" " * 2,product) \ No newline at end of file diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py b/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py index 5c796554ce..1b0e72c51c 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py @@ -67,14 +67,11 @@ def test_add_segment_to_layout(): _add_segment_to_layout(file, horizontal_alignment, alignment_segment) - assert len(horizontal_alignment.IsNestedBy) == 1 - assert ( - len(horizontal_alignment.IsNestedBy[0].RelatedObjects) == 2 - ) # The the segment we added and the automatically created zero length segment - assert horizontal_alignment.IsNestedBy[0].RelatedObjects[0] == alignment_segment - assert ( - alignment_segment.IsNestedBy[0].RelatedObjects[0].is_a("IfcReferent") - ) # a referent is automatically added at the start of the segment + assert len(horizontal_alignment.IsNestedBy) == 2 + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,horizontal_alignment) + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_alignment) + assert (len(segment_nest.RelatedObjects) == 2) + assert (len(referent_nest.RelatedObjects) == 2) test_add_segment_to_layout() diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py index 95868f80a6..4486db600a 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py @@ -46,15 +46,22 @@ def test_create_by_pi_method(): ) assert len(alignment.IsDecomposedBy) == 0 # no child alignments - assert len(alignment.IsNestedBy) == 2 # one nest - assert (len(alignment.IsNestedBy[0].RelatedObjects) == 2) - assert ifcopenshell.api.alignment.get_referent_nest(file,alignment).RelatedObjects[0].is_a("IfcReferent") + assert len(alignment.IsNestedBy) == 2 + layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) - assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") - assert layout_nest.RelatedObjects[1].is_a("IfcAlignmentVertical") - assert (len(layout_nest.RelatedObjects[0].IsNestedBy) == 1) # nesting of segments beneath IfcAlignmentHorizontal - assert (len(layout_nest.RelatedObjects[0].IsNestedBy[0].RelatedObjects) == 8) # segments in horizontal layout - assert (len(layout_nest.RelatedObjects[1].IsNestedBy[0].RelatedObjects) == 10) # segments in vertical layout + assert (len(layout_nest.RelatedObjects) == 2) + + horizontal_layout = ifcopenshell.api.alignment.get_horizontal_layout(alignment) + horizontal_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_layout) + assert (len(horizontal_segment_nest.RelatedObjects) == 8) + horizontal_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,horizontal_layout) + assert (len(horizontal_referent_nest.RelatedObjects) == 8) + + vertical_layout = ifcopenshell.api.alignment.get_vertical_layout(alignment) + vertical_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vertical_layout) + assert (len(vertical_segment_nest.RelatedObjects) == 10) + vertical_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,vertical_layout) + assert (len(vertical_referent_nest.RelatedObjects) == 10) test_create_by_pi_method() diff --git a/src/ifcopenshell-python/test/api/alignment/test_name_segments.py b/src/ifcopenshell-python/test/api/alignment/test_name_segments.py index 89629b78c9..ee84bcde85 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_name_segments.py +++ b/src/ifcopenshell-python/test/api/alignment/test_name_segments.py @@ -45,12 +45,14 @@ def test_name_segments(): file, "TestAlignment", coordinates, radii, vpoints, lengths ) - for rel in alignment.IsNestedBy: - for a in rel.RelatedObjects: - if a.is_a("IfcLinearElement"): - ifcopenshell.api.alignment.name_segments("Q", a) - i = 1 - for sr in a.IsNestedBy: - for s in sr.RelatedObjects: - assert f"Q{i}" == s.Name - i += 1 + layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) + for layout in layout_nest.RelatedObjects: + assert layout.is_a("IfcLinearElement") + ifcopenshell.api.alignment.name_segments("Q", layout) + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout) + i = 1 + for segment in segment_nest.RelatedObjects: + assert f"Q{i}" == segment.Name + i += 1 + +test_name_segments() \ No newline at end of file diff --git a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py index 835233f227..06c0bad61b 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py +++ b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py @@ -98,31 +98,36 @@ def callback_alignment(): def test_with_default_names(default_names_alignment): hlayout = ifcopenshell.api.alignment.get_horizontal_layout(default_names_alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,hlayout) - assert "P.O.B." in hlayout.IsNestedBy[0].RelatedObjects[0].IsNestedBy[0].RelatedObjects[0].Name - assert "P.C." in hlayout.IsNestedBy[0].RelatedObjects[1].IsNestedBy[0].RelatedObjects[0].Name - assert "P.T." in hlayout.IsNestedBy[0].RelatedObjects[2].IsNestedBy[0].RelatedObjects[0].Name - assert "P.O.E." in hlayout.IsNestedBy[0].RelatedObjects[-1].IsNestedBy[0].RelatedObjects[0].Name + assert "P.O.B." in referent_nest.RelatedObjects[0].Name + assert "P.C." in referent_nest.RelatedObjects[1].Name + assert "P.T." in referent_nest.RelatedObjects[2].Name + assert "P.O.E." in referent_nest.RelatedObjects[-1].Name vlayout = ifcopenshell.api.alignment.get_vertical_layout(default_names_alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,vlayout) - assert "V.P.O.B." in vlayout.IsNestedBy[0].RelatedObjects[0].IsNestedBy[0].RelatedObjects[0].Name - assert "P.V.C." in vlayout.IsNestedBy[0].RelatedObjects[1].IsNestedBy[0].RelatedObjects[0].Name - assert "P.V.T." in vlayout.IsNestedBy[0].RelatedObjects[2].IsNestedBy[0].RelatedObjects[0].Name - assert "V.P.O.E." in vlayout.IsNestedBy[0].RelatedObjects[-1].IsNestedBy[0].RelatedObjects[0].Name + assert "V.P.O.B." in referent_nest.RelatedObjects[0].Name + assert "P.V.C." in referent_nest.RelatedObjects[1].Name + assert "P.V.T." in referent_nest.RelatedObjects[2].Name + assert "V.P.O.E." in referent_nest.RelatedObjects[-1].Name def test_with_callbacks(callback_alignment): hlayout = ifcopenshell.api.alignment.get_horizontal_layout(callback_alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,hlayout) - assert "A" in hlayout.IsNestedBy[0].RelatedObjects[0].IsNestedBy[0].RelatedObjects[0].Name - assert "Q" in hlayout.IsNestedBy[0].RelatedObjects[1].IsNestedBy[0].RelatedObjects[0].Name - assert "Q" in hlayout.IsNestedBy[0].RelatedObjects[2].IsNestedBy[0].RelatedObjects[0].Name - assert "Z" in hlayout.IsNestedBy[0].RelatedObjects[-1].IsNestedBy[0].RelatedObjects[0].Name + assert "A" in referent_nest.RelatedObjects[0].Name + assert "Q" in referent_nest.RelatedObjects[1].Name + assert "Q" in referent_nest.RelatedObjects[2].Name + assert "Z" in referent_nest.RelatedObjects[-1].Name vlayout = ifcopenshell.api.alignment.get_vertical_layout(callback_alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,vlayout) + + assert "a" in referent_nest.RelatedObjects[0].Name + assert "q" in referent_nest.RelatedObjects[1].Name + assert "q" in referent_nest.RelatedObjects[2].Name + assert "z" in referent_nest.RelatedObjects[-1].Name - assert "a" in vlayout.IsNestedBy[0].RelatedObjects[0].IsNestedBy[0].RelatedObjects[0].Name - assert "q" in vlayout.IsNestedBy[0].RelatedObjects[1].IsNestedBy[0].RelatedObjects[0].Name - assert "q" in vlayout.IsNestedBy[0].RelatedObjects[2].IsNestedBy[0].RelatedObjects[0].Name - assert "z" in vlayout.IsNestedBy[0].RelatedObjects[-1].IsNestedBy[0].RelatedObjects[0].Name From 43fbdf57c8681da0e1905e7129e81cf12d321ff0 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 10:57:26 +0500 Subject: [PATCH 16/39] black . --- src/bonsai/bonsai/bim/module/model/wall.py | 8 ++++++-- src/bonsai/scripts/dev_environment.py | 1 - .../api/alignment/_add_segment_to_layout.py | 6 +++--- .../api/alignment/add_stationing_referent.py | 6 +++--- .../ifcopenshell/api/alignment/create.py | 13 +++++++------ .../api/alignment/create_layout_segment.py | 2 +- .../ifcopenshell/api/alignment/get_alignment.py | 1 + .../api/alignment/get_alignment_layout_nest.py | 3 ++- .../api/alignment/get_alignment_segment_nest.py | 1 + .../api/alignment/get_alignment_station.py | 1 + .../api/alignment/get_referent_nest.py | 5 +++-- .../ifcopenshell/api/alignment/util.py | 3 ++- .../api/alignment/test_add_segment_to_layout.py | 6 +++--- .../api/alignment/test_add_vertical_alignment.py | 8 ++++---- .../test/api/alignment/test_create_by_pi_method.py | 14 +++++++------- .../test/api/alignment/test_create_no_geometry.py | 2 +- .../test_horizontal_layout_by_pi_method.py | 4 ++-- .../test/api/alignment/test_name_segments.py | 3 ++- .../test/api/alignment/test_referent_names.py | 9 ++++----- .../alignment/test_vertical_layout_by_pi_method.py | 8 ++++---- 20 files changed, 57 insertions(+), 47 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/wall.py b/src/bonsai/bonsai/bim/module/model/wall.py index 067e37c0ae..e2826fbada 100644 --- a/src/bonsai/bonsai/bim/module/model/wall.py +++ b/src/bonsai/bonsai/bim/module/model/wall.py @@ -469,8 +469,12 @@ class ChangeExtrusionXAngle(bpy.types.Operator, tool.Ifc.Operator): existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, pi, tolerance=0.001) else existing_x_angle coord_list = builder.get_polyline_coords(extrusion.SweptArea.OuterCurve) - coord_list = [(p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list] # Reset the transformation and returns to the original points with 0 degrees - coord_list = [(p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list] # Apply the transformation for the new x_angle + coord_list = [ + (p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list + ] # Reset the transformation and returns to the original points with 0 degrees + coord_list = [ + (p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list + ] # Apply the transformation for the new x_angle builder.set_polyline_coords(extrusion.SweptArea.OuterCurve, coord_list) # The extrusion direction calculated previously default to the positive direction diff --git a/src/bonsai/scripts/dev_environment.py b/src/bonsai/scripts/dev_environment.py index cff36d8320..55d3fc2a77 100644 --- a/src/bonsai/scripts/dev_environment.py +++ b/src/bonsai/scripts/dev_environment.py @@ -50,7 +50,6 @@ else: raise RuntimeError("Unsupported platform") - BONSAI_PATH_CANDIDATES = ( # Installed from Bonsai Unstalble Repo. BLENDER_PATH / r"extensions/raw_githubusercontent_com/bonsai", diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py index 4baf0a4e8f..b6e10113a7 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py @@ -137,7 +137,7 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg start_dist_along = segment.DesignParameters.StartDistAlong + segment.DesignParameters.HorizontalLength zero_length_segment.DesignParameters.StartDistAlong = start_dist_along - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,layout) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, layout) end_referent = referent_nest.RelatedObjects[-1] end_referent.Name = f"{_get_segment_start_point_label(zero_length_segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,start_station+start_dist_along)})" @@ -180,13 +180,13 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg referent = ifcopenshell.api.alignment.add_stationing_referent( file, layout, distance_along=dist_along, station=station, name=name, positioned_product=segment ) - ifcopenshell.api.nest.reorder_nesting(file,referent,-1,-1) + ifcopenshell.api.nest.reorder_nesting(file, referent, -1, -1) if len(curve.Segments) == 2 and layout.is_a("IfcAlignmentHorizontal"): # this is the first real segment in the horizontal alignment # update the location of the alignment's stationing referent alignment = ifcopenshell.api.alignment.get_alignment(layout) - ref_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + ref_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) stationing_referent = ref_nest.RelatedObjects[0] p = curve_evaluator.evaluate( stationing_referent.ObjectPlacement.RelativePlacement.Location.DistanceAlong.wrappedValue diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py index 2c68fbb2a4..c1590164e9 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py @@ -34,7 +34,7 @@ def add_stationing_referent( distance_along: float, station: float, name: str, - positioned_product: entity_instance + positioned_product: entity_instance, ) -> entity_instance: """ Adds an IfcReferent to the element with the Pset_Stationing property set. @@ -44,7 +44,7 @@ def add_stationing_referent( :param distance_along: distance along the alignment curve :param station: station value :param name: name to assign to IfcReferent.Name, typically a stringized version of the station value - :param positioned_product: the product whose position is informed by the referent + :param positioned_product: the product whose position is informed by the referent :return: referent Example: @@ -144,7 +144,7 @@ def add_stationing_referent( pset_stationing = ifcopenshell.api.pset.add_pset(file, product=referent, name="Pset_Stationing") ifcopenshell.api.pset.edit_pset(file, pset=pset_stationing, properties={"Station": station}) - nest = ifcopenshell.api.alignment.get_referent_nest(file,element) + nest = ifcopenshell.api.alignment.get_referent_nest(file, element) nest.RelatedObjects += (referent,) if len(referent.Positions) == 0: diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py index 67c3757bcb..daa44ed460 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py @@ -37,15 +37,15 @@ def create( start_station: float = 0.0, ) -> entity_instance: """ - Creates a new alignment with a horizontal layout. Optionally, vertical and cant layouts can be created as well. - The geometric representations are created as well, unless they are explicitly excluded. - Zero length segments are added at the end of the layouts and geometric representations. + Creates a new alignment with a horizontal layout. Optionally, vertical and cant layouts can be created as well. + The geometric representations are created as well, unless they are explicitly excluded. + Zero length segments are added at the end of the layouts and geometric representations. The alignment is automatically aggreated to the project if it exists. Use get_horizontal_layout(alignment), get_vertical_layout(alignment) and get_cant_layout(alignment) to get the corresponding IfcAlignmentHorizontal, IfcAlignmentVertical, and IfcAlignmentCant layout entities. - If the alignment has Viennese Bend transition curves, create the segments in the cant layout before the horizontal layout using create_layout_segment(). + If the alignment has Viennese Bend transition curves, create the segments in the cant layout before the horizontal layout using create_layout_segment(). The horizontal geometry in the Viennese Bend transition curves depends on the Viennese Bend cant parameters. create_layout_segment() automatically creates the geometric representation from the semantic definition. The horizontal segment geometric representation will fail if the cant segment is not defined. @@ -86,8 +86,9 @@ def create( if include_geometry: # define stationing name = ifcopenshell.util.alignment.station_as_string(file, start_station) - referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name, alignment) - + referent = ifcopenshell.api.alignment.add_stationing_referent( + file, alignment, 0.0, start_station, name, alignment + ) # IFC 4.1.4.1.1 Alignment Aggregation To Project project = file.by_type("IfcProject")[0] diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py index 1cf7ac9386..3f6789fd98 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_layout_segment.py @@ -60,7 +60,7 @@ def create_layout_segment( # returned and used when defining the next segment alignment = ifcopenshell.api.alignment.get_alignment(layout) curve = ifcopenshell.api.alignment.get_curve(alignment) - + if curve: if layout.is_a("IfcAlignmentHorizontal"): if curve.is_a("IfcGradientCurve"): diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py index 3086bac669..850ee12ca9 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment.py @@ -18,6 +18,7 @@ from ifcopenshell import entity_instance + def get_alignment(layout: entity_instance) -> entity_instance: """ Returns the alignment that nests this layout diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py index 495157ce14..b870fd1692 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_layout_nest.py @@ -19,11 +19,12 @@ import ifcopenshell from ifcopenshell import entity_instance + def get_alignment_layout_nest(alignment: entity_instance) -> entity_instance: """ Searches for the IfcRelNest that contains IfcAlignmentHorizontal, IfcAlignmentVertical, or IfcAlignmentCant - :param alignment: the alignment + :param alignment: the alignment :return: Returns the IfcRelNests containing the alignment layout """ layout_types = ["IfcAlignmentHorizontal", "IfcAlignmentVertical", "IfcAlignmentCant"] diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py index 49cb7628e5..fba39617ea 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_segment_nest.py @@ -19,6 +19,7 @@ import ifcopenshell from ifcopenshell import entity_instance + def get_alignment_segment_nest(layout: entity_instance) -> entity_instance: """ Searches for the IfcRelNest that contains IfcAlignmentSegment diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py index 9ca8120bf3..313ab949a7 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py @@ -21,6 +21,7 @@ import ifcopenshell.api.alignment import ifcopenshell.util.element from ifcopenshell import entity_instance + def get_alignment_station(file: ifcopenshell.file, alignment: entity_instance) -> float: """ Returns the start station of the alignment. If the alignment is nested by an IfcReferent diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py index 74eab17056..0efad8c3cb 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py @@ -19,7 +19,8 @@ import ifcopenshell from ifcopenshell import entity_instance -def get_referent_nest(file: ifcopenshell.file,entity: entity_instance) -> entity_instance: + +def get_referent_nest(file: ifcopenshell.file, entity: entity_instance) -> entity_instance: """ Searches for the IfcRelNest that contains IfcReferent. If one is not found, a empty IfcRelNests is created. @@ -32,5 +33,5 @@ def get_referent_nest(file: ifcopenshell.file,entity: entity_instance) -> entity if related_object.is_a("IfcReferent"): return nest - nest = file.createIfcRelNests(GlobalId=ifcopenshell.guid.new(),RelatingObject=entity,RelatedObjects=[]) + nest = file.createIfcRelNests(GlobalId=ifcopenshell.guid.new(), RelatingObject=entity, RelatedObjects=[]) return nest diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py index f0295b331b..389f94576a 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/util.py @@ -163,10 +163,11 @@ def print_composite_curve_deep(curve): print(" " * 4, segment.Placement.Location) print(" " * 4, segment.Placement.RefDirection) + def print_positioned_products(file: ifcopenshell.file): referents = file.by_type("IfcReferent") for referent in referents: print(referent) for rel in referent.Positions: for product in rel.RelatedProducts: - print(" " * 2,product) \ No newline at end of file + print(" " * 2, product) diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py b/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py index 1b0e72c51c..6ca593f7dd 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py @@ -68,10 +68,10 @@ def test_add_segment_to_layout(): _add_segment_to_layout(file, horizontal_alignment, alignment_segment) assert len(horizontal_alignment.IsNestedBy) == 2 - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,horizontal_alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, horizontal_alignment) segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_alignment) - assert (len(segment_nest.RelatedObjects) == 2) - assert (len(referent_nest.RelatedObjects) == 2) + assert len(segment_nest.RelatedObjects) == 2 + assert len(referent_nest.RelatedObjects) == 2 test_add_segment_to_layout() diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py index 6287d28738..70247f97e5 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py @@ -33,8 +33,8 @@ def test_add_vertical_alignment(): assert len(alignment.IsDecomposedBy) == 0 # no child alignments assert len(alignment.IsNestedBy) == 2 # nests for layout and referents - assert len(alignment.IsNestedBy[0].RelatedObjects) == 1 - assert ifcopenshell.api.alignment.get_referent_nest(file,alignment).RelatedObjects[0].is_a("IfcReferent") + assert len(alignment.IsNestedBy[0].RelatedObjects) == 1 + assert ifcopenshell.api.alignment.get_referent_nest(file, alignment).RelatedObjects[0].is_a("IfcReferent") assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") curve = ifcopenshell.api.alignment.get_curve(alignment) assert curve.is_a("IfcCompositeCurve") @@ -43,7 +43,7 @@ def test_add_vertical_alignment(): assert len(alignment.IsDecomposedBy) == 0 # no child alignments assert len(alignment.IsNestedBy) == 2 - assert (len(alignment.IsNestedBy[0].RelatedObjects) == 2) + assert len(alignment.IsNestedBy[0].RelatedObjects) == 2 assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentVertical") curve = ifcopenshell.api.alignment.get_curve(alignment) @@ -53,7 +53,7 @@ def test_add_vertical_alignment(): vertical_layout = ifcopenshell.api.alignment.add_vertical_layout(file, alignment) assert len(alignment.IsDecomposedBy) == 1 # 1 IfcRelAggreates relationship for the child algiments - assert (len(alignment.IsDecomposedBy[0].RelatedObjects) == 2) + assert len(alignment.IsDecomposedBy[0].RelatedObjects) == 2 for child_alignment in alignment.IsDecomposedBy[0].RelatedObjects: assert child_alignment.is_a("IfcAlignment") diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py index 4486db600a..4b3b0d3c8d 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py @@ -49,19 +49,19 @@ def test_create_by_pi_method(): assert len(alignment.IsNestedBy) == 2 layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) - assert (len(layout_nest.RelatedObjects) == 2) + assert len(layout_nest.RelatedObjects) == 2 horizontal_layout = ifcopenshell.api.alignment.get_horizontal_layout(alignment) horizontal_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_layout) - assert (len(horizontal_segment_nest.RelatedObjects) == 8) - horizontal_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,horizontal_layout) - assert (len(horizontal_referent_nest.RelatedObjects) == 8) + assert len(horizontal_segment_nest.RelatedObjects) == 8 + horizontal_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, horizontal_layout) + assert len(horizontal_referent_nest.RelatedObjects) == 8 vertical_layout = ifcopenshell.api.alignment.get_vertical_layout(alignment) vertical_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vertical_layout) - assert (len(vertical_segment_nest.RelatedObjects) == 10) - vertical_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,vertical_layout) - assert (len(vertical_referent_nest.RelatedObjects) == 10) + assert len(vertical_segment_nest.RelatedObjects) == 10 + vertical_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, vertical_layout) + assert len(vertical_referent_nest.RelatedObjects) == 10 test_create_by_pi_method() diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py b/src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py index 308525fbe0..15b64af2f9 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py +++ b/src/ifcopenshell-python/test/api/alignment/test_create_no_geometry.py @@ -29,7 +29,7 @@ def test_create_no_geometry(): ifcopenshell.api.unit.assign_unit(file, units=[length]) # creates an IfcAlignment with an IfcAlignmentHorizontal layout containing only the zero length segment - ali = ifcopenshell.api.alignment.create(file, "A1", include_vertical=True,include_geometry=False) + ali = ifcopenshell.api.alignment.create(file, "A1", include_vertical=True, include_geometry=False) # append a segment to the horizontal layout horizontal_alignment = ifcopenshell.api.alignment.get_horizontal_layout(ali) diff --git a/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py index c500d3d66e..a4678f7e0e 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_horizontal_layout_by_pi_method.py @@ -46,12 +46,12 @@ def test_horizontal_layout_by_pi_method(): assert len(alignment.IsDecomposedBy) == 0 # no child alignments assert len(alignment.IsNestedBy) == 2 - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) assert referent_nest.RelatedObjects[0].is_a("IfcReferent") assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout_nest.RelatedObjects[0]) - assert (len(segment_nest.RelatedObjects) == 3) # segments in horizontal layout + assert len(segment_nest.RelatedObjects) == 3 # segments in horizontal layout test_horizontal_layout_by_pi_method() diff --git a/src/ifcopenshell-python/test/api/alignment/test_name_segments.py b/src/ifcopenshell-python/test/api/alignment/test_name_segments.py index ee84bcde85..5a1174573b 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_name_segments.py +++ b/src/ifcopenshell-python/test/api/alignment/test_name_segments.py @@ -55,4 +55,5 @@ def test_name_segments(): assert f"Q{i}" == segment.Name i += 1 -test_name_segments() \ No newline at end of file + +test_name_segments() diff --git a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py index 06c0bad61b..6939190d5f 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py +++ b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py @@ -98,7 +98,7 @@ def callback_alignment(): def test_with_default_names(default_names_alignment): hlayout = ifcopenshell.api.alignment.get_horizontal_layout(default_names_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,hlayout) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, hlayout) assert "P.O.B." in referent_nest.RelatedObjects[0].Name assert "P.C." in referent_nest.RelatedObjects[1].Name @@ -106,7 +106,7 @@ def test_with_default_names(default_names_alignment): assert "P.O.E." in referent_nest.RelatedObjects[-1].Name vlayout = ifcopenshell.api.alignment.get_vertical_layout(default_names_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,vlayout) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, vlayout) assert "V.P.O.B." in referent_nest.RelatedObjects[0].Name assert "P.V.C." in referent_nest.RelatedObjects[1].Name @@ -116,7 +116,7 @@ def test_with_default_names(default_names_alignment): def test_with_callbacks(callback_alignment): hlayout = ifcopenshell.api.alignment.get_horizontal_layout(callback_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,hlayout) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, hlayout) assert "A" in referent_nest.RelatedObjects[0].Name assert "Q" in referent_nest.RelatedObjects[1].Name @@ -124,10 +124,9 @@ def test_with_callbacks(callback_alignment): assert "Z" in referent_nest.RelatedObjects[-1].Name vlayout = ifcopenshell.api.alignment.get_vertical_layout(callback_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None,vlayout) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, vlayout) assert "a" in referent_nest.RelatedObjects[0].Name assert "q" in referent_nest.RelatedObjects[1].Name assert "q" in referent_nest.RelatedObjects[2].Name assert "z" in referent_nest.RelatedObjects[-1].Name - diff --git a/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py index 9d39cf4b36..5315070937 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py @@ -59,12 +59,12 @@ def test_vertical_layout_by_pi_method(): assert len(alignment.IsDecomposedBy) == 0 # no child alignments assert len(alignment.IsNestedBy) == 2 - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) - assert(len(referent_nest.RelatedObjects) == 1) - assert(len(layout_nest.RelatedObjects) == 2) + assert len(referent_nest.RelatedObjects) == 1 + assert len(layout_nest.RelatedObjects) == 2 segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vlayout) - assert(len(segment_nest.RelatedObjects) == 3) + assert len(segment_nest.RelatedObjects) == 3 test_vertical_layout_by_pi_method() From 71a6bf25bccbeaf6fa4c9112a167c9bcd7da4a58 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 11:09:28 +0500 Subject: [PATCH 17/39] Fix error loading IFC file without contexts #7060 (8d3aa98) --- src/bonsai/bonsai/tool/unit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bonsai/bonsai/tool/unit.py b/src/bonsai/bonsai/tool/unit.py index 16ec9db2fb..81bc92bd94 100644 --- a/src/bonsai/bonsai/tool/unit.py +++ b/src/bonsai/bonsai/tool/unit.py @@ -203,8 +203,8 @@ class Unit(bonsai.core.tool.Unit): @classmethod def format_value(cls, value: float) -> str: - precision = tool.Ifc.get().by_type("IfcGeometricRepresentationContext")[0].Precision - if precision: + context = next(iter(tool.Ifc.get().by_type("IfcGeometricRepresentationContext")), None) + if context and (precision := context.Precision): decimal_places = math.ceil(math.log10(1 / precision)) else: precision = 1e-5 From e14974a1b5b62eeadc8bf7377048b42fba96605c Mon Sep 17 00:00:00 2001 From: krande Date: Thu, 28 Aug 2025 13:15:33 +0200 Subject: [PATCH 18/39] Add linting feature and update test configurations in `pixi.toml` Introduces a new `lint` feature with `ruff` and `black` dependencies. Extends test setup with additional dependencies and tasks for building, testing, and installation. Cleans up `.gitignore` and removes unused entries from `pixi.lock`. --- cmake/CMakePresets.json | 19 + pixi.lock | 3929 +++++++++++++++++++++++++++++++++++- pixi.toml | 40 +- test/input_temp/.gitignore | 2 - 4 files changed, 3892 insertions(+), 98 deletions(-) delete mode 100644 test/input_temp/.gitignore diff --git a/cmake/CMakePresets.json b/cmake/CMakePresets.json index c36dd0990a..9c10495ad3 100644 --- a/cmake/CMakePresets.json +++ b/cmake/CMakePresets.json @@ -90,6 +90,25 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" } + }, + { + "name": "win-test", + "inherits": [ + "win-shared" + ], + "hidden": false, + "binaryDir": "${sourceDir}/../build/win-test", + "warnings": { + "dev": false + }, + "environment": { + "PREFIX": "${sourceDir}/../.pixi/envs/tests", + "LIBRARY_PREFIX": "${sourceDir}/../.pixi/envs/tests/Library" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "SCHEMA_VERSIONS": "2x3;4;4x3_add2" + } } ] } \ No newline at end of file diff --git a/pixi.lock b/pixi.lock index af1589ab03..acf3f2f6d1 100644 --- a/pixi.lock +++ b/pixi.lock @@ -16,10 +16,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -39,7 +37,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -97,13 +94,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.8.1.1-novtk_h9a8ab00_100.conda @@ -114,8 +107,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -144,12 +135,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -163,7 +152,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda @@ -217,12 +205,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda @@ -234,8 +218,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda @@ -249,10 +231,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -265,7 +245,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda @@ -309,12 +288,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda @@ -323,8 +298,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda @@ -358,10 +331,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -381,7 +352,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -439,13 +409,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.8.1.1-novtk_h9a8ab00_100.conda @@ -456,8 +422,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -486,12 +450,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -505,7 +467,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda @@ -559,12 +520,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda @@ -576,8 +533,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda @@ -591,10 +546,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -607,7 +560,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda @@ -651,12 +603,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda @@ -665,8 +613,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda @@ -680,6 +626,89 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + lint: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.2-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.12.10-h718f522_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/black-25.1.0-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.2-h6e31bce_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.12.10-hab3cb23_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.2-h725018a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.12.10-h429b229_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda prod: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -696,10 +725,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -719,7 +746,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -777,13 +803,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.8.1.1-novtk_h9a8ab00_100.conda @@ -794,8 +816,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -824,12 +844,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -843,7 +861,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda @@ -897,12 +914,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda @@ -914,8 +927,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda @@ -929,10 +940,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -945,7 +954,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda @@ -989,12 +997,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda @@ -1003,8 +1007,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda @@ -1018,6 +1020,467 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + tests: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.44-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h9b37d73_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-hb991d5c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/elementpath-5.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h76bdaa0_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.13.1-h97f6797_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h6e4c0c1_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-34_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hed09d94_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.88.0-hfcd1e18_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.88.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-34_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_104.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-34_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.4-h9969a89_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_104.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-h8261f1e_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h04c0eec_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h7a3aeb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.1-py312h70dad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.1-h171cf75_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.2-py312h33ff503_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.9.0-novtk_h09ba48e_104.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.5-h09fa569_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h55fea9a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.2-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.9.0-novtk_h9a8ab00_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-h3f2d84a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.12.10-h718f522_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.1-py312h21f5128_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.1-h32e72b7_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xmlschema-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xsdata-25.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h4c3975b_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.11.0-h7a00415_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1024.3-h67a6458_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1024.3-haa85c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-hcb3e410_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19-19.1.7-default_h3571c67_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19.1.7-default_h576c50e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-19.1.7-hc73cdc9_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-19.1.7-h7e5c614_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-19.1.7-default_heb2e8d1_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-19.1.7-hb295874_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-19.1.7-h7e5c614_25.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-19.1.7-h52031e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-19.1.7-hc6f8467_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.11.0-h307afc9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/elementpath-5.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.13.1-h502464c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hc8237f9_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jasper-4.2.8-h9ce442b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-955.13-hc3792c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-955.13-hf1c22e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.4-ha6bc127_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-34_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.88.0-hf0da243_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.88.0-h20888b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.88.0-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-34_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp19.1-19.1.7-default_h3571c67_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.14.1-h5dec5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-19.1.7-h7c275be_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.1.0-h5f6db21_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.1.0-hfa3c126_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-34_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm19-19.1.7-hc29ff6c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h83c2472_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.4-h0ade9e5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h59ddb5d_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-he1bc88e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h59ddae0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19-19.1.7-he90a8e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19.1.7-h3fe3016_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.1-py312ha108ba6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.13.1-h0ba0a54_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h92383a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.2-py312hda18a35_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.9.0-novtk_h7eef8d4_104.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.5-h5783f79_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h036ada5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.2-h6e31bce_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.9.0-novtk_hb8dc2b1_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-h92383a6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.12.10-hab3cb23_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.1-py312hbf10b29_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.1-h7b1c113_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xmlschema-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xsdata-25.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h2f459f6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.11.0-h528c1b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-hc4f255e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/elementpath-5.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freeglut-3.2.2-he0c23c2_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.13.1-h9ea8674_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_he30205f_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jasper-4.2.8-h8ad263b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.4-h20038f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-34_h5709861_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.88.0-h9dfe17d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.88.0-h1c1089f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.88.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-34_h2a3cdd5_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.14.1-h88aaa65_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.1-default_h88281d1_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-34_hf9ab0e9_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h7351971_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.4-h866491b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h550210a_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h741aa76_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h25c3957_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-20.1.8-hfa2b4ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lxml-6.0.1-py312hc85b015_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.13.1-h477610d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.12.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.2-py312ha72d056_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.9.0-novtk_h9449c50_104.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.5-h4750f91_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h24db6dd_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.2-h725018a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.9.0-novtk_h94eb9d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.12.10-h429b229_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.1-py312h3f81574_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.1-hf4c94c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_31.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xmlschema-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xsdata-25.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312he06e257_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -1061,6 +1524,15 @@ packages: license_family: GPL size: 33876 timestamp: 1729655402186 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.44-h4852527_1.conda + sha256: 3feccd1dd61bc18e41548d015e65f731400aa3ffe65802bc22ad772052d5326c + md5: 0fab3ce18775aba71131028a04c20dfe + depends: + - binutils_impl_linux-64 >=2.44,<2.45.0a0 + license: GPL-3.0-only + license_family: GPL + size: 34998 + timestamp: 1752032786202 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda sha256: 267e78990247369b13234bda270f31beb56a600b4851a8244e31dd9ad85b3b17 md5: cf0c5521ac2a20dfa6c662a4009eeef6 @@ -1071,6 +1543,16 @@ packages: license_family: GPL size: 5682777 timestamp: 1729655371045 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_1.conda + sha256: 8556847f91a85c31ef65b05b7e9182a52775616d5d4e550dfb48cdee5fd35687 + md5: e45cfedc8ca5630e02c106ea36d2c5c6 + depends: + - ld_impl_linux-64 2.44 h1423503_1 + - sysroot_linux-64 + license: GPL-3.0-only + license_family: GPL + size: 3781716 + timestamp: 1752032761608 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda sha256: df52bd8b8b2a20a0c529d9ad08aaf66093ac318aa8a33d270f18274341a77062 md5: 18aba879ddf1f8f28145ca6fcb873d8c @@ -1080,6 +1562,103 @@ packages: license_family: GPL size: 34945 timestamp: 1729655404893 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_1.conda + sha256: fbd94448d099a8c5fe7d9ec8c67171ab6e2f4221f453fe327de9b5aaf507f992 + md5: 38e0be090e3af56e44a9cac46101f6cd + depends: + - binutils_impl_linux-64 2.44 h4bf12b8_1 + license: GPL-3.0-only + license_family: GPL + size: 36046 + timestamp: 1752032788780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda + sha256: a115a0984455ee031ac90fc533ab719fd5f5e3803930ccf0a934fb7416d568ef + md5: 986a60de52eec10b36c61bb3890858ff + depends: + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9 + - platformdirs >=2 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 394760 + timestamp: 1738616131766 +- conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda + sha256: c68f110cd491dc839a69e340930862e54c00fb02cede5f1831fcf8a253bd68d2 + md5: b9b0c42e7316aa6043bdfd49883955b8 + depends: + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9 + - platformdirs >=2 + - python >=3.11 + license: MIT + license_family: MIT + size: 172678 + timestamp: 1742502887437 +- conda: https://conda.anaconda.org/conda-forge/osx-64/black-25.1.0-py312hb401068_0.conda + sha256: e937f18e36e23ecf0ec9ab89fc3ef5263308e88b645c4278fe8807fd95bef4c1 + md5: d37d5213fcf23a33d946e40937578a02 + depends: + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9 + - platformdirs >=2 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 393484 + timestamp: 1738616259890 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + sha256: dc27c58dc717b456eee2d57d8bc71df3f562ee49368a2351103bc8f1b67da251 + md5: a32e0c069f6c3dcac635f7b0b0dac67e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_3 + license: MIT + license_family: MIT + size: 351721 + timestamp: 1749230265727 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + sha256: d1a8635422d99b4b7cc1b35d62d1a5c392ae0a4d74e0a44bf190916a21180ba3 + md5: 11489c0fc22f550acf63da5e7ec7304d + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h6e16a3a_3 + license: MIT + license_family: MIT + size: 367262 + timestamp: 1749230495846 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + sha256: d5c18a90220853c86f7cc23db62b32b22c6c5fe5d632bc111fc1e467c9fd776f + md5: a87a39f9eb9fd5f171b13d8c79f7a99a + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 h2466b09_3 + license: MIT + license_family: MIT + size: 321941 + timestamp: 1749231054102 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -1120,6 +1699,16 @@ packages: license_family: MIT size: 206085 timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda + sha256: f8003bef369f57396593ccd03d08a8e21966157269426f71e943f96e4b579aeb + md5: f7f0d6cc2dc986d42ac2689ec88192be + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 206884 + timestamp: 1744127994291 - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda sha256: 8dcc1628d34fe7d759f3a7dee52e09c5162a3f9669dddd6100bff965450f4a0a md5: 133255af67aaf1e0c0468cc753fd800b @@ -1129,6 +1718,26 @@ packages: license_family: MIT size: 184455 timestamp: 1734208242547 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda + sha256: b37f5dacfe1c59e0a207c1d65489b760dff9ddb97b8df7126ceda01692ba6e97 + md5: eafe5d9f1a8c514afe41e6e833f66dfd + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 184824 + timestamp: 1744128064511 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda + sha256: 8e7a40f16400d7839c82581410aa05c1f8324a693c9d50079f8c50dc9fb241f0 + md5: abd85120de1187b0d1ec305c2173c71b + depends: + - binutils + - gcc + - gcc_linux-64 14.* + license: BSD-3-Clause + license_family: BSD + size: 6693 + timestamp: 1753098721814 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda sha256: 1e4b86b0f3d4ce9f3787b8f62e9f2c5683287f19593131640eed01cbdad38168 md5: 3cb814f83f1f71ac1985013697f80cc1 @@ -1140,6 +1749,18 @@ packages: license_family: BSD size: 6196 timestamp: 1736437002021 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.11.0-h7a00415_0.conda + sha256: 2bd1cf3d26789b7e1d04e914ccd169bd618fceed68abf7b6a305266b88dcf861 + md5: 2b23ec416cef348192a5a17737ddee60 + depends: + - cctools >=949.0.1 + - clang_osx-64 19.* + - ld64 >=530 + - llvm-openmp + license: BSD-3-Clause + license_family: BSD + size: 6695 + timestamp: 1753098825695 - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda sha256: 31851c99aa6250be4885bb4a8ee2001e92c710f7fc89eb0947f575cc51405ec4 md5: ab45badcb5d035d3bddfdbdd96e00967 @@ -1152,6 +1773,15 @@ packages: license_family: BSD size: 6236 timestamp: 1736437072741 +- conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.11.0-h528c1b4_0.conda + sha256: 55e04bd4af61500cb8cae064386be57d18fbfdf676655ff1c97c7e5d146c6e34 + md5: 6d994ff9ab924ba11c2c07e93afbe485 + depends: + - vs2022_win-64 + license: BSD-3-Clause + license_family: BSD + size: 6938 + timestamp: 1753098808371 - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.9.0-hcfcfb64_0.conda sha256: fa07ffc464b5a104a4d504c1a0a684ae383a67bef907d61697f22d48340c46cd md5: 7d9b49b7ef31f9a23bdbc7ea0dd9996e @@ -1167,6 +1797,22 @@ packages: license: ISC size: 158144 timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-h4c7d964_0.conda + sha256: 3b82f62baad3fd33827b01b0426e8203a2786c8f452f633740868296bcbe8485 + md5: c9e0c0f82f6e63323827db462b40ede8 + depends: + - __win + license: ISC + size: 154489 + timestamp: 1754210967212 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda + sha256: 837b795a2bb39b75694ba910c13c15fa4998d4bb2a622c214a6a5174b2ae53d1 + md5: 74784ee3d225fc3dca89edb635b4e5cc + depends: + - __unix + license: ISC + size: 154402 + timestamp: 1754210968730 - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda sha256: 42e911ee2d8808eacedbec46d99b03200a6138b8e8a120bd8acabe1cac41c63b md5: 3418b6c8cac3e71c0bc089fc5ea53042 @@ -1190,6 +1836,17 @@ packages: license_family: Other size: 21297 timestamp: 1738620872016 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1024.3-h67a6458_0.conda + sha256: 7a4dea5460a9094c02e9df4d0064be3c84b108ca54bd41b000577afa6f9914f7 + md5: a6698215b42b9310815ef3b9d95d0fc9 + depends: + - cctools_osx-64 1024.3 haa85c18_0 + - ld64 955.13 hc3792c1_0 + - libllvm19 >=19.1.7,<19.2.0a0 + license: APSL-2.0 + license_family: Other + size: 20743 + timestamp: 1756212761738 - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda sha256: 2694cafb16b591c6c0008b9862c2da45c5b618381aaa229a4b32f71df04cfcc0 md5: b360b015bfbce96ceecc3e6eb85aed11 @@ -1209,6 +1866,74 @@ packages: license_family: Other size: 1121052 timestamp: 1738620829929 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1024.3-haa85c18_0.conda + sha256: 0c95e7dc7b2df006b97485a8eae953758fa15bf68c11b8f3919ba7c1053370ef + md5: ee3c3fec64ee60639cf1e1b3e3b55ea7 + depends: + - __osx >=10.13 + - ld64_osx-64 >=955.13,<955.14.0a0 + - libcxx + - libllvm19 >=19.1.7,<19.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-tools 19.1.* + - sigtool + constrains: + - clang 19.1.* + - ld64 955.13.* + - cctools 1024.3.* + license: APSL-2.0 + license_family: Other + size: 741390 + timestamp: 1756212731349 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.8.3-pyhd8ed1ab_0.conda + sha256: a1ad5b0a2a242f439608f22a538d2175cac4444b7b3f4e2b8c090ac337aaea40 + md5: 11f59985f49df4620890f3e746ed7102 + depends: + - python >=3.9 + license: ISC + size: 158692 + timestamp: 1754231530168 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + sha256: 94fe49aed25d84997e2630d6e776a75ee2a85bd64f258702c57faa4fe2986902 + md5: 5bbc69b8194fedc2792e451026cac34f + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 282425 + timestamp: 1725560725144 +- conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + sha256: ac007bf5fd56d13e16d95eea036433012f2e079dc015505c8a79efebbad1fcbc + md5: 08310c1a22ef957d537e547f8d484f92 + depends: + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 288142 + timestamp: 1725560896359 - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda sha256: 3e462f93064c9a0159bb1cf3a5433fa03917d12d3631477646e83d5a6e3dd982 md5: 3dc6d2006e420dfd77374298f871e45e @@ -1223,6 +1948,20 @@ packages: license: GPL3/LGPL3 size: 5868980 timestamp: 1729765220331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h9b37d73_1.conda + sha256: 77942d4f054e99faa7847cac883a6298dd26e4f997b251e7992f36efcd202da1 + md5: 257f168056bc44e0cbc6351c8e913234 + depends: + - __glibc >=2.17,<3.0.a0 + - eigen + - libboost >=1.88.0,<1.89.0a0 + - libboost-devel + - libgcc >=14 + - libstdcxx >=14 + - mpfr >=4.2.1,<5.0a0 + license: GPL3/LGPL3 + size: 5866779 + timestamp: 1753275161432 - conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-h20ba9b8_0.conda sha256: 948be4f7c3f89b96d3af81fd98d6757943b674b4cba64a1a56540344a2108faa md5: 981fcaecfb2dc8ccada88b02b6fb9b6a @@ -1236,6 +1975,19 @@ packages: license: GPL3/LGPL3 size: 5875258 timestamp: 1729765412521 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-hcb3e410_1.conda + sha256: 34e59b82abd791cec280e740737173cfac4c52575a65145b6b493339a5cac52e + md5: 44cd1b5233adf2920933bd961bae951f + depends: + - __osx >=10.13 + - eigen + - libboost >=1.88.0,<1.89.0a0 + - libboost-devel + - libcxx >=19 + - mpfr >=4.2.1,<5.0a0 + license: GPL3/LGPL3 + size: 5887000 + timestamp: 1753275378338 - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda sha256: 53002381648f1e9bc9b8596494b52631827910b4e073eda9ed24c916641c8d87 md5: f9defd692bff41e9771b90aa6aae23ec @@ -1250,6 +2002,29 @@ packages: license: GPL3/LGPL3 size: 5852917 timestamp: 1729765382648 +- conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-hc4f255e_1.conda + sha256: a1f688c4534805745ecdf5af56693e51cc9f08ca229aa0833b9bcd8d38809319 + md5: 1d24d2a3da87350a846ab3bdbd4b9396 + depends: + - eigen + - libboost >=1.88.0,<1.89.0a0 + - libboost-devel + - mpfr >=4.2.1,<5.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: GPL3/LGPL3 + size: 5890254 + timestamp: 1753275328387 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.3-pyhd8ed1ab_0.conda + sha256: 838d5a011f0e7422be6427becba3de743c78f3874ad2743c341accbba9bb2624 + md5: 7e7d5ef1b9ed630e4a1c358d6bc62284 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 51033 + timestamp: 1754767444665 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_7.conda sha256: def6d2facf51e34dca06f3e9063c52fadb096783d7d8d601f309380f14ce5810 md5: 623987a715f5fb4cbee8f059d91d0397 @@ -1259,6 +2034,15 @@ packages: license_family: Apache size: 71151 timestamp: 1738270236118 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19.1.7-default_h576c50e_3.conda + sha256: 838abc0a72f1227cac837b9350809d7c852e5e4e69952b21789f12ae1557bcce + md5: 7b5ece07d175b7175b4a544f9835683a + depends: + - clang-19 19.1.7 default_h3571c67_3 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 24253 + timestamp: 1747709797405 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_7.conda sha256: 3a74de8af6896d276847332c1a350bab3c1791a13090588463edf4fabf9d424d md5: 098293f10df1166408bac04351b917c5 @@ -1271,6 +2055,18 @@ packages: license_family: Apache size: 807874 timestamp: 1738270127631 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19-19.1.7-default_h3571c67_3.conda + sha256: 6ff0928325ea99a65b1c3dc0a212fd0cb5b65884657c8d3c0bcffc038d092431 + md5: 5bd5cda534488611b3970b768139127c + depends: + - __osx >=10.13 + - libclang-cpp19.1 19.1.7 default_h3571c67_3 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 766607 + timestamp: 1747709700983 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda sha256: 1b6d10afcfc661500f98c81a3c6bf55a923e75ce74bc404e84c99f030fd647de md5: 3f2a260a1febaafa4010aac7c2771c9e @@ -1284,6 +2080,19 @@ packages: license_family: BSD size: 17783 timestamp: 1731984965328 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-19.1.7-hc73cdc9_25.conda + sha256: 88edc0b34affbfffcec5ffea59b432ee3dd114124fd4d5f992db6935421f4a64 + md5: 76954503be09430fb7f4683a61ffb7b0 + depends: + - cctools_osx-64 + - clang 19.1.7.* + - compiler-rt 19.1.7.* + - ld64_osx-64 + - llvm-tools 19.1.7.* + license: BSD-3-Clause + license_family: BSD + size: 18175 + timestamp: 1748575764900 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda sha256: 07348ac1da6697b72623be27f145c0fbaa03a123244a0289f1c6779a889e8339 md5: 207116d6cb3762c83661bb49e6976e7d @@ -1293,6 +2102,15 @@ packages: license_family: BSD size: 21092 timestamp: 1731984970165 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-19.1.7-h7e5c614_25.conda + sha256: 6435fdeae76f72109bc9c7b41596104075a2a8a9df3ee533bd98bb06548bbc83 + md5: a526ba9df7e7d5448d57b33941614dae + depends: + - clang_impl_osx-64 19.1.7 hc73cdc9_25 + license: BSD-3-Clause + license_family: BSD + size: 21473 + timestamp: 1748575768567 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_7.conda sha256: a1b0a353fbc465034ceafa6dbf3cf6e4ce9be07088bb38e44e30c9ab1265057e md5: f2ec690c4ac8d9e6ffbf3be019d68170 @@ -1303,6 +2121,16 @@ packages: license_family: Apache size: 71187 timestamp: 1738270260674 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-19.1.7-default_heb2e8d1_3.conda + sha256: 5870bdbd2c15abf84692f6069b2181a7a28f76451b28fc8e986b978d4f5c577f + md5: 1c1bbb9fb93dcf58f4dc6e308b1af083 + depends: + - clang 19.1.7 default_h576c50e_3 + - libcxx-devel 19.1.* + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 24370 + timestamp: 1747709814665 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda sha256: f8b2b92c1389ddaadf3eb8f11d63403fcbb5b532299d9f86f54cc1f256fad1c0 md5: 8f15135d550beba3e9a0af94661bed16 @@ -1315,6 +2143,18 @@ packages: license_family: BSD size: 17821 timestamp: 1731984993303 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-19.1.7-hb295874_25.conda + sha256: 8a2571da4bd90e3fc4523e962d6562607df133694a409959ec9c7ac4292bd676 + md5: 9fe0247ba2650f90c650001f88a87076 + depends: + - clang_osx-64 19.1.7 h7e5c614_25 + - clangxx 19.1.7.* + - libcxx >=19 + - libllvm19 >=19.1.7,<19.2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 18289 + timestamp: 1748575802444 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda sha256: 36315114552b56069cc6792289b119ab62d311f435d9abd98a4cc61a857c2970 md5: b6ee451fb82e7e27ea070cbac3117d59 @@ -1325,6 +2165,47 @@ packages: license_family: BSD size: 19451 timestamp: 1731984998897 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-19.1.7-h7e5c614_25.conda + sha256: 81365d98e1bb5f98a7acd1bde86ccf534b36c78bfae601e2c26a73d8de52da1e + md5: d0b5d9264d40ae1420e31c9066a1dcf0 + depends: + - clang_osx-64 19.1.7 h7e5c614_25 + - clangxx_impl_osx-64 19.1.7 hb295874_25 + license: BSD-3-Clause + license_family: BSD + size: 19873 + timestamp: 1748575806458 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + sha256: 8aee789c82d8fdd997840c952a586db63c6890b00e88c4fb6e80a38edd5f51c0 + md5: 94b550b8d3a614dbd326af798c7dfb40 + depends: + - __unix + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 87749 + timestamp: 1747811451319 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda + sha256: 20c2d8ea3d800485245b586a28985cba281dd6761113a49d7576f6db92a0a891 + md5: 3a59475037bc09da916e4062c5cad771 + depends: + - __win + - colorama + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 88117 + timestamp: 1747811467132 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_1.conda + sha256: cb7279eecddbd35ea78fd0e189a9a7db8b84c2c0e3b1271cf26251615f75dc4d + md5: 7cd83dd6831b61ad9624a694e4afd7dc + depends: + - click + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 10124 + timestamp: 1734029586298 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda sha256: 9b775bbdee337d67b180b6fbc6c93fa1ba73a18b167c242d792dee2797245148 md5: b3b88a7ec6372b6f2c0ddb31ee009ebd @@ -1402,6 +2283,17 @@ packages: license_family: APACHE size: 95345 timestamp: 1725258125808 +- conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-19.1.7-h52031e2_0.conda + sha256: 781b70f7475d387183fba59b5d88e874ec976458b893ec4e8c4c2564944aa680 + md5: 8098d99b4c30adb2f9cc18f8584d0b45 + depends: + - __osx >=10.13 + - clang 19.1.7.* + - compiler-rt_osx-64 19.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 96517 + timestamp: 1736976706563 - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda sha256: 1230fe22d190002693ba77cf8af754416d6ea7121707b74a7cd8ddc537f98bdb md5: 76f906e6bdc58976c5593f650290ae20 @@ -1414,6 +2306,38 @@ packages: license_family: APACHE size: 10420490 timestamp: 1725258080385 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-19.1.7-hc6f8467_0.conda + sha256: bc64b862791161f90adb0e9b91290091604a3791e4434cb3901c13101136255b + md5: d5216811ea499344af3f05f71b922637 + depends: + - clang 19.1.7.* + constrains: + - compiler-rt 19.1.7 + - clangxx 19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 10666253 + timestamp: 1736976649189 +- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-hb991d5c_4.conda + sha256: 275a7a6c627ded925e98a94162d4efd7ad578731915334831ee8881b34aecad1 + md5: b6025bc20bf223d68402821f181707fb + depends: + - gcc_impl_linux-64 >=14.3.0,<14.3.1.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 33272 + timestamp: 1753905153853 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + sha256: 3fcc97ae3e89c150401a50a4de58794ffc67b1ed0e1851468fcc376980201e25 + md5: 5da8c935dca9186673987f79cef0b2a5 + depends: + - c-compiler 1.11.0 h4d9bdce_0 + - gxx + - gxx_linux-64 14.* + license: BSD-3-Clause + license_family: BSD + size: 6635 + timestamp: 1753098722177 - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda sha256: 5efc51b8e7d87fc5380f00ace9f9c758142eade520a63d3631d2616d1c1b25f9 md5: 1ce8b218d359d9ed0ab481f2a3f3c512 @@ -1425,6 +2349,16 @@ packages: license_family: BSD size: 6168 timestamp: 1736437002465 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.11.0-h307afc9_0.conda + sha256: d6976f8d8b51486072abfe1e76a733688380dcbd1a8e993a43d59b80f7288478 + md5: 463bb03bb27f9edc167fb3be224efe96 + depends: + - c-compiler 1.11.0 h7a00415_0 + - clangxx_osx-64 19.* + license: BSD-3-Clause + license_family: BSD + size: 6732 + timestamp: 1753098827160 - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda sha256: 05ba8e40b4ff53c3326a8e0adcf63ba9514b614435da737c5b8942eed64ef729 md5: cd17d9bf9780b0db4ed31fb9958b167f @@ -1435,6 +2369,15 @@ packages: license_family: BSD size: 6256 timestamp: 1736437074458 +- conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda + sha256: c888f4fe9ec117c1c01bfaa4c722ca475ebbb341c92d1718afa088bb0d710619 + md5: 4d94d3c01add44dc9d24359edf447507 + depends: + - vs2022_win-64 + license: BSD-3-Clause + license_family: BSD + size: 6957 + timestamp: 1753098809481 - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda sha256: b7ebc992f8ff3d5f9f40ea3555534440a0438fead4dd5d1dea60113ce224b487 md5: 6c4b643c7dd8f13dafc8679ffc5671eb @@ -1444,6 +2387,17 @@ packages: license_family: BSD size: 6528 timestamp: 1736437098756 +- conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda + sha256: 290a1d9935947c72d90781efad59d7be36fc3e6c9ce4bf5d5478804ce9070006 + md5: b1e2509c25d36f7b19ceb42193120071 + depends: + - charset-normalizer >=3.0.0 + - python >=3.9 + - untokenize >=0.1.1 + license: MIT + license_family: MIT + size: 30130 + timestamp: 1746994987190 - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda sha256: 53b15a98aadbe0704479bacaf7a5618fcb32d1577be320630674574241639b34 md5: b1b879d6d093f55dd40d58b5eb2f0699 @@ -1474,6 +2428,15 @@ packages: license_family: MOZILLA size: 1089706 timestamp: 1690273089254 +- conda: https://conda.anaconda.org/conda-forge/noarch/elementpath-5.0.4-pyhd8ed1ab_0.conda + sha256: 6c366e1d56ffb2e111fe60177a3de38ce464de58765f69b34437e06c8f1daf32 + md5: 04148798af7d259f25726da3216cc058 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 175341 + timestamp: 1755379273161 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda sha256: ce61f4f99401a4bd455b89909153b40b9c823276aefcbb06f2044618696009ca md5: 72e42d28960d875c7654614f8b50939a @@ -1573,6 +2536,33 @@ packages: license_family: BSD size: 4102 timestamp: 1566932280397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda + sha256: 676540a8e7f73a894cb1fcb870e7bec623ec1c0a2d277094fd713261a02d8d56 + md5: 84ec3f5b46f3076be49f2cf3f1cfbf02 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxcb >=1.16,<2.0.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxfixes + - xorg-libxi + license: MIT + license_family: MIT + size: 144010 + timestamp: 1719014356708 +- conda: https://conda.anaconda.org/conda-forge/win-64/freeglut-3.2.2-he0c23c2_3.conda + sha256: 8b41913ed6c8c0dadda463a649bc16f45e88faa58553efc6830f4de1138c97f2 + md5: 5872031ef7cba8435ff24af056777473 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 111956 + timestamp: 1719014753462 - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda sha256: 03ccff5d255eab7a1736de9eeb539fbb1333036fa5e37ea7c8ec428270067c99 md5: bbdf3d43d752b793ac81f27b28c49e2d @@ -1642,6 +2632,15 @@ packages: license: GPL-2.0-only OR FTL size: 634972 timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + sha256: 7ef7d477c43c12a5b4cddcf048a83277414512d1116aba62ebadfa7056a7d84f + md5: 9ccd736d31e0c6e41f54e704e5312811 + depends: + - libfreetype 2.13.3 ha770c72_1 + - libfreetype6 2.13.3 h48d6fc4_1 + license: GPL-2.0-only OR FTL + size: 172450 + timestamp: 1745369996765 - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e md5: 25152fce119320c980e5470e64834b50 @@ -1651,6 +2650,15 @@ packages: license: GPL-2.0-only OR FTL size: 599300 timestamp: 1694616137838 +- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + sha256: e2870e983889eec73fdc0d4ab27d3f6501de4750ffe32d7d0a3a287f00bc2f15 + md5: 126dba1baf5030cb6f34533718924577 + depends: + - libfreetype 2.13.3 h694c41f_1 + - libfreetype6 2.13.3 h40dfd5c_1 + license: GPL-2.0-only OR FTL + size: 172649 + timestamp: 1745370231293 - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728 md5: 3761b23693f768dc75a8fd0a73ca053f @@ -1663,6 +2671,15 @@ packages: license: GPL-2.0-only OR FTL size: 510306 timestamp: 1694616398888 +- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda + sha256: 0bcc9c868d769247c12324f957c97c4dbee7e4095485db90d9c295bcb3b1bb43 + md5: 633504fe3f96031192e40e3e6c18ef06 + depends: + - libfreetype 2.13.3 h57928b3_1 + - libfreetype6 2.13.3 h0b5ce68_1 + license: GPL-2.0-only OR FTL + size: 184162 + timestamp: 1745370242683 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda sha256: d0161362430183cbdbc3db9cf95f9a1af1793027f3ab8755b3d3586deb28bf84 md5: 606924335b5bcdf90e9aed9a2f5d22ed @@ -1672,6 +2689,16 @@ packages: license_family: BSD size: 53864 timestamp: 1724801360210 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h76bdaa0_4.conda + sha256: ded010fa43178225054436cfc24c1cc74e1f17303f39442b5254422e2f8a0b2d + md5: 7e8d408ed45953d8a9fd5e9c5d44ab2d + depends: + - conda-gcc-specs + - gcc_impl_linux-64 14.3.0.* + license: BSD-3-Clause + license_family: BSD + size: 31016 + timestamp: 1753905350635 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda sha256: 998ade1d487e93fc8a7a16b90e2af69ebb227355bf4646488661f7ae5887873c md5: 0d043dbc126b64f79d915a0e96d3a1d5 @@ -1687,6 +2714,21 @@ packages: license_family: GPL size: 67464415 timestamp: 1724801227937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_4.conda + sha256: 70dd8f8cf040ffcb073c98651aaae614f4db4d76d0c9928a5aea0309a3b29722 + md5: 18005317e139bb60f4c5d3ef9cc46b85 + depends: + - binutils_impl_linux-64 >=2.40 + - libgcc >=14.3.0 + - libgcc-devel_linux-64 14.3.0 h85bb3a7_104 + - libgomp >=14.3.0 + - libsanitizer 14.3.0 hd08acf3_4 + - libstdcxx >=14.3.0 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 71083505 + timestamp: 1753904987887 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda sha256: 1e5ac50580a68fdc7d2f5722abcf1a87898c24b1ab6eb5ecd322634742d93645 md5: ac23afbf5805389eb771e2ad3b476f75 @@ -1698,6 +2740,46 @@ packages: license_family: BSD size: 32005 timestamp: 1731939593317 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda + sha256: 0d7fe52c578ef99f03defe8cab5308124b388c694e88f5494716d11532a6d12a + md5: 2e650506e6371ac4289c9bf7fc207f3b + depends: + - binutils_linux-64 + - gcc_impl_linux-64 14.3.0.* + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + size: 32512 + timestamp: 1748905876846 +- conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.13.1-h97f6797_0.conda + sha256: 3a9c854fa8cf1165015b6ee994d003c3d6a8b0f532ca22b6b29cd6e8d03942ed + md5: 5bc18c66111bc94532b0d2df00731c66 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + size: 1871567 + timestamp: 1741051481612 +- conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.13.1-h502464c_0.conda + sha256: d2ec00b2600ebda6ec5f953d5e65eacdb66f356acc7dd952bb42e2bf7a22b602 + md5: 480d6bc3033367f3d7b412cc5a9e0819 + depends: + - __osx >=10.13 + - libcxx >=18 + license: LGPL-2.1-only + size: 1562536 + timestamp: 1741051661501 +- conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.13.1-h9ea8674_0.conda + sha256: 8b2dd4b831ddac64584d49b50f0547c90f5b352a7ec62f941686bb59c21d6055 + md5: 2ebe8eb886545cdc287324d41186a698 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-only + size: 1703268 + timestamp: 1741052039669 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c md5: c94a5994ef49749880a8139cf9afcbe1 @@ -1738,6 +2820,16 @@ packages: license_family: BSD size: 53338 timestamp: 1724801498389 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_4.conda + sha256: 5e92e1360a21dbbae2126dccdd37f97e34331fcccc5d76d12dbbad2fda1a5228 + md5: 26ccfde67e88b646e57a7e56ce4ef56d + depends: + - gcc 14.3.0.* + - gxx_impl_linux-64 14.3.0.* + license: BSD-3-Clause + license_family: BSD + size: 30420 + timestamp: 1753905382479 - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda sha256: 746dff24bb1efc89ab0ec108838d0711683054e3bbbcb94d042943410a98eca1 md5: 806367e23a0a6ad21e51875b34c57d7e @@ -1750,6 +2842,18 @@ packages: license_family: GPL size: 13337720 timestamp: 1724801455825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_4.conda + sha256: d37c0a50684e1bfb3cb7f8e417d8b42a43a0dbd0bd5fa4b41a46d26eddc2c4aa + md5: 1f7b059bae1fc5e72ae23883e04abc48 + depends: + - gcc_impl_linux-64 14.3.0 hd9e9e21_4 + - libstdcxx-devel_linux-64 14.3.0 h85bb3a7_104 + - sysroot_linux-64 + - tzdata + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 15144697 + timestamp: 1753905289599 - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda sha256: a9b1ffea76f2cc5aedeead4793fcded7a687cce9d5e3f4fe93629f1b1d5043a6 md5: 7c82ca9bda609b6f72f670e4219d3787 @@ -1762,6 +2866,29 @@ packages: license_family: BSD size: 30356 timestamp: 1731939612705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda + sha256: 6c06752e4773dfd61a1928e9f7e9d21c3b97068daf27b84696c33057a091fe27 + md5: d4af016b3511135302a19f2a58544fcd + depends: + - binutils_linux-64 + - gcc_linux-64 14.3.0 h1382650_11 + - gxx_impl_linux-64 14.3.0.* + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + size: 30802 + timestamp: 1748905895571 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 + md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 + depends: + - python >=3.10 + - hyperframe >=6.1,<7 + - hpack >=4.1,<5 + - python + license: MIT + size: 95967 + timestamp: 1756364871835 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda sha256: 93d2bfc672f3ee0988d277ce463330a467f3686d3f7ee37812a3d8ca11776d77 md5: d76fff0092b6389a12134ddebc0929bd @@ -1779,6 +2906,23 @@ packages: license_family: BSD size: 3950601 timestamp: 1733003331788 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h6e4c0c1_103.conda + sha256: 4f173af9e2299de7eee1af3d79e851bca28ee71e7426b377e841648b51d48614 + md5: c74d83614aec66227ae5199d98852aaf + depends: + - __glibc >=2.17,<3.0.a0 + - libaec >=1.1.4,<2.0a0 + - libcurl >=8.14.1,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3710057 + timestamp: 1753357500665 - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda sha256: 56500937894b1ca917e1ae1bea64b873a9eec57d581173579189d0b1f590db26 md5: 12ebafc40b10d4bf519e4c2074c52aef @@ -1795,6 +2939,23 @@ packages: license_family: BSD size: 3732340 timestamp: 1733003702265 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hc8237f9_103.conda + sha256: e41d22f672b1fbe713d22cf69630abffaee68bdb38a500a708fc70e6f639357f + md5: 3f1df98f96e0c369d94232712c9b87d0 + depends: + - __osx >=10.13 + - libaec >=1.1.4,<2.0a0 + - libcurl >=8.14.1,<9.0a0 + - libcxx >=19 + - libgfortran + - libgfortran5 >=14.3.0 + - libgfortran5 >=15.1.0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3522832 + timestamp: 1753358062940 - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda sha256: e8ced65c604a3b9e4803758a25149d71d8096f186fe876817a0d1d97190550c0 md5: 4381be33460283890c34341ecfa42d97 @@ -1810,6 +2971,39 @@ packages: license_family: BSD size: 2048450 timestamp: 1733003052575 +- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_he30205f_103.conda + sha256: 0a90263b97e9860cec6c2540160ff1a1fff2a609b3d96452f8716ae63489dac5 + md5: f1f7aaf642cefd2190582550eaca4658 + depends: + - libaec >=1.1.4,<2.0a0 + - libcurl >=8.14.1,<9.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + size: 2031491 + timestamp: 1753357255237 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 @@ -1830,6 +3024,15 @@ packages: license_family: MIT size: 11761697 timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda sha256: 4d8d07a4d5079d198168b44556fb86d094e6a716e8979b25a9f6c9c610e9fe56 md5: 37f5e1ab0db3691929f37dee78335d1b @@ -1881,6 +3084,59 @@ packages: license_family: Proprietary size: 1852356 timestamp: 1723739573141 +- conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda + sha256: 845fc87dfaf3f96245ad6ad69c5e5b31b084979f64f9e32157888ee0a08f39ba + md5: 14c42a6334f38c412449f5a5e4043a5a + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 23778 + timestamp: 1733230826126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda + sha256: 0e919ec86d980901d8cbb665e91f5e9bddb5ff662178f25aed6d63f999fd9afc + md5: a04073db11c2c86c555fb088acc8f8c1 + depends: + - __glibc >=2.17,<3.0.a0 + - freeglut >=3.2.2,<4.0a0 + - libgcc >=14 + - libglu >=9.0.3,<10.0a0 + - libglu >=9.0.3,<9.1.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + license: JasPer-2.0 + size: 681643 + timestamp: 1754514437930 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jasper-4.2.8-h9ce442b_0.conda + sha256: b095874f61125584d99b4f55a2bba3e4bd9aa61b2d2e4ab8d03372569f0ca01c + md5: 155c61380cc98685f4d6237cb19c5f97 + depends: + - __osx >=10.13 + - libjpeg-turbo >=3.1.0,<4.0a0 + license: JasPer-2.0 + size: 574167 + timestamp: 1754514708717 +- conda: https://conda.anaconda.org/conda-forge/win-64/jasper-4.2.8-h8ad263b_0.conda + sha256: 67a171de9975e583d1cd860d67e67552b28bd992ed6d0b6b8f3311ff0f7fb6cf + md5: f25a27d9c58ef3a63173f372edef0639 + depends: + - freeglut >=3.2.2,<4.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: JasPer-2.0 + size: 447036 + timestamp: 1754514582523 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + sha256: f1ac18b11637ddadc05642e8185a851c7fab5998c6f5470d716812fae943b2af + md5: 446bd6c8cb26050d528881df495ce646 + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112714 + timestamp: 1741263433881 - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda sha256: 2057ca87b313bde5b74b93b0e696f8faab69acd4cb0edebb78469f3f388040c0 md5: 5aeabe88534ea4169d4c49998f293d6c @@ -1917,6 +3173,15 @@ packages: license_family: GPL size: 943486 timestamp: 1729794504440 +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda + sha256: 305c22a251db227679343fd73bfde121e555d466af86e537847f4c8b9436be0d + md5: ff007ab0f0fdc53d245972bba8a6d40c + constrains: + - sysroot_linux-64 ==2.28 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 1272697 + timestamp: 1752669126073 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 @@ -1925,6 +3190,15 @@ packages: license: LGPL-2.1-or-later size: 117831 timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 + md5: b38117a3c920364aff79f870c984b4a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later + size: 134088 + timestamp: 1754905959823 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 md5: 3f43953b7d3fb3aaa1d0d0723d91e368 @@ -2022,6 +3296,19 @@ packages: license_family: Other size: 18577 timestamp: 1738620853804 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-955.13-hc3792c1_0.conda + sha256: 076ff5ecf1ad4db0b3032a93cf526f8793a43c0d1a985524f55fb7c221b41a8d + md5: e283b733b36540616287db2083702b80 + depends: + - ld64_osx-64 955.13 hf1c22e8_0 + - libllvm19 >=19.1.7,<19.2.0a0 + constrains: + - cctools_osx-64 1024.3.* + - cctools 1024.3.* + license: APSL-2.0 + license_family: Other + size: 18109 + timestamp: 1756212747763 - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda sha256: 4e6a37e3ea23a3d2f9b25b1b476728be6b5a1bab326fa5a976997698c60f70c0 md5: f5c97cad6996928bdffc55b8f5e70723 @@ -2040,6 +3327,24 @@ packages: license_family: Other size: 1100751 timestamp: 1738620763081 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-955.13-hf1c22e8_0.conda + sha256: 1baa6cfa917103b07f7543fb0e6b82efa92b19c10c4ecb125ab6026a88d4430f + md5: 25c3fa946892c05b51a6f794949864ba + depends: + - __osx >=10.13 + - libcxx + - libllvm19 >=19.1.7,<19.2.0a0 + - sigtool + - tapi >=1300.6.5,<1301.0a0 + constrains: + - cctools_osx-64 1024.3.* + - ld 955.13.* + - clang >=19.1.7,<20.0a0 + - cctools 1024.3.* + license: APSL-2.0 + license_family: Other + size: 1107425 + timestamp: 1756212688116 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 @@ -2051,6 +3356,28 @@ packages: license_family: GPL size: 669211 timestamp: 1729655358674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda + sha256: 1a620f27d79217c1295049ba214c2f80372062fd251b569e9873d4a953d27554 + md5: 0be7c6e070c19105f966d3758448d018 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.44 + license: GPL-3.0-only + license_family: GPL + size: 676044 + timestamp: 1752032747103 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff + md5: 9344155d33912347b37f0ae6c410a835 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 264243 + timestamp: 1745264221534 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f @@ -2070,6 +3397,16 @@ packages: license_family: Apache size: 290319 timestamp: 1657977526749 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + sha256: cc1f1d7c30aa29da4474ec84026ec1032a8df1d7ec93f4af3b98bb793d01184e + md5: 21f765ced1a0ef4070df53cb425e1967 + depends: + - __osx >=10.13 + - libcxx >=18 + license: Apache-2.0 + license_family: Apache + size: 248882 + timestamp: 1745264331196 - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 md5: 1900cb3cab5055833cfddb0ba233b074 @@ -2080,6 +3417,17 @@ packages: license_family: Apache size: 194365 timestamp: 1657977692274 +- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda + sha256: 868a3dff758cc676fa1286d3f36c3e0101cca56730f7be531ab84dc91ec58e9d + md5: c1b81da6d29a14b542da14a36c9fbf3f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + size: 164701 + timestamp: 1745264384716 - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda sha256: 2ef420a655528bca9d269086cf33b7e90d2f54ad941b437fb1ed5eca87cee017 md5: 5e97e271911b8b2001a8b71860c32faa @@ -2090,6 +3438,17 @@ packages: license_family: BSD size: 35446 timestamp: 1711021212685 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda + sha256: 410ab78fe89bc869d435de04c9ffa189598ac15bb0fe1ea8ace8fb1b860a2aa3 + md5: 01ba04e414e47f95c03d6ddd81fd37be + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 36825 + timestamp: 1749993532943 - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda sha256: dae5921339c5d89f4bf58a95fd4e9c76270dbf7f6a94f3c5081b574905fcccf8 md5: 66d3c1f6dd4636216b4fca7a748d50eb @@ -2099,6 +3458,16 @@ packages: license_family: BSD size: 28602 timestamp: 1711021419744 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.4-ha6bc127_0.conda + sha256: f4fe00ef0df58b670696c62f2ec3f6484431acbf366ecfbcb71141c81439e331 + md5: 1a768b826dfc68e07786788d98babfc3 + depends: + - __osx >=10.13 + - libcxx >=18 + license: BSD-2-Clause + license_family: BSD + size: 30034 + timestamp: 1749993664561 - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda sha256: f5c293d3cfc00f71dfdb64bd65ab53625565f8778fc2d5790575bef238976ebf md5: 8723000f6ffdbdaef16025f0a01b64c5 @@ -2110,6 +3479,17 @@ packages: license_family: BSD size: 32567 timestamp: 1711021603471 +- conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.4-h20038f6_0.conda + sha256: 0be89085effce9fdcbb6aea7acdb157b18793162f68266ee0a75acf615d4929b + md5: 85a2bed45827d77d5b308cb2b165404f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 33847 + timestamp: 1749993666162 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda build_number: 28 sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 @@ -2126,6 +3506,23 @@ packages: license_family: BSD size: 16621 timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-34_h59b9bed_openblas.conda + build_number: 34 + sha256: 08a394ba934f68f102298259b150eb5c17a97c30c6da618e1baab4247366eab3 + md5: 064c22bac20fecf2a99838f9b979374c + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - mkl <2025 + - blas 2.134 openblas + - liblapacke 3.9.0 34*_openblas + - libcblas 3.9.0 34*_openblas + - liblapack 3.9.0 34*_openblas + license: BSD-3-Clause + license_family: BSD + size: 19306 + timestamp: 1754678416811 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-28_h7f60823_openblas.conda build_number: 28 sha256: c44341975c7d0b4b02c2676af30a723b109698b2939928b80c45efc2aa36ef2d @@ -2142,6 +3539,23 @@ packages: license_family: BSD size: 16854 timestamp: 1738114357360 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-34_h7f60823_openblas.conda + build_number: 34 + sha256: ea5d0341df78f7f2d6fe3a03a9b7327958d9e21b4f2d13ef0eddadc335999232 + md5: 3f29ba70f912e56d4be6b55bc213a082 + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - liblapacke 3.9.0 34*_openblas + - mkl <2025 + - libcblas 3.9.0 34*_openblas + - liblapack 3.9.0 34*_openblas + - blas 2.134 openblas + license: BSD-3-Clause + license_family: BSD + size: 19537 + timestamp: 1754678644797 - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-28_h576b46c_mkl.conda build_number: 28 sha256: 664fac202fb0f48f11538863f78128cc95e72fbf75fa7d037ddea7c497c0df5d @@ -2157,6 +3571,21 @@ packages: license_family: BSD size: 3732428 timestamp: 1738114465076 +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-34_h5709861_mkl.conda + build_number: 34 + sha256: d7865fcc7d29b22e4111ababec49083851a84bb3025748eed65184be765b6e7d + md5: a64dcde5f27b8e0e413ddfc56151664c + depends: + - mkl >=2024.2.2,<2025.0a0 + constrains: + - libcblas 3.9.0 34*_mkl + - liblapacke 3.9.0 34*_mkl + - blas 2.134 mkl + - liblapack 3.9.0 34*_mkl + license: BSD-3-Clause + license_family: BSD + size: 70548 + timestamp: 1754682440057 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda sha256: bad622863b3e4c8f0d107d8efd5b808e52d79cb502a20d700d05357b59a51e8f md5: eead4e74198698d1c74f06572af753bc @@ -2174,6 +3603,23 @@ packages: license: BSL-1.0 size: 2946990 timestamp: 1733501899743 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hed09d94_1.conda + sha256: 27f776874e3bc8d73ca8d88374b337dc9901ad4663e4b077f97d08ab2a313c59 + md5: a8755608e921f8ec265eb63c4eab3a54 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - icu >=75.1,<76.0a0 + - libgcc >=14 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 3036176 + timestamp: 1755040683556 - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda sha256: 7758971337b07d1f4fd0c55eed4bfb06e3c0512a7e4549c648a01383926c1fcd md5: 1e25fad7b2c160cd3b9b52f3507eb272 @@ -2190,6 +3636,22 @@ packages: license: BSL-1.0 size: 2134033 timestamp: 1733503407177 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.88.0-hf0da243_1.conda + sha256: ee08844c658d6b626a61c469eee16e2e2330aefeb3a727b54c2383de70899a7e + md5: 0b410c1bc0240122b61d7ff5011ec38a + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 2143629 + timestamp: 1755041112348 - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda sha256: 0e1f19d03c2755f424321e0bebf3a62f864e084e812d172b3953e5215d4e4d36 md5: d0550e3c23e9e9885bf410fe6f519361 @@ -2207,6 +3669,24 @@ packages: license: BSL-1.0 size: 2502049 timestamp: 1733503877084 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.88.0-h9dfe17d_1.conda + sha256: 4199d989d9bdd66cc4cab63c3ae2ca8c7279ae889a2cc7be19a6bea7711b43f5 + md5: a19e51f7d5e5ee8d1ad0ef1376dc051b + depends: + - bzip2 >=1.0.8,<2.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - __win ==0|>=10 + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 2495267 + timestamp: 1755042179457 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda sha256: 1bbc13f4bed720af80e67e5df1e609f4efd801ae27d85107c36416de20ebb84c md5: ffe09ce10ce1e03e1e762ab5bc006a35 @@ -2218,6 +3698,17 @@ packages: license: BSL-1.0 size: 37554 timestamp: 1733502001252 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.88.0-hfcd1e18_1.conda + sha256: 8c38660661e7445b49368b9d807dd1091ceebab7344cb4297185d93f9832d7cf + md5: 28d09c69e988367e88c6eeece349961a + depends: + - libboost 1.88.0 hed09d94_1 + - libboost-headers 1.88.0 ha770c72_1 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 38151 + timestamp: 1755040798180 - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda sha256: 297427f9edce4b04847d13bfaa2401326d69b351290bf7f61565844a503c7fc8 md5: f4386c067b2bcd09be47d4092cf4c81d @@ -2229,6 +3720,17 @@ packages: license: BSL-1.0 size: 38825 timestamp: 1733503676067 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.88.0-h20888b2_1.conda + sha256: 3cdbef523637963c8d82cf536b3c5b673e34f304881b40fc41914c5b5d1ad9cb + md5: 36f6714745826d740278da3013bc840b + depends: + - libboost 1.88.0 hf0da243_1 + - libboost-headers 1.88.0 h694c41f_1 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 38738 + timestamp: 1755041280680 - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda sha256: 604bbee4cc195b2ed745efc4bd9b3172c82ff1468ffbba25f6d0fc176b10b995 md5: 2e5f24412d1cebea7fd9f9a41ffc7a85 @@ -2240,6 +3742,17 @@ packages: license: BSL-1.0 size: 40415 timestamp: 1733504121541 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.88.0-h1c1089f_1.conda + sha256: 55ba2923159aa478ae737f34d3c7ddf3a3427bad2371e0eea94d72b3683a11ab + md5: 9aa7ddfc3d14a84be1fd378859a2387a + depends: + - libboost 1.88.0 h9dfe17d_1 + - libboost-headers 1.88.0 h57928b3_1 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 40542 + timestamp: 1755042380260 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda sha256: 322be3cc409ee8b7f46a6e237c91cdcf810bc528af5865f6b7c46cc56ad5f070 md5: be60ca34cfa7a867c2911506cad8f7c3 @@ -2248,6 +3761,14 @@ packages: license: BSL-1.0 size: 13991670 timestamp: 1733501914699 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.88.0-ha770c72_1.conda + sha256: 39aff06e61d273e856732db9816f8e2958bb4784cc568571bc7d13fe2d460d9b + md5: f4904e9af33091a14c966b6b8f6ac1b8 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 14513031 + timestamp: 1755040699172 - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda sha256: 9e441c92ad0ff786cae47f6a66fb60fc0d146c69386e4f6f5b7ecdda89db878f md5: 7f26ba01ef422fd27abfdc98ceb104f0 @@ -2256,6 +3777,14 @@ packages: license: BSL-1.0 size: 14151060 timestamp: 1733503490599 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.88.0-h694c41f_1.conda + sha256: 3b2e2bb09f8d426b2d9d81a5de51cb76c09508de7604fba52690e954393617ba + md5: f5d8af6d6fe3c2953292a962cdeafe26 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 14601134 + timestamp: 1755041154211 - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda sha256: 231042814cfdb494b63b2829ce832f352ff8bcb8cc10eef148db7c799c9c8c29 md5: 4bc32387538adb61353d76c629fb20e6 @@ -2264,6 +3793,14 @@ packages: license: BSL-1.0 size: 14179084 timestamp: 1733503940017 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.88.0-h57928b3_1.conda + sha256: 36620591837470a8e44a1fedd885fee8d622886c286a71bf909f64db43430120 + md5: 9e69f044a16fdfc7b7bc7ec311155ed5 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + size: 14618746 + timestamp: 1755042236296 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda build_number: 28 sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 @@ -2278,6 +3815,20 @@ packages: license_family: BSD size: 16539 timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-34_he106b2a_openblas.conda + build_number: 34 + sha256: edde454897c7889c0323216516abb570a593de728c585b14ef41eda2b08ddf3a + md5: 148b531b5457ad666ed76ceb4c766505 + depends: + - libblas 3.9.0 34_h59b9bed_openblas + constrains: + - liblapacke 3.9.0 34*_openblas + - blas 2.134 openblas + - liblapack 3.9.0 34*_openblas + license: BSD-3-Clause + license_family: BSD + size: 19313 + timestamp: 1754678426220 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-28_hff6cab4_openblas.conda build_number: 28 sha256: 3940ad1fe20fac8a21fe699ade336a649d0509bc6ff9bfc080b258f68cd056df @@ -2292,6 +3843,20 @@ packages: license_family: BSD size: 16772 timestamp: 1738114371625 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-34_hff6cab4_openblas.conda + build_number: 34 + sha256: 393e24b890009d4d4ace5531d39adfd9be3b97040653f6febbb74311dad84146 + md5: 0f6bf5f39b2301a165389e3624f0c297 + depends: + - libblas 3.9.0 34_h7f60823_openblas + constrains: + - liblapacke 3.9.0 34*_openblas + - liblapack 3.9.0 34*_openblas + - blas 2.134 openblas + license: BSD-3-Clause + license_family: BSD + size: 19518 + timestamp: 1754678655239 - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-28_h7ad3364_mkl.conda build_number: 28 sha256: affd4330721e0dadeefb31cd8191478772f75643db6bef485309782be689c52f @@ -2306,6 +3871,20 @@ packages: license_family: BSD size: 3732314 timestamp: 1738114505434 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-34_h2a3cdd5_mkl.conda + build_number: 34 + sha256: e9f31d44e668822f6420bfaeda4aa74cd6c60d3671cf0b00262867f36ad5a8c1 + md5: 25a019872ff471af70fd76d9aaaf1313 + depends: + - libblas 3.9.0 34_h5709861_mkl + constrains: + - liblapacke 3.9.0 34*_mkl + - blas 2.134 mkl + - liblapack 3.9.0 34*_mkl + license: BSD-3-Clause + license_family: BSD + size: 70700 + timestamp: 1754682490395 - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_7.conda sha256: 81917105ee2f49e85f0abd684696ad9d9a81aef9d825e563e0013fd9a1ccbd23 md5: d22bdc2b1ecf45631c5aad91f660623a @@ -2317,6 +3896,17 @@ packages: license_family: Apache size: 13901227 timestamp: 1738269502537 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp19.1-19.1.7-default_h3571c67_3.conda + sha256: 527a96d48122dfd99e955dd73077f52a0e0bbec7eea08bbe4dc2ba12c1905b37 + md5: 2ec1f70656609b17b438ac07e1b2b611 + depends: + - __osx >=10.13 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 14708000 + timestamp: 1747709593789 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 md5: 2b3e0081006dc21e8bf53a91c83a055c @@ -2333,6 +3923,22 @@ packages: license_family: MIT size: 423011 timestamp: 1733999897624 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda + sha256: b6c5cf340a4f80d70d64b3a29a7d9885a5918d16a5cb952022820e6d3e79dc8b + md5: 45f6713cb00f124af300342512219182 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 449910 + timestamp: 1749033146806 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda sha256: a4ee3da1a5fd753a382d129dffb079a1e8a244e5c7ff3f7aadc15bf127f8b5e5 md5: 2f80e92674f4a92e9f8401494496ee62 @@ -2348,6 +3954,21 @@ packages: license_family: MIT size: 406590 timestamp: 1734000110972 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.14.1-h5dec5d8_0.conda + sha256: ca0d8d12056227d6b47122cfb6d68fc5a3a0c6ab75a0e908542954fc5f84506c + md5: 8738cd19972c3599400404882ddfbc24 + depends: + - __osx >=10.13 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 424040 + timestamp: 1749033558114 - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda sha256: 1a67f01da0e35296c6d1fdf6baddc45ad3cc2114132ff4638052eb7cf258aab2 md5: 071d3f18dba5a6a13c6bb70cdb42678f @@ -2362,6 +3983,20 @@ packages: license_family: MIT size: 349553 timestamp: 1734000095720 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.14.1-h88aaa65_0.conda + sha256: b2cface2cf35d8522289df7fffc14370596db6f6dc481cc1b6ca313faeac19d8 + md5: 836b9c08f34d2017dbcaec907c6a1138 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: curl + license_family: MIT + size: 368346 + timestamp: 1749033492826 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda sha256: 6b2fa3fb1e8cd2000b0ed259e0c4e49cbef7b76890157fac3e494bc659a20330 md5: 4b8f8dc448d814169dbc58fc7286057d @@ -2371,6 +4006,15 @@ packages: license_family: Apache size: 527924 timestamp: 1736877256721 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda + sha256: 9643d6c5a94499cddb5ae1bccc4f78aef8cfd77bcf6b37ad325bc7232a8a870f + md5: d2db320b940047515f7a27f870984fe7 + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 564830 + timestamp: 1752814841086 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda sha256: 5d886a04be00a5a54a81fb040aacd238d0d55d4522c61c7875b675b803c748a3 md5: 0c389f3214ce8cad37a12cb0bae44c54 @@ -2380,6 +4024,15 @@ packages: license_family: Apache size: 792227 timestamp: 1725403715206 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-19.1.7-h7c275be_1.conda + sha256: d1ee08b0614d8f9bca84aa91b4015c5efa96162fd865590a126544243699dfc6 + md5: 0f3f15e69e98ce9b3307c1d8309d1659 + depends: + - libcxx >=19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 826706 + timestamp: 1742451299167 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db @@ -2390,6 +4043,16 @@ packages: license_family: MIT size: 72255 timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf + md5: 64f0c503da58ec25ebd359e4d990afa8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72573 + timestamp: 1747040452262 - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda sha256: 20c1e685e7409bb82c819ba55b9f7d9a654e8e6d597081581493badb7464520e md5: 120f8f7ba6a8defb59f4253447db4bb4 @@ -2399,6 +4062,15 @@ packages: license_family: MIT size: 69309 timestamp: 1734374105905 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + sha256: 2733a4adf53daca1aa4f41fe901f0f8ee9e4c509abd23ffcd7660013772d6f45 + md5: f0a46c359722a3e84deb05cd4072d153 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 69751 + timestamp: 1747040526774 - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda sha256: 96c47725a8258159295996ea2758fa0ff9bea330e72b59641642e16be8427ce8 md5: a9624935147a25b06013099d3038e467 @@ -2410,6 +4082,17 @@ packages: license_family: MIT size: 155723 timestamp: 1734374084110 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda + sha256: 65347475c0009078887ede77efe60db679ea06f2b56f7853b9310787fe5ad035 + md5: 08d988e266c6ae77e03d164b83786dc4 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 156292 + timestamp: 1747040812624 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -2461,6 +4144,18 @@ packages: license_family: MIT size: 73304 timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda + sha256: da2080da8f0288b95dd86765c801c6e166c4619b910b11f9a8446fb852438dc2 + md5: 4211416ecba1866fab0c6470986c22d6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.7.1.* + license: MIT + license_family: MIT + size: 74811 + timestamp: 1752719572741 - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 md5: 20307f4049a735a78a29073be1be2626 @@ -2472,6 +4167,17 @@ packages: license_family: MIT size: 70758 timestamp: 1730967204736 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda + sha256: 689862313571b62ee77ee01729dc093f2bf25a2f99415fcfe51d3a6cd31cce7b + md5: 9fdeae0b7edda62e989557d645769515 + depends: + - __osx >=10.13 + constrains: + - expat 2.7.1.* + license: MIT + license_family: MIT + size: 72450 + timestamp: 1752719744781 - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 md5: eb383771c680aa792feb529eaf9df82f @@ -2485,6 +4191,19 @@ packages: license_family: MIT size: 139068 timestamp: 1730967442102 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda + sha256: 8432ca842bdf8073ccecf016ccc9140c41c7114dc4ec77ca754551c01f780845 + md5: 3608ffde260281fa641e70d6e34b1b96 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - expat 2.7.1.* + license: MIT + license_family: MIT + size: 141322 + timestamp: 1752719767870 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e md5: d645c6d2ac96843a2bfaccd2d62b3ac3 @@ -2494,6 +4213,16 @@ packages: license_family: MIT size: 58292 timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab + md5: ede4673863426c0883c0063d853bbd85 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 57433 + timestamp: 1743434498161 - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f md5: ccb34fb14960ad8b125962d3d79b31a9 @@ -2501,6 +4230,15 @@ packages: license_family: MIT size: 51348 timestamp: 1636488394370 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + sha256: 6394b1bc67c64a21a5cc73d1736d1d4193a64515152e861785c44d2cfc49edf3 + md5: 4ca9ea59839a9ca8df84170fab4ceb41 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 51216 + timestamp: 1743434595269 - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 md5: 2c96d1b6915b408893f9472569dee135 @@ -2511,6 +4249,80 @@ packages: license_family: MIT size: 42063 timestamp: 1636489106777 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + sha256: d3b0b8812eab553d3464bbd68204f007f1ebadf96ce30eb0cbc5159f72e353f5 + md5: 85d8fa5e55ed8f93f874b3b23ed54ec6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 44978 + timestamp: 1743435053850 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + sha256: 7be9b3dac469fe3c6146ff24398b685804dfc7a1de37607b84abd076f57cc115 + md5: 51f5be229d83ecd401fb369ab96ae669 + depends: + - libfreetype6 >=2.13.3 + license: GPL-2.0-only OR FTL + size: 7693 + timestamp: 1745369988361 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + sha256: afe0e2396844c8cfdd6256ac84cabc9af823b1727f704c137b030b85839537a6 + md5: 07c8d3fbbe907f32014b121834b36dd5 + depends: + - libfreetype6 >=2.13.3 + license: GPL-2.0-only OR FTL + size: 7805 + timestamp: 1745370212559 +- conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + sha256: e5bc7d0a8d11b7b234da4fcd9d78f297f7dec3fec8bd06108fd3ac7b2722e32e + md5: 410ba2c8e7bdb278dfbb5d40220e39d2 + depends: + - libfreetype6 >=2.13.3 + license: GPL-2.0-only OR FTL + size: 8159 + timestamp: 1745370227235 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + sha256: 7759bd5c31efe5fbc36a7a1f8ca5244c2eabdbeb8fc1bee4b99cf989f35c7d81 + md5: 3c255be50a506c50765a93a6644f32fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - freetype >=2.13.3 + license: GPL-2.0-only OR FTL + size: 380134 + timestamp: 1745369987697 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + sha256: 058165962aa64fc5a6955593212c0e1ea42ca6d6dba60ee61dff612d4c3818d7 + md5: c76e6f421a0e95c282142f820835e186 + depends: + - __osx >=10.13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - freetype >=2.13.3 + license: GPL-2.0-only OR FTL + size: 357654 + timestamp: 1745370210187 +- conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda + sha256: 61308653e7758ff36f80a60d598054168a1389ddfbac46d7864c415fafe18e69 + md5: a84b7d1a13060a9372bea961a8131dbc + depends: + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - freetype >=2.13.3 + license: GPL-2.0-only OR FTL + size: 337007 + timestamp: 1745370226578 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 md5: 3cb76c3f10d3bc7f1105b2fc9db984df @@ -2524,6 +4336,19 @@ packages: license_family: GPL size: 848745 timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_4.conda + sha256: 144e35c1c2840f2dc202f6915fc41879c19eddbb8fa524e3ca4aa0d14018b26f + md5: f406dcbb2e7bef90d793e50e79a2882b + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.1.0=*_4 + - libgomp 15.1.0 h767d61c_4 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 824153 + timestamp: 1753903866511 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda sha256: ef840e797714440bb10b69446d815966fff41fdac79f79c4e19c475d81cd375d md5: 75fdd34824997a0f9950a703b15d8ac5 @@ -2538,6 +4363,20 @@ packages: license_family: GPL size: 666386 timestamp: 1729089506769 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_4.conda + sha256: c169606e148f8df3375fdc9fe76ee3f44b8ffc2515e8131ede8f2d75cf7d6f0c + md5: 59fe76f0ff39b512ff889459b9fc3054 + depends: + - _openmp_mutex >=4.5 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - msys2-conda-epoch <0.0a0 + - libgcc-ng ==15.1.0=*_4 + - libgomp 15.1.0 h1383e82_4 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 668220 + timestamp: 1753904114303 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda sha256: 027cfb011328a108bc44f512a2dec6d954db85709e0b79b748c3392f85de0c64 md5: 0ce69d40c142915ac9734bc6134e514a @@ -2547,6 +4386,15 @@ packages: license_family: GPL size: 2598313 timestamp: 1724801050802 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_104.conda + sha256: e655874112406dcf3c356a546c2cf051393985aeb36704962dc00d8da2bf95c2 + md5: d8e4f3677752c5dc9b77a9f11b484c9d + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 2725618 + timestamp: 1753904712267 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b @@ -2556,6 +4404,15 @@ packages: license_family: GPL size: 54142 timestamp: 1729027726517 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_4.conda + sha256: 76ceac93ed98f208363d6e9c75011b0ff7b97b20f003f06461a619557e726637 + md5: 28771437ffcd9f3417c66012dc49a3be + depends: + - libgcc 15.1.0 h767d61c_4 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 29249 + timestamp: 1753903872571 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 @@ -2567,6 +4424,26 @@ packages: license_family: GPL size: 53997 timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_4.conda + sha256: 2fe41683928eb3c57066a60ec441e605a69ce703fc933d6d5167debfeba8a144 + md5: 53e876bc2d2648319e94c33c57b9ec74 + depends: + - libgfortran5 15.1.0 hcea5267_4 + constrains: + - libgfortran-ng ==15.1.0=*_4 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 29246 + timestamp: 1753903898593 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.1.0-h5f6db21_1.conda + sha256: 844500c9372d455f6ae538ffd3cdd7fda5f53d25a2a6b3ba33060a302c37bc3e + md5: 07cfad6b37da6e79349c6e3a0316a83b + depends: + - libgfortran5 15.1.0 hfa3c126_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 133973 + timestamp: 1756239628906 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 @@ -2587,6 +4464,18 @@ packages: license_family: GPL size: 1462645 timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_4.conda + sha256: 3070e5e2681f7f2fb7af0a81b92213f9ab430838900da8b4f9b8cf998ddbdd84 + md5: 8a4ab7ff06e4db0be22485332666da0f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15.1.0 + constrains: + - libgfortran 15.1.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1564595 + timestamp: 1753903882088 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b md5: e4fb4d23ec2870ff3c40d10afe305aec @@ -2598,6 +4487,56 @@ packages: license_family: GPL size: 1571379 timestamp: 1707328880361 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.1.0-hfa3c126_1.conda + sha256: c4bb79d9e9be3e3a335282b50d18a7965e2a972b95508ea47e4086f1fd699342 + md5: 696e408f36a5a25afdb23e862053ca82 + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 15.1.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1225193 + timestamp: 1756238834726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d + md5: 928b8be80851f5d8ffb016f9c81dae7a + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - libglx 1.7.0 ha4b6fd6_2 + license: LicenseRef-libglvnd + size: 134712 + timestamp: 1731330998354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda + sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef + md5: 8422fcc9e5e172c91e99aef703b3ce65 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopengl >=1.7.0,<2.0a0 + - libstdcxx >=13 + license: SGI-B-2.0 + size: 325262 + timestamp: 1748692137626 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 + md5: 434ca7e50e40f4918ab701e3facd59a0 + depends: + - __glibc >=2.17,<3.0.a0 + license: LicenseRef-libglvnd + size: 132463 + timestamp: 1731330968309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 + md5: c8013e438185f33b13814c5c488acd5c + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - xorg-libx11 >=1.8.10,<2.0a0 + license: LicenseRef-libglvnd + size: 75504 + timestamp: 1731330988898 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 @@ -2607,6 +4546,15 @@ packages: license_family: GPL size: 460992 timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_4.conda + sha256: e0487a8fec78802ac04da0ac1139c3510992bc58a58cde66619dde3b363c2933 + md5: 3baf8976c96134738bba224e9ef6b1e5 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 447289 + timestamp: 1753903801049 - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda sha256: d8739b834608f35775209b032f0c2be752ef187863c7ec847afcebe2f681be4e md5: 9e2d4d1214df6f21cba12f6eff4972f9 @@ -2618,6 +4566,17 @@ packages: license_family: GPL size: 524249 timestamp: 1729089441747 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_4.conda + sha256: e4ce8693bc3250b98cbc41cc53116fb27ad63eaf851560758e8ccaf0e9b137aa + md5: 78582ad1a764f4a0dca2f3027a46cc5a + depends: + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - msys2-conda-epoch <0.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535125 + timestamp: 1753904060607 - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda sha256: 850e255997f538d5fb6ed651321141155a33bb781d43d326fc4ff62114dd2842 md5: b87a0ac5ab6495d8225db5dc72dd21cd @@ -2631,6 +4590,28 @@ packages: license_family: BSD size: 2390021 timestamp: 1731375651179 +- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.1-default_h88281d1_1000.conda + sha256: 2fb437b82912c74b4869b66c601d52c77bb3ee8cb4812eab346d379f1c823225 + md5: e6298294e7612eccf57376a0683ddc80 + depends: + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + - libxml2 >=2.13.8,<2.14.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + size: 2412139 + timestamp: 1752762145331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-only + size: 790176 + timestamp: 1754908768807 - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 md5: 210a85a1119f97ea7887188d176db135 @@ -2659,6 +4640,17 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 618575 timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + sha256: 98b399287e27768bf79d48faba8a99a2289748c65cd342ca21033fab1860d4a4 + md5: 9fa334557db9f63da6c9285fd2a48638 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 628947 + timestamp: 1745268527144 - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f md5: 72507f8e3961bc968af17435060b6dd6 @@ -2667,6 +4659,16 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 579748 timestamp: 1694475265912 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + sha256: 9c0009389c1439ec96a08e3bf7731ac6f0eab794e0a133096556a9ae10be9c27 + md5: 87537967e6de2f885a9fcebd42b7cb10 + depends: + - __osx >=10.13 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 586456 + timestamp: 1745268522731 - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff md5: 3f1b948619c45b1ca714d60c7389092c @@ -2679,6 +4681,18 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 822966 timestamp: 1694475223854 +- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda + sha256: e61b0adef3028b51251124e43eb6edf724c67c0f6736f1628b02511480ac354e + md5: 7c51d27540389de84852daa1cdb9c63c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 838154 + timestamp: 1745268437136 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda build_number: 28 sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef @@ -2693,6 +4707,20 @@ packages: license_family: BSD size: 16553 timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-34_h7ac8fdf_openblas.conda + build_number: 34 + sha256: 9c941d5da239f614b53065bc5f8a705899326c60c9f349d9fbd7bd78298f13ab + md5: f05a31377b4d9a8d8740f47d1e70b70e + depends: + - libblas 3.9.0 34_h59b9bed_openblas + constrains: + - liblapacke 3.9.0 34*_openblas + - libcblas 3.9.0 34*_openblas + - blas 2.134 openblas + license: BSD-3-Clause + license_family: BSD + size: 19324 + timestamp: 1754678435277 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda build_number: 28 sha256: 862267d20bd7a248cef3dad1fefe5b31d44503943bd9745de42e8be17c86c806 @@ -2707,6 +4735,20 @@ packages: license_family: BSD size: 16758 timestamp: 1738114383382 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-34_h236ab99_openblas.conda + build_number: 34 + sha256: 6ecbd5c2b39e40766935c8311238cfbfcf7ca43b5eafc9bb5f883d59c705981e + md5: 8ddbc2de70c2fedfb4cfbcb8d5562ac8 + depends: + - libblas 3.9.0 34_h7f60823_openblas + constrains: + - liblapacke 3.9.0 34*_openblas + - blas 2.134 openblas + - libcblas 3.9.0 34*_openblas + license: BSD-3-Clause + license_family: BSD + size: 19548 + timestamp: 1754678665504 - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda build_number: 28 sha256: 4b4bb704f46d12f56c1dcf5525bb97aea53a110e6bde6b8d588bf43b773500da @@ -2721,6 +4763,20 @@ packages: license_family: BSD size: 3732321 timestamp: 1738114541347 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-34_hf9ab0e9_mkl.conda + build_number: 34 + sha256: c65298d584551cba1b7a42537f8e0093ec9fd0e871fc80ddf9cf6ffa0efa25ae + md5: ba80d9feadfbafceafb0bf46d35f5886 + depends: + - libblas 3.9.0 34_h5709861_mkl + constrains: + - libcblas 3.9.0 34*_mkl + - liblapacke 3.9.0 34*_mkl + - blas 2.134 mkl + license: BSD-3-Clause + license_family: BSD + size: 82224 + timestamp: 1754682540087 - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda sha256: c488d96dcd0b2db0438b9ec7ea92627c1c36aa21491ebcd5cc87a9c58aa0a612 md5: a04c2fc058fd6b0630c1a2faad322676 @@ -2734,6 +4790,19 @@ packages: license_family: Apache size: 27771340 timestamp: 1737837075440 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm19-19.1.7-hc29ff6c_1.conda + sha256: 2b9aa347ea26e911b925aca1e96ac595f9ceacbd6ab2d7b15fbdd42b90f6a9a3 + md5: a937150d07aa51b50ded6a0816df4a5a + depends: + - __osx >=10.13 + - libcxx >=18 + - libxml2 >=2.13.5,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 28848197 + timestamp: 1737782191240 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 md5: 1a580f7796c7bf6393fddb8bbbde58dc @@ -2765,6 +4834,18 @@ packages: license: 0BSD size: 104465 timestamp: 1738525557254 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc + md5: c15148b2e18da456f5108ccb5e411446 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - xz 5.8.1.* + license: 0BSD + size: 104935 + timestamp: 1749230611612 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda sha256: 329e66330a8f9cbb6a8d5995005478188eb4ba8a6b6391affa849744f4968492 md5: f61edadbb301530bd65a32646bd81552 @@ -2795,6 +4876,28 @@ packages: license: 0BSD size: 126091 timestamp: 1738525583264 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_2.conda + sha256: 1ccff927a2d768403bad85e36ca3e931d96890adb4f503e1780c3412dd1e1298 + md5: 42c90c4941c59f1b9f8fab627ad8ae76 + depends: + - liblzma 5.8.1 h2466b09_2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: 0BSD + size: 129344 + timestamp: 1749230637001 +- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf + md5: 74860100b2029e2523cf480804c76b9b + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 88657 + timestamp: 1723861474602 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b @@ -2826,6 +4929,16 @@ packages: license_family: MIT size: 606663 timestamp: 1729572019083 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 + md5: d864d34357c3b65a4b731f78c0801dc4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-only + license_family: GPL + size: 33731 + timestamp: 1750274110928 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -2849,6 +4962,20 @@ packages: license_family: BSD size: 5578513 timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_2.conda + sha256: 1b51d1f96e751dc945cc06f79caa91833b0c3326efe24e9b506bd64ef49fc9b0 + md5: dfc5aae7b043d9f56ba99514d5e60625 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5938936 + timestamp: 1755474342204 - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7 md5: cd2c572c02a73b88c4d378eb31110e85 @@ -2863,6 +4990,29 @@ packages: license_family: BSD size: 6165715 timestamp: 1730773348340 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h83c2472_2.conda + sha256: 341dd45c2e88261f1f9ff76c3410355b4b0e894abe6ac89f7cbf64a3d10f0f01 + md5: 89edf77977f520c4245567460d065821 + depends: + - __osx >=10.13 + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + size: 6262457 + timestamp: 1755473612572 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda + sha256: 215086c108d80349e96051ad14131b751d17af3ed2cb5a34edd62fa89bfe8ead + md5: 7df50d44d4a14d6c31a2c54f2cd92157 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + license: LicenseRef-libglvnd + size: 50757 + timestamp: 1731330993524 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 md5: adcf7bacff219488e29cfa95a2abd8f7 @@ -2873,6 +5023,16 @@ packages: license: zlib-acknowledgement size: 292273 timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda + sha256: e75a2723000ce3a4b9fd9b9b9ce77553556c93e475a4657db6ed01abc02ea347 + md5: 7af8e91b0deb5f8e25d1a595dea79614 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 317390 + timestamp: 1753879899951 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda sha256: a293b883b5b334555c643bb3b076018127d7e49d26d59787392b23effae4a3d9 md5: 82ecce167bb9c069b12968b7b1bee609 @@ -2882,6 +5042,15 @@ packages: license: zlib-acknowledgement size: 272958 timestamp: 1737791101929 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda + sha256: 8d92c82bcb09908008d8cf5fab75e20733810d40081261d57ef8cd6495fc08b4 + md5: 1fe32bb16991a24e112051cc0de89847 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 297609 + timestamp: 1753879919854 - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.46-had7236b_0.conda sha256: c866cd79dce3f6478fa3b4bc625d5cbe0512720fd6f8d45718da9537292329cf md5: 4ddc2d65b35403e6ed75545f4cb4ec98 @@ -2893,6 +5062,20 @@ packages: license: zlib-acknowledgement size: 356357 timestamp: 1737791350471 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h7351971_1.conda + sha256: e84b041f91c94841cb9b97952ab7f058d001d4a15ed4ce226ec5fdb267cc0fa5 + md5: 3ae6e9f5c47c495ebeed95651518be61 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 382709 + timestamp: 1753879944850 - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda sha256: 4b483d963686bcc1fbe225c41f48a2ec206bc97e1d9d1c16fac2d6b5709240b8 md5: e99091d245425cf089b814107b40c349 @@ -2908,6 +5091,22 @@ packages: license_family: LGPL size: 640729 timestamp: 1726766159397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.4-h9969a89_0.conda + sha256: 96bbd009b3d7f82e9af37e980af9285431ecd5c6f098a0f1afe0021d8d02b88a + md5: e4fdd13a67d5b30459463e925b9e7e1f + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=13 + - libgcc >=13 + - _openmp_mutex >=4.5 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - jasper >=4.2.5,<5.0a0 + - lcms2 >=2.17,<3.0a0 + license: LGPL-2.1-only + size: 704665 + timestamp: 1744641234631 - conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda sha256: 6b1cebffeedbc8d3ccf203b71e488361893060ac0172c1e8812ef1fda031484d md5: ea73d5e8ffd5f89389303c681d48ea2b @@ -2921,6 +5120,19 @@ packages: license_family: LGPL size: 581665 timestamp: 1726766248079 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.4-h0ade9e5_0.conda + sha256: 8a8927014c5e0d3ea4feae4d17cab90f6d256268c4323dc0d99762c1f00b5fe2 + md5: bb165a63c4ccb98777a0c2f35ba646af + depends: + - __osx >=10.13 + - libcxx >=18 + - lcms2 >=2.17,<3.0a0 + - jasper >=4.2.5,<5.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + license: LGPL-2.1-only + size: 663777 + timestamp: 1744641301951 - conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda sha256: 0d2610b684cd8712bdcf0873b17b1fa3d7ce1105550264b7fd91b184a00d1a28 md5: 075f3d5fe250279afc5d9b221d71f84b @@ -2935,6 +5147,23 @@ packages: license_family: LGPL size: 489267 timestamp: 1726766863050 +- conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.4-h866491b_0.conda + sha256: db2cd8a48e5d329eb6a324063daa63eced3761ea42badaed5c685f468695fbd3 + md5: e5d4bf6388c45045a73d5e58e1364769 + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lcms2 >=2.17,<3.0a0 + - jasper >=4.2.5,<5.0a0 + license: LGPL-2.1-only + size: 536650 + timestamp: 1744641254166 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda sha256: c86d130f0a3099e46ff51aa7ffaab73cb44fc420d27a96076aab3b9a326fc137 md5: c4cb22f270f501f5c59a122dc2adf20a @@ -2945,6 +5174,17 @@ packages: license_family: GPL size: 4133922 timestamp: 1724801171589 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_4.conda + sha256: 9d28a094f14bef4b96446534414bd20c104bbc2f557cc76ecbc9343389b87e5c + md5: a42368edbd3a672bad21c1fe8d307dce + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.3.0 + - libstdcxx >=14.3.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5069018 + timestamp: 1753904903838 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc @@ -2965,6 +5205,16 @@ packages: license: Unlicense size: 917347 timestamp: 1739176276854 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda + sha256: 6d9c32fc369af5a84875725f7ddfbfc2ace795c28f246dc70055a79f9b2003da + md5: 0b367fad34931cb79e0d6b7e5c06bb1c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 932581 + timestamp: 1753948484112 - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.48.0-hdb6dae5_1.conda sha256: ccff3309ed7b1561d3bb00f1e4f36d9d1323af998013e3182a13bf0b5dcef4ec md5: 6c4d367a4916ea169d614590bdf33b7c @@ -2983,6 +5233,15 @@ packages: license: Unlicense size: 977401 timestamp: 1739176558707 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda + sha256: 466366b094c3eb4b1d77320530cbf5400e7a10ab33e4824c200147488eebf7a6 + md5: 156bfb239b6a67ab4a01110e6718cbc4 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 980121 + timestamp: 1753948554003 - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.48.0-h67fdade_1.conda sha256: eb889b9ea754d30268fa740f91e62fae6c30ca40f9769051dd42390d2470a7ff md5: 5a7a8f7f68ce1bdb7b58219786436f30 @@ -3003,6 +5262,28 @@ packages: license: Unlicense size: 1082337 timestamp: 1739176678486 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda + sha256: 5dc4f07b2d6270ac0c874caec53c6984caaaa84bc0d3eb593b0edf3dc8492efa + md5: ccb20d946040f86f0c05b644d5eadeca + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: blessing + size: 1288499 + timestamp: 1753948889360 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 + md5: eecce068c7e4eddeb169591baac20ac4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 304790 + timestamp: 1745608545575 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -3026,6 +5307,30 @@ packages: license_family: BSD size: 283874 timestamp: 1732349525684 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c + md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 284216 + timestamp: 1745608575796 +- conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda + sha256: cbdf93898f2e27cefca5f3fe46519335d1fab25c4ea2a11b11502ff63e602c09 + md5: 9dce2f112bfd3400f4f432b3d0ac07b2 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 292785 + timestamp: 1745608759342 - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda sha256: 4b3256bd2b4e4b3183005d3bd8826d651eccd1a4740b70625afa2b7e7123d191 md5: af0cbf037dd614c34399b3b3e568c557 @@ -3048,6 +5353,16 @@ packages: license_family: GPL size: 3893695 timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_4.conda + sha256: b5b239e5fca53ff90669af1686c86282c970dd8204ebf477cf679872eb6d48ac + md5: 3c376af8888c386b9d3d1c2701e2f3ab + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.1.0 h767d61c_4 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3903453 + timestamp: 1753903894186 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda sha256: 0a9226c1b994f996229ffb54fa40d608cd4e4b48e8dc73a66134bea8ce949412 md5: 29b5a4ed4613fa81a07c21045e3f5bf6 @@ -3057,6 +5372,15 @@ packages: license_family: GPL size: 14074676 timestamp: 1724801075448 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_104.conda + sha256: f912644de2d2770042abf1a7646eff4350644e6dfea64c816dca0c3f62a94fbe + md5: c8d0b75a145e4cc3525df0343146c459 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 14630918 + timestamp: 1753904753558 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 @@ -3066,6 +5390,32 @@ packages: license_family: GPL size: 54105 timestamp: 1729027780628 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_4.conda + sha256: 81c841c1cf4c0d06414aaa38a249f9fdd390554943065c3a0b18a9fb7e8cc495 + md5: 2d34729cbc1da0ec988e57b13b712067 + depends: + - libstdcxx 15.1.0 h8f9b012_4 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 29317 + timestamp: 1753903924491 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-h8261f1e_6.conda + sha256: c62694cd117548d810d2803da6d9063f78b1ffbf7367432c5388ce89474e9ebe + md5: b6093922931b535a7ba566b6f384fbe6 + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.24,<1.25.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=14 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 433078 + timestamp: 1755011934951 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 md5: 0ea6510969e1296cc19966fad481f6de @@ -3083,6 +5433,22 @@ packages: license: HPND size: 428173 timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h59ddb5d_6.conda + sha256: 656dc01238d4b766e35976319aba2a9b3ea707b467b7a5aad94ef49a150be7a8 + md5: 1cb7b8054ffa9460ca3dd782062f3074 + depends: + - __osx >=10.13 + - lerc >=4.0.0,<5.0a0 + - libcxx >=19 + - libdeflate >=1.24,<1.25.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 401676 + timestamp: 1755012183336 - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda sha256: bb50df7cfc1acb11eae63c5f4fdc251d381cda96bf02c086c3202c83a5200032 md5: 6f2f9df7b093d6b33bc0c334acc7d2d9 @@ -3099,6 +5465,22 @@ packages: license: HPND size: 400099 timestamp: 1734398943635 +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h550210a_6.conda + sha256: fd27821c8cfc425826f13760c3263d7b3b997c5372234cefa1586ff384dcc989 + md5: 72d45aa52ebca91aedb0cfd9eac62655 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.24,<1.25.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 983988 + timestamp: 1755012056987 - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda sha256: c363a8baba4ce12b8f01f0ab74fe8b0dc83facd89c6604f4a191084923682768 md5: defed79ff7a9164ad40320e3f116a138 @@ -3134,6 +5516,16 @@ packages: license_family: MIT size: 891272 timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b + md5: 0f03292cc56bf91a077a134ea8747118 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 895108 + timestamp: 1753948278280 - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda sha256: ec9da0a005c668c0964e0a6546c21416bab608569b5863edbdf135cee26e67d8 md5: c86c7473f79a3c06de468b923416aa23 @@ -3143,6 +5535,15 @@ packages: license_family: MIT size: 420128 timestamp: 1737016791074 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda + sha256: d90dd0eee6f195a5bd14edab4c5b33be3635b674b0b6c010fb942b956aa2254c + md5: fbfc6cf607ae1e1e498734e256561dc3 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 422612 + timestamp: 1753948458902 - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda sha256: aeb71b2a2973ffed6d639ace6c1afef1a337836425e637d2320f3166dbaa5c80 md5: a63a1ec1e8d017d1b9894aed98c419da @@ -3154,6 +5555,17 @@ packages: license_family: MIT size: 291944 timestamp: 1737017103042 +- conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda + sha256: f03dc82e6fb1725788e73ae97f0cd3d820d5af0d351a274104a0767035444c59 + md5: 31e1545994c48efc3e6ea32ca02a8724 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 297087 + timestamp: 1753948490874 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf md5: 63f790534398730f59e1b899c3644d4a @@ -3166,6 +5578,18 @@ packages: license_family: BSD size: 429973 timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b + md5: aea31d2e5b1091feca96fcfe945c3cf9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - libwebp 1.6.0 + license: BSD-3-Clause + license_family: BSD + size: 429011 + timestamp: 1752159441324 - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 md5: 5e0cefc99a231ac46ba21e27ae44689f @@ -3177,6 +5601,17 @@ packages: license_family: BSD size: 357662 timestamp: 1734777539822 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + sha256: 00dbfe574b5d9b9b2b519acb07545380a6bc98d1f76a02695be4995d4ec91391 + md5: 7bb6608cf1f83578587297a158a6630b + depends: + - __osx >=10.13 + constrains: + - libwebp 1.6.0 + license: BSD-3-Clause + license_family: BSD + size: 365086 + timestamp: 1752159528504 - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda sha256: 1d75274614e83a5750b8b94f7bad2fc0564c2312ff407e697d99152ed095576f md5: 33f7313967072c6e6d8f865f5493c7ae @@ -3190,6 +5625,19 @@ packages: license_family: BSD size: 273661 timestamp: 1734777665516 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda + sha256: 7b6316abfea1007e100922760e9b8c820d6fc19df3f42fb5aca684cfacb31843 + md5: f9bbae5e2537e3b06e0f7310ba76c893 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libwebp 1.6.0 + license: BSD-3-Clause + license_family: BSD + size: 279176 + timestamp: 1752159543911 - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda sha256: 373f2973b8a358528b22be5e8d84322c165b4c5577d24d94fd67ad1bb0a0f261 md5: 08bfa5da6e242025304b206d152479ef @@ -3222,6 +5670,20 @@ packages: license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h04c0eec_1.conda + sha256: 03deb1ec6edfafc5aaeecadfc445ee436fecffcda11fcd97fde9b6632acb583f + md5: 10bcbd05e1c1c9d652fccb42b776a9fa + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 698448 + timestamp: 1754315344761 - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-he1bc88e_1.conda sha256: 248871154c6f86f0c6d456872457ad4f5799e23c09512a473041da3b9b9ee83c md5: 1d31029d8d2685d56a812dec48083483 @@ -3248,6 +5710,39 @@ packages: license_family: MIT size: 1519401 timestamp: 1754315497781 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h7a3aeb2_0.conda + sha256: 35ddfc0335a18677dd70995fa99b8f594da3beb05c11289c87b6de5b930b47a3 + md5: 31059dc620fa57d787e3899ed0421e6d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxml2 >=2.13.8,<2.14.0a0 + license: MIT + license_family: MIT + size: 244399 + timestamp: 1753273455036 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h59ddae0_0.conda + sha256: f3456f4c823ffebadc8b28a85ef146758935646a92e345e72e0617645596907e + md5: 8e76996e563b8f4de1df67da0580fd95 + depends: + - __osx >=10.13 + - libxml2 >=2.13.8,<2.14.0a0 + license: MIT + license_family: MIT + size: 225189 + timestamp: 1753273768630 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h25c3957_0.conda + sha256: 20857f1adb91cc59826e146ee6cb1157c6abf2901a93d359b1106ba87c8e770b + md5: e84f36aa02735c140099d992d491968d + depends: + - libxml2 >=2.13.8,<2.14.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 416974 + timestamp: 1753273998632 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -3295,6 +5790,32 @@ packages: license_family: APACHE size: 304885 timestamp: 1736986327031 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_2.conda + sha256: e91aab8de03406a3c7798d939997eeea021de7c3da263869ded0b980ce74b756 + md5: ffb5c09a0f4576942082a3a8fc37c4a0 + depends: + - __osx >=10.13 + constrains: + - intel-openmp <0.0a0 + - openmp 20.1.8|20.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 307983 + timestamp: 1756144829047 +- conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-20.1.8-hfa2b4ca_2.conda + sha256: 8970b7f9057a1c2c18bfd743c6f5ce73b86197d7724423de4fa3d03911d5874b + md5: 2dc2edf349464c8b83a576175fc2ad42 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - intel-openmp <0.0a0 + - openmp 20.1.8|20.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 344490 + timestamp: 1756145011384 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda sha256: 694ec5d1753cfff97785f3833173c1277d0ca0711d7c78ffc1011b40e7842741 md5: 2585f8254d2ce24399a601e9b4e15652 @@ -3314,6 +5835,22 @@ packages: license_family: Apache size: 88081 timestamp: 1737837724397 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19.1.7-h3fe3016_1.conda + sha256: 473bc7c6edba8a19e17774545e5b582a7097fcadf0ed8ae16c5b39df955e248a + md5: 9275202e21af00428e7cc23d28b2d2ca + depends: + - __osx >=10.13 + - libllvm19 19.1.7 hc29ff6c_1 + - llvm-tools-19 19.1.7 he90a8e3_1 + constrains: + - llvmdev 19.1.7 + - clang 19.1.7 + - clang-tools 19.1.7 + - llvm 19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 87412 + timestamp: 1737782713306 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda sha256: 7a302073bd476d19474272471a5ed7ecec935e65fe16bb3f35e3d5d070ce0466 md5: 61dfcd8dc654e2ca399a214641ab549f @@ -3327,6 +5864,113 @@ packages: license_family: Apache size: 25229705 timestamp: 1737837655816 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19-19.1.7-he90a8e3_1.conda + sha256: f61ff471024bdf1964c06b30dd46d44f6bc2d1af3c1d924a3448cd2e0ce611c6 + md5: eb6f2bb07f6409f943ee12fabd23bea7 + depends: + - __osx >=10.13 + - libcxx >=18 + - libllvm19 19.1.7 hc29ff6c_1 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 17631684 + timestamp: 1737782657331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.1-py312h70dad80_0.conda + sha256: d52d4955733a2bed23d381783161311e5dc5a39308f7ee488aa4a6e8bf1506d6 + md5: c3a5588db43fdabededaf958ace2334c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libxml2 >=2.13.8,<2.14.0a0 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause and MIT-CMU + size: 1611694 + timestamp: 1755885885464 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.1-py312ha108ba6_0.conda + sha256: 6b9bb0fd7c1fefdb882bcbc19d8f1b129d7d24a84e3f4e2addd38d667c46ee46 + md5: 9572f116c19b4b0ecd1cd035e664d37c + depends: + - __osx >=10.13 + - libxml2 >=2.13.8,<2.14.0a0 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause and MIT-CMU + size: 1410674 + timestamp: 1755886058218 +- conda: https://conda.anaconda.org/conda-forge/win-64/lxml-6.0.1-py312hc85b015_0.conda + sha256: efdc69ab1ecf5995e34e0378d2faee09ed3ea43b9e8b39ae039f5c429d020ee9 + md5: 6fa26df885238410e32f139cc9e46bfb + depends: + - libxml2 >=2.13.8,<2.14.0a0 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause and MIT-CMU + size: 1234085 + timestamp: 1755886164704 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + sha256: d521e272f7789ca62e7617058a4ea3bd79efa73de1a39732df209ca5299e64e2 + md5: 32d6bc2407685d7e2d8db424f42018c6 + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 23888 + timestamp: 1733219886634 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + sha256: bbb9595fe72231a8fbc8909cfa479af93741ecd2d28dfe37f8f205fef5df2217 + md5: 944fdd848abfbd6929e57c790b8174dd + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 27582 + timestamp: 1733220007802 +- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda + sha256: ce841e7c3898764154a9293c0f92283c1eb28cdacf7a164c94b632a6af675d91 + md5: 5cddc979c74b90cf5e5cda4f97d5d8bb + depends: + - llvm-openmp >=20.1.8 + - tbb 2021.* + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 103088799 + timestamp: 1753975600547 - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda sha256: 20e52b0389586d0b914a49cd286c5ccc9c47949bed60ca6df004d1d295f2edbd md5: 302dff2807f2927b3e9e0d19d60121de @@ -3370,6 +6014,15 @@ packages: license_family: LGPL size: 654269 timestamp: 1725748295260 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 + md5: e9c622e0d00fa24a6292279af3ab6d06 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11766 + timestamp: 1745776666688 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 md5: 47e340acb35de30501a76c7c799c41d7 @@ -3387,6 +6040,21 @@ packages: license: X11 AND BSD-3-Clause size: 822259 timestamp: 1738196181298 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda + sha256: 02019191a2597865940394ff42418b37bc585a03a1c643d7cea9981774de2128 + md5: 16bff3d37a4f99e3aa089c36c2b8d650 + depends: + - python >=3.11 + - python + constrains: + - numpy >=1.25 + - scipy >=1.11.2 + - matplotlib >=3.8 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1564462 + timestamp: 1749078300258 - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda sha256: 40f7b76b07067935f8a5886aab0164067b7aa71eb5ad20b7278618c0c2c98e06 md5: 3aa1c7e292afeff25a0091ddd7c69b72 @@ -3397,6 +6065,17 @@ packages: license_family: Apache size: 2198858 timestamp: 1715440571685 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.1-h171cf75_0.conda + sha256: 1522b6d4a55af3b5a4475db63a608aad4c250af9f05050064298dcebe5957d38 + md5: 6567fa1d9ca189076d9443a0b125541c + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: Apache-2.0 + license_family: APACHE + size: 186326 + timestamp: 1752218296032 - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda sha256: 230f11a2f73955b67550be09a0c1fd053772f5e01e98d5873547d63ebea73229 md5: a0ebabd021c8191aeb82793fe43cfdcb @@ -3407,6 +6086,16 @@ packages: license_family: Apache size: 124942 timestamp: 1715440780183 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.13.1-h0ba0a54_0.conda + sha256: e920fc52ab18d8bd03d26e9ffe6a44ae1683d2811eaef8289051a34b738a799a + md5: 71576ca895305a20c73304fcb581ae1a + depends: + - __osx >=10.13 + - libcxx >=19 + license: Apache-2.0 + license_family: APACHE + size: 177958 + timestamp: 1752218300571 - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda sha256: b821cb72cb3ef08fab90a9bae899510e6cf3c23b5da6070d1ec30099dfe6a5be md5: a557dde55343e03c68cd7e29e7f87279 @@ -3418,6 +6107,20 @@ packages: license_family: Apache size: 285150 timestamp: 1715441052517 +- conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.13.1-h477610d_0.conda + sha256: c5d1da3a21e1749286dba462e05be817bfb9ff50597e6f13645c98138a50cd56 + md5: b8a603d4b32e113e3551b257b677de67 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: Apache-2.0 + license_family: APACHE + size: 309517 + timestamp: 1752218329097 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 md5: e46f7ac4917215b49df2ea09a694a3fa @@ -3429,6 +6132,13 @@ packages: license_family: MIT size: 122743 timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h3f2d84a_0.conda + sha256: e2fc624d6f9b2f1b695b6be6b905844613e813aa180520e73365062683fe7b49 + md5: d76872d096d063e226482c99337209dc + license: MIT + license_family: MIT + size: 135906 + timestamp: 1744445169928 - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda sha256: 41b1aa2a67654917c9c32a5f0111970b11cfce49ed57cf44bba4aefdcd59e54b md5: 00c3efa95b3a010ee85bc36aac6ab2f6 @@ -3439,6 +6149,13 @@ packages: license_family: MIT size: 122773 timestamp: 1723652497933 +- conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h92383a6_0.conda + sha256: b3bcb65c023d2e9f5e5e809687cfede587cc71ea9f037c45b1f87727003583db + md5: 9334c0f8d63ac55ff03e3b9cef9e371c + license: MIT + license_family: MIT + size: 136237 + timestamp: 1744445192082 - conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda sha256: 106af14431772a6bc659e8d5a3bb1930cf1010b85e0e7eca99ecd3e556e91470 md5: 340cbb4ab78c90cd9d08f826ad22aed2 @@ -3450,6 +6167,13 @@ packages: license_family: MIT size: 124255 timestamp: 1723652081336 +- conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.12.0-he0c23c2_0.conda + sha256: 046a033594e87705de4edab215ceb567ea24e205fbd058d3fbfd7055b8a80fa4 + md5: 401617c1ad869b46966165aba18466fd + license: MIT + license_family: MIT + size: 134432 + timestamp: 1744445192270 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.2-py312h72c5963_0.conda sha256: c4161495b60f31de75b7ae5af3c93d5f3cd89ca0a53f132e3f9ea5ce1024bfd7 md5: 7e984cb31e0366d1812096b41b361425 @@ -3468,6 +6192,23 @@ packages: license_family: BSD size: 8480583 timestamp: 1737331690623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.2-py312h33ff503_2.conda + sha256: 0348fcaaefba8b77e7f9889a0d8ed356ff8aa53c1b69b47697b5c8c5f7d33b0e + md5: b6daf7dbe075ac2ae2ad59cdc45aa8c4 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - python_abi 3.12.* *_cp312 + - liblapack >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + size: 8785544 + timestamp: 1756343060399 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.2-py312h6693b03_0.conda sha256: 5e2e6e06cf0a762e76c1a6d66cd3b46b710b659a14555ca14c2580ad3616b21c md5: e223d8b92079f7a27355bedc72d74291 @@ -3485,6 +6226,22 @@ packages: license_family: BSD size: 7572175 timestamp: 1737331525721 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.2-py312hda18a35_2.conda + sha256: a6540036fc49d2a5f044adc567b148c2c22bdef34a6a4957727083bb4127995e + md5: 95fac8d8fcce82d91e07aba451c7cdaa + depends: + - python + - __osx >=10.13 + - libcxx >=19 + - python_abi 3.12.* *_cp312 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + size: 7945733 + timestamp: 1756343067826 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.2-py312h3150e54_0.conda sha256: 81042833d4756b9e59c438c871156eb55952ca3ce4252d7b794cac25ddb2b91f md5: cba08d3c789f57ff31e45fbd54333428 @@ -3503,6 +6260,26 @@ packages: license_family: BSD size: 7111468 timestamp: 1737332033876 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.2-py312ha72d056_2.conda + sha256: 86591a692a02eafcc33d4f35b26b53471dd8ab53492a58052461d5da037806c3 + md5: d98b7ec5211b2e197e7e0991757116cb + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 + - libcblas >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + size: 7376601 + timestamp: 1756343079617 - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-novtk_he2768ca_103.conda sha256: 801a89aad7276a56117f418ed0ebf1a94fc94b559651898bf679fadef6f98fe9 md5: 2cc93f4634b2e18f9fd25ee0effda18e @@ -3520,6 +6297,27 @@ packages: license_family: LGPL size: 28405633 timestamp: 1729329914579 +- conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.9.0-novtk_h09ba48e_104.conda + sha256: 567102a4fa3d5387525247db2738019f9ec3a7df13ec583d5671aafbd8f7491c + md5: e5719f35e66af1261068f3bfa24875b2 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freeimage >=3.18.0,<3.19.0a0 + - freetype + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - rapidjson + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxt >=1.3.1,<2.0a0 + license: LGPL-2.1-only + license_family: LGPL + size: 24952098 + timestamp: 1751411255412 - conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-novtk_h6d54593_103.conda sha256: 4a20b71ca27c5a0cfb18e6821e46fce8beef8e659583fc43ea9575e55c3e3fc9 md5: 21bf8bede9c8e7f9970d8e7b4df9af3d @@ -3535,6 +6333,23 @@ packages: license_family: LGPL size: 24934160 timestamp: 1729328376404 +- conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.9.0-novtk_h7eef8d4_104.conda + sha256: 3e76e45314fe3ab0ee419df387f8f10bac42fc351558a169289b428077295bdc + md5: e3a39e4ed5eba86a9610d688d28d9c53 + depends: + - __osx >=10.13 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freeimage >=3.18.0,<3.19.0a0 + - freetype + - libcxx >=18 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - rapidjson + license: LGPL-2.1-only + license_family: LGPL + size: 25176639 + timestamp: 1751411042717 - conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-novtk_hdfbec02_103.conda sha256: 28e3da6feaec750f1a7b64f0aebc7a5f209d64ce3cbc49a3d1a22d2c81ff32d1 md5: 6d69bb81e6f74e7818c3ba59fa026467 @@ -3551,6 +6366,24 @@ packages: license_family: LGPL size: 24745172 timestamp: 1729330315091 +- conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.9.0-novtk_h9449c50_104.conda + sha256: 118f8c26cffd8302452340b17e2da10362ab979f14b4893915d90b65ffb2c121 + md5: 9c9150d2948565d47bcea2b3926d8f15 + depends: + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freeimage >=3.18.0,<3.19.0a0 + - freetype + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - rapidjson + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: LGPL-2.1-only + license_family: LGPL + size: 24531205 + timestamp: 1751413672290 - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda sha256: c4fe8f44c5c7c7cb872a518c9e279dc351047c479bda498bfd229ac58e6aff65 md5: 3d2b6258db35c422c95ad89b72bf0aae @@ -3565,6 +6398,20 @@ packages: license_family: BSD size: 1406200 timestamp: 1734400244945 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.5-h09fa569_0.conda + sha256: db6bac8013542227eda2153b7473b10faef11fd2bae57591d1f729993109e152 + md5: f46ae82586acba0872546bd79261fafc + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libdeflate >=1.24,<1.25.0a0 + - libzlib >=1.3.1,<2.0a0 + - imath >=3.1.12,<3.1.13.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1326814 + timestamp: 1753614941084 - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda sha256: 4b2380eec838014d6f9726acf94b02167aff0e5c5914aefccd5b7ceaf3f6d6d2 md5: a61b89428c31ed7b31cbf01f1d380c50 @@ -3578,6 +6425,19 @@ packages: license_family: BSD size: 1218664 timestamp: 1734400517405 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.5-h5783f79_0.conda + sha256: e332c1c123ad002b133c01d51d136c7cddec47d1d9223ab5e6ff6cbf8ee78759 + md5: 63253e9bc101dc92563862c5c617de00 + depends: + - libcxx >=19 + - __osx >=10.13 + - imath >=3.1.12,<3.1.13.0a0 + - libdeflate >=1.24,<1.25.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1132521 + timestamp: 1753614982652 - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda sha256: 78064a2ffa02d3a23f27f63f04ac0ab9ad6ab95f61b2fe5e67ba883366694930 md5: 88a5c7a59a7740104f0bfac86225a53d @@ -3592,6 +6452,37 @@ packages: license_family: BSD size: 1179194 timestamp: 1734400780381 +- conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.5-h4750f91_0.conda + sha256: d1ba290a484da1dcb6900a94a6b0a9e37799a056b6416c81fdae46fd73224094 + md5: 1adc969e971c0265e57f2fe0fce7035c + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libdeflate >=1.24,<1.25.0a0 + - imath >=3.1.12,<3.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1060265 + timestamp: 1753614985511 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h55fea9a_1.conda + sha256: 0b7396dacf988f0b859798711b26b6bc9c6161dca21bacfd778473da58730afa + md5: 01243c4aaf71bde0297966125aea4706 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libpng >=1.6.50,<1.7.0a0 + - libstdcxx >=14 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 357828 + timestamp: 1754297886899 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 md5: 9e5816bc95d285c115a3ebc2f8563564 @@ -3606,6 +6497,19 @@ packages: license_family: BSD size: 342988 timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h036ada5_1.conda + sha256: fea2a79edb123fda31d73857e96b6cd24404a31d41693d8ef41235caed74b28e + md5: 38f264b121a043cf379980c959fb2d75 + depends: + - __osx >=10.13 + - libcxx >=19 + - libpng >=1.6.50,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 336370 + timestamp: 1754297904811 - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda sha256: faea03f36c9aa3524c911213b116da41695ff64b952d880551edee2843fe115b md5: 025c711177fc3309228ca1a32374458d @@ -3619,6 +6523,20 @@ packages: license_family: BSD size: 332320 timestamp: 1733816828284 +- conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h24db6dd_1.conda + sha256: c29cb1641bc5cfc2197e9b7b436f34142be4766dd2430a937b48b7474935aa55 + md5: 25f45acb1a234ad1c9b9a20e1e6c559e + depends: + - libpng >=1.6.50,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-2-Clause + license_family: BSD + size: 245076 + timestamp: 1754298075628 - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda sha256: 410175815df192f57a07c29a6b3fdd4231937173face9e63f0830c1234272ce3 md5: fc050366dd0b8313eb797ed1ffef3a29 @@ -3644,6 +6562,17 @@ packages: license_family: Apache size: 2937158 timestamp: 1736086387286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.2-h26f9b46_0.conda + sha256: c9f54d4e8212f313be7b02eb962d0cb13a8dae015683a403d3accd4add3e520e + md5: ffffb341206dd0dab0c36053c048d621 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3128847 + timestamp: 1754465526100 - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda sha256: 879a960d586cf8a64131ac0c060ef575cfb8aa9f6813093cba92042a86ee867c md5: eaae23dbfc9ec84775097898526c72ea @@ -3654,6 +6583,16 @@ packages: license_family: Apache size: 2590210 timestamp: 1736086530077 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.2-h6e31bce_0.conda + sha256: 8be57a11019666aa481122c54e29afd604405b481330f37f918e9fbcd145ef89 + md5: 22f5d63e672b7ba467969e9f8b740ecd + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2743708 + timestamp: 1754466962243 - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda sha256: 519a06eaab7c878fbebb8cab98ea4a4465eafb1e9ed8c6ce67226068a80a92f0 md5: fb45308ba8bfe1abf1f4a27bad24a743 @@ -3666,6 +6605,18 @@ packages: license_family: Apache size: 8462960 timestamp: 1736088436984 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.2-h725018a_0.conda + sha256: 2413f3b4606018aea23acfa2af3c4c46af786739ab4020422e9f0c2aec75321b + md5: 150d3920b420a27c0848acca158f94dc + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + size: 9275175 + timestamp: 1754467904482 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 md5: 58335b26c38bf4a20f399384c33cbcf9 @@ -3676,6 +6627,15 @@ packages: license_family: APACHE size: 62477 timestamp: 1745345660407 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d md5: df359c09c41cd186fffb93a2d87aa6f5 @@ -3688,6 +6648,18 @@ packages: license_family: BSD size: 952308 timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + sha256: 27c4014f616326240dcce17b5f3baca3953b6bc5f245ceb49c3fa1e6320571eb + md5: b90bece58b4c2bf25969b70f3be42d25 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1197308 + timestamp: 1745955064657 - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f md5: 58cde0663f487778bcd7a0c8daf50293 @@ -3699,6 +6671,17 @@ packages: license_family: BSD size: 854306 timestamp: 1723488807216 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + sha256: 5b2c93ee8714c17682cd926127f1e712efef00441a79732635a80b24f5adc212 + md5: d9f1976154f2f45588251dcfc48bcdda + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1086588 + timestamp: 1745955211398 - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 md5: a3a3baddcfb8c80db84bec3cb7746fb8 @@ -3712,6 +6695,28 @@ packages: license_family: BSD size: 820831 timestamp: 1723489427046 +- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda + sha256: 165d6f76e7849615cfa5fe5f0209b90103102db17a7b4632f933fa9c0e8d8bfe + md5: f4c483274001678e129f5cbaf3a8d765 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 1040584 + timestamp: 1745955875845 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.4.0-pyhcf101f3_0.conda + sha256: dfe0fa6e351d2b0cef95ac1a1533d4f960d3992f9e0f82aeb5ec3623a699896b + md5: cc9d9a3929503785403dbfad9f707145 + depends: + - python >=3.10 + - python + license: MIT + size: 23653 + timestamp: 1756227402815 - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda sha256: a8eb555eef5063bbb7ba06a379fa7ea714f57d9741fe0efdb9442dbbc2cccbcc md5: 7da7ccd349dbf6487a7778579d2bb971 @@ -3731,6 +6736,16 @@ packages: license_family: MIT size: 8252 timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -3750,6 +6765,27 @@ packages: license_family: MIT size: 102292 timestamp: 1753873557076 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca + md5: e2fd202833c4a981ce8a65974fe4abd1 + depends: + - __win + - python >=3.9 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + size: 21784 + timestamp: 1733217448189 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d md5: a49c2283f24696a7b30367b7346a0144 @@ -3768,6 +6804,32 @@ packages: license_family: MIT size: 276562 timestamp: 1750239526127 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + sha256: 6cca004806ceceea9585d4d655059e951152fc774a471593d4f5138e6a54c81d + md5: 94206474a5608243a10c92cefbe0908f + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - liblzma >=5.8.1,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.50.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31445023 + timestamp: 1749050216615 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda build_number: 1 sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 @@ -3795,6 +6857,27 @@ packages: license: Python-2.0 size: 31565686 timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + sha256: ebda5b5e8e25976013fdd81b5ba253705b076741d02bdc8ab32763f2afb2c81b + md5: 06049132ecd09d0c1dc3d54d93cf1d5d + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libsqlite >=3.50.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 13571569 + timestamp: 1749049058713 - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda build_number: 1 sha256: bee7b5288337cde8cbb21f34ff5b041511e4e9ba380838ab1be4deab1b55ea97 @@ -3817,6 +6900,27 @@ packages: license: Python-2.0 size: 13683139 timestamp: 1733410021762 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + sha256: b69412e64971b5da3ced0fc36f05d0eacc9393f2084c6f92b8f28ee068d83e2e + md5: 6aa5e62df29efa6319542ae5025f4376 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libsqlite >=3.50.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 15829289 + timestamp: 1749047682640 - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda build_number: 1 sha256: e1b37a398b3e2ea363de7cff6706e5ec2a5eb36b211132150e8601d7afd8f3aa @@ -3839,6 +6943,40 @@ packages: license: Python-2.0 size: 15812363 timestamp: 1733408080064 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + build_number: 102 + sha256: 3de2b9f89b220cb779f6947cf87b328f73d54eed4f7e75a3f9337caeb4443910 + md5: a9a4658f751155c819d6cd4c47f0a4d2 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.50.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Python-2.0 + size: 16825621 + timestamp: 1750062318985 + python_site_packages_path: Lib/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: 5b8d21249ff20967101ffa321cab24e8 + depends: + - python >=3.9 + - six >=1.5 + - python + license: Apache-2.0 + license_family: APACHE + size: 233310 + timestamp: 1751104122689 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 @@ -3849,6 +6987,26 @@ packages: license_family: BSD size: 6238 timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + build_number: 8 + sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 + md5: c3efd25ac4d74b1584d2f7a57195ddf1 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6958 + timestamp: 1752805918820 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + build_number: 8 + sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 + md5: 94305520c52a4aa3f6c2b1ff6008d9f8 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 7002 + timestamp: 1752805902938 - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda build_number: 5 sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d @@ -3888,6 +7046,25 @@ packages: license_family: LGPL size: 58088195 timestamp: 1734428515614 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pythonocc-core-7.9.0-novtk_h9a8ab00_100.conda + sha256: 22f4edebf9fb9b800c35b45d97de16efe668e35583335173591f5c8feb883295 + md5: a997c3c571c6ead84f9aab7fb84e252d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - occt 7.9.0 *novtk* + - occt >=7.9.0,<7.9.1.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - svgwrite + constrains: + - occt 7.9.0 *novtk* + license: LGPL-3.0-or-later + license_family: LGPL + size: 55270831 + timestamp: 1744452686968 - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda sha256: 067307705005656e692421481a9ca5edcaea01aafae20b19077b3f85ec82248d md5: 1f51ba5cb8c3ae3b087bf727b088c7dc @@ -3906,6 +7083,24 @@ packages: license_family: LGPL size: 45956286 timestamp: 1734427012959 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.9.0-novtk_hb8dc2b1_100.conda + sha256: 349f75a54e921fb56a04871899cad140d301a7653c2592041678aa120932e1a4 + md5: f4abb0dd5eb1a22f9f8fe524d36a9e64 + depends: + - __osx >=10.13 + - libcxx >=18 + - numpy >=1.19,<3 + - occt 7.9.0 *novtk* + - occt >=7.9.0,<7.9.1.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - svgwrite + constrains: + - occt 7.9.0 *novtk* + license: LGPL-3.0-or-later + license_family: LGPL + size: 43691761 + timestamp: 1744451595414 - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda sha256: 4975251069b5929edd112fd25ef0a79c784b68976d6b851ec7cf9be992c1232b md5: d2eb7ca3ace2e6f8f0ff44cd37baf3d9 @@ -3925,6 +7120,37 @@ packages: license_family: LGPL size: 39954303 timestamp: 1734428743098 +- conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.9.0-novtk_h94eb9d1_100.conda + sha256: d5c5b98ee8ad90c41ccbab25835c9825c7646f050970af292c5e78d9906f02a3 + md5: d6281b438222c7673b4f783c2d4eb910 + depends: + - numpy >=1.19,<3 + - occt 7.9.0 *novtk* + - occt >=7.9.0,<7.9.1.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - svgwrite + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - occt 7.9.0 *novtk* + license: LGPL-3.0-or-later + license_family: LGPL + size: 38773572 + timestamp: 1744455636146 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-h3f2d84a_2.conda + sha256: f87f265263a1ddbc50b98e2c2bcaa2bac63da3acc09267815dd0f4bd614cd902 + md5: 65e2f30d532b4ae2063a424c185cc678 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT + size: 156074 + timestamp: 1742820732296 - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda sha256: 645e408a91d3c3bea6cbb24e0c208222eb45694978b48e0224424369271ca0ef md5: d6e98530772fc26c112640461110d127 @@ -3935,6 +7161,16 @@ packages: license_family: MIT size: 145404 timestamp: 1715006973191 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-h92383a6_2.conda + sha256: 978580bd85c5cabca47b0f2a6ad4f22340858aa51b0c86537716bd93ca505e9e + md5: 34a2ae1d4771d5ba5b819075cf7c3d67 + depends: + - __osx >=10.13 + - libcxx >=18 + license: MIT + license_family: MIT + size: 156314 + timestamp: 1742820725403 - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda sha256: 07f88271bc5a73fc5a910895bf83bb6046b2b84a3935015c448667aef41abf9e md5: 7b32c6b26b7c3a0d97ad484ab6f207c9 @@ -3956,6 +7192,20 @@ packages: license_family: MIT size: 145494 timestamp: 1715007138921 +- conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_2.conda + sha256: cd36fcd850cdfdca316ce048714ed5a2911d5af6e3297a557a284fed77107fe9 + md5: 473596080645129ca9939cbac7c4a2cc + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + license: MIT + license_family: MIT + size: 153477 + timestamp: 1742820803681 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 @@ -3966,6 +7216,25 @@ packages: license_family: GPL size: 281456 timestamp: 1679532220005 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + sha256: 53017e80453c4c1d97aaf78369040418dea14cf8f46a2fa999f31bd70b36c877 + md5: 342570f8e02f2f022147a7f841475784 + depends: + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 256712 + timestamp: 1740379577668 - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 md5: f17f77f2acf4d344734bda76829ce14e @@ -3975,6 +7244,21 @@ packages: license_family: GPL size: 255870 timestamp: 1679532707590 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda + sha256: 8dc54e94721e9ab545d7234aa5192b74102263d3e704e6d0c8aa7008f2da2a7b + md5: db0c6b99149880c8ba515cf4abe93ee4 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 59263 + timestamp: 1755614348400 - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda sha256: 04677caac29ec64a5d41d0cca8dbec5f60fa166d5458ff5a4393e4dc08a4799e md5: 9af0e7981755f09c81421946c4bcea04 @@ -3985,6 +7269,16 @@ packages: license_family: MIT size: 186921 timestamp: 1728886721623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + sha256: d5c73079c1dd2c2a313c3bfd81c73dbd066b7eb08d213778c8bff520091ae894 + md5: c1c9b02933fdb2cfb791d936c20e887e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 193775 + timestamp: 1748644872902 - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda sha256: 8680069a88f33e96046cf09c3c973074976064c5f13c282bf0e6d6a798f4f7ab md5: a7a3324229bba7fd1c06bcbbb26a420a @@ -3994,6 +7288,97 @@ packages: license_family: MIT size: 178400 timestamp: 1728886821902 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda + sha256: 65c946fc5a9bb71772a7ac9bad64ff08ac07f7d5311306c2dcc1647157b96706 + md5: d0fcaaeff83dd4b6fb035c2f36df198b + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 185180 + timestamp: 1748644989546 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.12.10-h718f522_0.conda + noarch: python + sha256: f7cdb61d8e758d47500b6f45e6c2685a275ca65d1cb9c8bd094fcea227e8b318 + md5: 356a5e0f6531b190b002f7257675074d + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 10661766 + timestamp: 1755823612718 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.12.10-hab3cb23_0.conda + noarch: python + sha256: a5dd1d849b51c32f32c05d0a0ed36631c9047c387cc6759728072438e7e4e3ca + md5: 42bacf6b1ba6d0aa0501f08cfe5161ed + depends: + - python + - __osx >=10.13 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 10670425 + timestamp: 1755823705979 +- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.12.10-h429b229_0.conda + noarch: python + sha256: fabd95186f2e4c3239ff3ad139ff62f1c3523189f3187397d94734f8acfc281a + md5: aeac13adbe43735128768c89574c1e11 + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: MIT + license_family: MIT + size: 10954968 + timestamp: 1755823643535 +- conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.1-py312h21f5128_0.conda + sha256: 5e4086909b5884d6ba1244f63ac83b6cff9d1a871e1c334cd07eb28d0feda5cd + md5: d38eb6d34385f82b02ff776a66977cc4 + depends: + - __glibc >=2.17,<3.0.a0 + - geos >=3.13.1,<3.13.2.0a0 + - libgcc >=13 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 639956 + timestamp: 1747664455853 +- conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.1-py312hbf10b29_0.conda + sha256: 9cbaaed784b2d73d469dbc1ea19d09e28c23547759f37e460d2cb0595a414481 + md5: 410a639266f470aa4bf28ee796085971 + depends: + - __osx >=10.13 + - geos >=3.13.1,<3.13.2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 606029 + timestamp: 1747664579208 +- conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.1-py312h3f81574_0.conda + sha256: c6ac68bb8077690fae4f0e29abefc1fe71fc53b6f01dcb0c9f35269218d14914 + md5: 5681a2b9d6082a1b034b5339a21cb497 + depends: + - geos >=3.13.1,<3.13.2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 596725 + timestamp: 1747664874209 - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 sha256: 46fdeadf8f8d725819c4306838cdfd1099cd8fe3e17bd78862a5dfdcd6de61cf md5: fbfb84b9de9a6939cb165c02c69b1865 @@ -4003,6 +7388,16 @@ packages: license_family: MIT size: 213817 timestamp: 1643442169866 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d + md5: 3339e3b65d58accf4ca4fb8748ab16b3 + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + size: 18455 + timestamp: 1753199211006 - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda sha256: 0571b8426cd6fab05cd0639d4a5203e0f01ba8da75b48ed7b7b1103445e6a3b2 md5: 9a13b437c86284d668ba1ad03647f6c7 @@ -4025,6 +7420,18 @@ packages: license_family: GPL size: 1248414 timestamp: 1729588950292 +- conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.1-h32e72b7_1.conda + sha256: 1db074e3671dd736f2d44c42f8cdf7a4afe879b1fbfcffb3b3f87b40777239fd + md5: 1b22a26c3a9ad805c0fb861b23160ba5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - pcre2 >=10.45,<10.46.0a0 + license: GPL-3.0-or-later + license_family: GPL + size: 1249501 + timestamp: 1746016691247 - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda sha256: 5d1accf5609d7152c8ee0961b7a83aa73519866f549e4e75aa0b8e2fe365db65 md5: e977150e8f2dd12aa3fa3c94c87e5b8f @@ -4036,6 +7443,17 @@ packages: license_family: GPL size: 1160596 timestamp: 1729589065015 +- conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.1-h7b1c113_1.conda + sha256: 01774177bdeff550a1eea670db9db1fdd1e547b58967ced67782fed47bce5583 + md5: 1c17974c580218e6ee35c2a72a497177 + depends: + - __osx >=10.13 + - libcxx >=18 + - pcre2 >=10.45,<10.46.0a0 + license: GPL-3.0-or-later + license_family: GPL + size: 1158340 + timestamp: 1746016697903 - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda sha256: b6f66e27dac7799a844e530f2b946713223106b8df66c809a6dda4a96ae68ba3 md5: f076cd8282f1c164e57990a1daf70fd1 @@ -4048,6 +7466,18 @@ packages: license_family: GPL size: 1079944 timestamp: 1729589112085 +- conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.1-hf4c94c2_1.conda + sha256: 179a523645c682b31e21f6bccb12bd58fa68e227f54d796964e277254ffa8b75 + md5: 94e5e95118a09b93e13ceb9681044be0 + depends: + - pcre2 >=10.45,<10.46.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-3.0-or-later + license_family: GPL + size: 1081846 + timestamp: 1746017001804 - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda sha256: 69ab5804bdd2e8e493d5709eebff382a72fab3e9af6adf93a237ccf8f7dbd624 md5: 460eba7851277ec1fd80a1a24080787a @@ -4058,6 +7488,26 @@ packages: license_family: GPL size: 15166921 timestamp: 1735290488259 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda + sha256: 0053c17ffbd9f8af1a7f864995d70121c292e317804120be4667f37c92805426 + md5: 1bad93f0aa428d618875ef3a588a889e + depends: + - __glibc >=2.28 + - kernel-headers_linux-64 4.18.0 he073ed8_8 + - tzdata + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 24210909 + timestamp: 1752669140965 +- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a + md5: 959484a66b4b76befcddc4fa97c95567 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 37554 + timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda sha256: f97372a1c75b749298cb990405a690527e8004ff97e452ed2c59e4bc6a35d132 md5: c6ee25eb54accb3f1c8fc39203acfaf1 @@ -4069,6 +7519,18 @@ packages: license_family: MIT size: 221236 timestamp: 1725491044729 +- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda + sha256: 30e82640a1ad9d9b5bee006da7e847566086f8fdb63d15b918794a7ef2df862c + md5: 72226638648e494aaafde8155d50dab2 + depends: + - libhwloc >=2.12.1,<2.12.2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + size: 150266 + timestamp: 1755776172092 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 md5: 9190dd0a23d925f7602f9628b3aed511 @@ -4091,6 +7553,17 @@ packages: license_family: BSD size: 3318875 timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 + md5: a0116df4f4ed05c303811a837d5b39d8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + size: 3285204 + timestamp: 1748387766691 - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 md5: bf830ba5afc507c6232d4ef0fb1a882d @@ -4100,6 +7573,27 @@ packages: license_family: BSD size: 3270220 timestamp: 1699202389792 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc + md5: 9864891a6946c2fe037c02fca7392ab4 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + size: 3259809 + timestamp: 1748387843735 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + sha256: e3614b0eb4abcc70d98eae159db59d9b4059ed743ef402081151a948dce95896 + md5: ebd0e761de9aa879a51d22cc721bd095 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: TCL + license_family: BSD + size: 3466348 + timestamp: 1748388121356 - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 md5: fc048363eb8f03cd1737600a5d08aafe @@ -4121,6 +7615,24 @@ packages: license_family: MIT size: 21238 timestamp: 1753796677376 +- conda: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_1.conda + sha256: f646e7944f722281b27e9dea97c51047840b9f7860e740dbd1869cf7f5b2bd23 + md5: 56bddff4bb4bdfd4badd35cb8312f1a4 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 14231 + timestamp: 1734343818024 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c + md5: edd329d7d3a4ab45dcf905899a7a6115 + depends: + - typing_extensions ==4.15.0 pyhcf101f3_0 + license: PSF-2.0 + license_family: PSF + size: 91383 + timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 md5: 0caa1af407ecff61170c9437a808404d @@ -4137,6 +7649,12 @@ packages: license: LicenseRef-Public-Domain size: 122921 timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 + md5: 4222072737ccff51314b5ece9c7d6f5a + license: LicenseRef-Public-Domain + size: 122968 + timestamp: 1742727099393 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 md5: 6797b005cd0f439c4c5c9ac565783700 @@ -4145,6 +7663,39 @@ packages: license: LicenseRef-MicrosoftWindowsSDK10 size: 559710 timestamp: 1728377334097 +- conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhd8ed1ab_2.conda + sha256: a179ee4e4d13bdb308d4c26f8af1da1510d07961fe0c5b0cfe0fff25e9eb6905 + md5: a7bafc627d25a939bb68206bd7abd483 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 9517 + timestamp: 1734421007487 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 + md5: 436c165519e140cb08d246a4472a9d6a + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 101735 + timestamp: 1750271478254 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_31.conda + sha256: cb357591d069a1e6cb74199a8a43a7e3611f72a6caed9faa49dbb3d7a0a98e0b + md5: 28f4ca1e0337d0f27afb8602663c5723 + depends: + - vc14_runtime >=14.44.35208 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 18249 + timestamp: 1753739241465 - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda sha256: 7ce178cf139ccea5079f9c353b3d8415d1d49b0a2f774662c355d3f89163d7b4 md5: 00cf3a61562bd53bd5ea99e6888793d0 @@ -4214,6 +7765,28 @@ packages: license_family: BSD size: 20370 timestamp: 1737627065789 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_31.conda + sha256: c0a380608afc9ad98b1e261fe55702b72e33f80d372f358075c5dea3d185816f + md5: 0bf228856c72261e5bbd9530002176f2 + depends: + - vswhere + constrains: + - vs_win-64 2022.14 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 21054 + timestamp: 1753739201422 +- conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda + sha256: b72270395326dc56de9bd6ca82f63791b3c8c9e2b98e25242a9869a4ca821895 + md5: f622897afff347b715d046178ad745a5 + depends: + - __win + license: MIT + license_family: MIT + size: 238764 + timestamp: 1745560912727 - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda sha256: 8caeda9c0898cb8ee2cf4f45640dbbbdf772ddc01345cfb0f7b352c58b4d8025 md5: ba83df93b48acfc528f5464c9a882baa @@ -4221,6 +7794,25 @@ packages: license_family: MIT size: 219013 timestamp: 1719460515960 +- conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f + md5: 46e441ba871f524e2b067929da3051c2 + depends: + - __win + - python >=3.9 + license: LicenseRef-Public-Domain + size: 9555 + timestamp: 1733130678956 +- conda: https://conda.anaconda.org/conda-forge/noarch/xmlschema-4.1.0-pyhd8ed1ab_0.conda + sha256: 7565515b9d97575a393c44ee6ddca5a69fc37fc59b29c44467c7b8a7225468a4 + md5: 4f10c752b1e5bc8b533a14c356db7b46 + depends: + - elementpath <6.0.0,>=4.8.0 + - python >=3.9 + license: MIT + license_family: MIT + size: 425680 + timestamp: 1749678710627 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -4243,6 +7835,18 @@ packages: license_family: MIT size: 27198 timestamp: 1734229639785 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250 + md5: 1c74ff8c35dcadf952a16f752ca5aa49 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + license: MIT + license_family: MIT + size: 27590 + timestamp: 1741896361728 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda sha256: a0e7fca9e341dc2455b20cd320fc1655e011f7f5f28367ecf8617cccd4bb2821 md5: b6eb6d0cb323179af168df8fe16fb0a1 @@ -4254,6 +7858,17 @@ packages: license_family: MIT size: 835157 timestamp: 1738613163812 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + sha256: 51909270b1a6c5474ed3978628b341b4d4472cd22610e5f22b506855a5e20f67 + md5: db038ce880f100acc74dba10302b5630 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + license: MIT + license_family: MIT + size: 835896 + timestamp: 1741901112627 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 @@ -4274,6 +7889,41 @@ packages: license_family: MIT size: 19901 timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a + md5: 17dcc85db3c7886650b8908b183d6876 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + license: MIT + license_family: MIT + size: 47179 + timestamp: 1727799254088 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda sha256: a8afba4a55b7b530eb5c8ad89737d60d60bc151a03fbef7a2182461256953f0e md5: 279b0de5f6ba95457190a1c459a64e31 @@ -4287,6 +7937,24 @@ packages: license_family: MIT size: 379686 timestamp: 1731860547604 +- conda: https://conda.anaconda.org/conda-forge/noarch/xsdata-25.7-pyhd8ed1ab_0.conda + sha256: c59b93c0d1e1c00948431cec6f38b2ebd800c2e282e2efc90b055350f2138ff0 + md5: 4395b9c3f174e5abeb837db379343244 + depends: + - click >=5.0 + - click-default-group >=1.2 + - docformatter >=1.7.2 + - jinja2 >=2.10 + - lxml >=4.4.1 + - python >=3.9 + - requests + - ruff >=0.1.9 + - toposort >=1.5 + - typing-extensions + license: MIT + license_family: MIT + size: 260640 + timestamp: 1751907866433 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda sha256: 802725371682ea06053971db5b4fb7fbbcaee9cb1804ec688f55e51d74660617 md5: 68eae977d7d1196d32b636a026dc015d @@ -4325,6 +7993,19 @@ packages: license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later size: 23977 timestamp: 1738525637903 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_2.conda + sha256: 22289a81da4698bb8d13ac032a88a4a1f49505b2303885e1add3d8bd1a7b56e6 + md5: fb3fa84ea37de9f12cc8ba730cec0bdc + depends: + - liblzma 5.8.1 h2466b09_2 + - liblzma-devel 5.8.1 h2466b09_2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz-tools 5.8.1 h2466b09_2 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 24430 + timestamp: 1749230691276 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda sha256: 840838dca829ec53f1160f3fca6dbfc43f2388b85f15d3e867e69109b168b87b md5: bf627c16aa26231720af037a2709ab09 @@ -4382,6 +8063,19 @@ packages: license: 0BSD AND LGPL-2.1-or-later size: 64183 timestamp: 1738525614199 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_2.conda + sha256: 38712f0e62f61741ab69d7551fa863099f5be769bdf9fdbc28542134874b4e88 + md5: e1b62ec0457e6ba10287a49854108fdb + depends: + - liblzma 5.8.1 h2466b09_2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - xz 5.8.1.* + license: 0BSD AND LGPL-2.1-or-later + size: 67419 + timestamp: 1749230666460 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 @@ -4415,6 +8109,45 @@ packages: license_family: Other size: 107439 timestamp: 1727963788936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h4c3975b_3.conda + sha256: 40c76563f3a398f27b4036e468881a1f909a8c66d100a16a28c1379a0940a59c + md5: 7a2c6e25a4fabf9fab62ee1977beabe5 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=14 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 488806 + timestamp: 1756075707087 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h2f459f6_3.conda + sha256: ae6a6f87f27270d3c58c826ba3e344780816793af7586fe7f3fa4d4b07c9e274 + md5: f53fa375c2e4a2e42a64578db302145d + depends: + - __osx >=10.13 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 644204 + timestamp: 1756075773049 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312he06e257_3.conda + sha256: 13f43231e22173473ba300d9a128caf386ec73a18a5b9b192858ba18ea2e78f1 + md5: e23097165ce8ba29c30854c2a9e84449 + depends: + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + size: 342842 + timestamp: 1756075919270 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b md5: 4d056880988120e29d75bfff282e0f45 @@ -4426,6 +8159,18 @@ packages: license_family: BSD size: 554846 timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb + md5: 6432cb5d4ac0046c3ac0a8a0f95842f9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 567578 + timestamp: 1742433379869 - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 md5: 4cb2cd56f039b129bb0e491c1164167e @@ -4436,6 +8181,16 @@ packages: license_family: BSD size: 498900 timestamp: 1714723303098 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + sha256: c171c43d0c47eed45085112cb00c8c7d4f0caa5a32d47f2daca727e45fb98dca + md5: cd60a4a5a8d6a476b30d8aa4bb49251a + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 485754 + timestamp: 1742433356230 - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 md5: 9a17230f95733c04dc40a2b1e5491d74 @@ -4448,3 +8203,15 @@ packages: license_family: BSD size: 349143 timestamp: 1714723445995 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + sha256: bc64864377d809b904e877a98d0584f43836c9f2ef27d3d2a1421fa6eae7ca04 + md5: 21f56217d6125fb30c3c3f10c786d751 + depends: + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 354697 + timestamp: 1742433568506 diff --git a/pixi.toml b/pixi.toml index 2b98462902..05315d174e 100644 --- a/pixi.toml +++ b/pixi.toml @@ -9,7 +9,12 @@ platforms = ["win-64", "linux-64", "osx-64"] common = { features = ["common"], no-default-feature = true } prod = { features = ["prod", "common"], no-default-feature = true } dev = { features = ["dev", "common"], no-default-feature = true } -#tests = { features = ["tests", "common"], no-default-feature = true } +lint = { features = ["lint"], no-default-feature = true } +tests = { features = ["tests", "common"], no-default-feature = true } + +[feature.lint.dependencies] +ruff = "*" +black = "*" [feature.common.dependencies] # Build deps @@ -34,17 +39,16 @@ nlohmann_json = "*" zlib = "*" pythonocc-core = "*" -#[feature.tests.dependencies] -# tests +[feature.tests.dependencies] pytest = "*" -#shapely = "*" -#tabulate = "*" -#isodate = "*" -#python-dateutil = "*" -#xmlschema = "*" -#xsdata = "*" -#lxml = "*" -#networkx = "*" +shapely = "*" +tabulate = "*" +isodate = "*" +python-dateutil = "*" +xmlschema = "*" +xsdata = "*" +lxml = "*" +networkx = "*" [feature.common.target.win-64.dependencies] vs2022_win-64 = "*" @@ -61,13 +65,19 @@ build-release = { cmd = ["cmake", "--build", "build/win-release", "--config", "R [feature.dev.target.win-64.tasks] configure-debug = { cmd = ["cmake", "--preset", "win-debug", "-B", "build/win-debug", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["build/win-debug/CMakeCache.txt"] } build-debug = { cmd = ["cmake", "--build", "build/win-debug", "--config", "Debug"], description = "Build the project", depends-on = ["configure-debug"] } - install-debug = { cmd = ["cmake", "--install", "build/win-debug", "--config", "Debug"], description = "Install the project" } # Optionally Install files to your desired env using --prefix vsdebug = { cmd = ["python"], description = "Run a python script with vs debugger attached" } -#[feature.tests.target.win-64.tasks] -test = { cmd = "pytest test/test_sweeps.py"} +[feature.tests.tasks] +configure-test = { cmd = ["cmake", "--preset", "win-test", "-B", "build/win-test", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["build/win-test/CMakeCache.txt"] } +build-test = { cmd = ["cmake", "--build", "build/win-test", "--config", "Release"], description = "Build the project", depends-on = ["configure-test"], outputs=["build/win-test/IfcGeom.lib"] } +install-test = { cmd = ["cmake", "--install", "build/win-test", "--config", "Release"], description = "Install the project", depends-on = ["build-test"] } # Optionally Install files to your desired env using --prefix + +test = { cmd = "pytest .", cwd="src/ifcopenshell-python/test", depends-on=["install-test"], env = {PYTHONPATH="$PIXI_PROJECT_ROOT/src/ifcpatch"}} + +[feature.lint.tasks] +lint = { cmd = "ruff check && black --diff --check ."} [feature.common.target.win-64.activation] -#scripts = ["cmake/activate.bat"] \ No newline at end of file +#scripts = ["cmake/activate.bat"] diff --git a/test/input_temp/.gitignore b/test/input_temp/.gitignore deleted file mode 100644 index fc33106236..0000000000 --- a/test/input_temp/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.glb -*.tmp \ No newline at end of file From 79546807d9b1f3e7ecbe3afd920c2ab8455cbc3f Mon Sep 17 00:00:00 2001 From: krande Date: Thu, 28 Aug 2025 13:15:47 +0200 Subject: [PATCH 19/39] fix lint --- src/bonsai/bonsai/bim/module/model/wall.py | 8 ++++++-- src/bonsai/scripts/dev_environment.py | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/wall.py b/src/bonsai/bonsai/bim/module/model/wall.py index 067e37c0ae..e2826fbada 100644 --- a/src/bonsai/bonsai/bim/module/model/wall.py +++ b/src/bonsai/bonsai/bim/module/model/wall.py @@ -469,8 +469,12 @@ class ChangeExtrusionXAngle(bpy.types.Operator, tool.Ifc.Operator): existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, pi, tolerance=0.001) else existing_x_angle coord_list = builder.get_polyline_coords(extrusion.SweptArea.OuterCurve) - coord_list = [(p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list] # Reset the transformation and returns to the original points with 0 degrees - coord_list = [(p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list] # Apply the transformation for the new x_angle + coord_list = [ + (p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list + ] # Reset the transformation and returns to the original points with 0 degrees + coord_list = [ + (p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list + ] # Apply the transformation for the new x_angle builder.set_polyline_coords(extrusion.SweptArea.OuterCurve, coord_list) # The extrusion direction calculated previously default to the positive direction diff --git a/src/bonsai/scripts/dev_environment.py b/src/bonsai/scripts/dev_environment.py index cff36d8320..55d3fc2a77 100644 --- a/src/bonsai/scripts/dev_environment.py +++ b/src/bonsai/scripts/dev_environment.py @@ -50,7 +50,6 @@ else: raise RuntimeError("Unsupported platform") - BONSAI_PATH_CANDIDATES = ( # Installed from Bonsai Unstalble Repo. BLENDER_PATH / r"extensions/raw_githubusercontent_com/bonsai", From 77acfd70698f8439230387df47a3559de8aece25 Mon Sep 17 00:00:00 2001 From: krande Date: Thu, 28 Aug 2025 13:16:07 +0200 Subject: [PATCH 20/39] Refactor tests: update input path resolution, optimize imports, and enhance `load_ifc_occ_shape`. Simplify path definitions in `test_write.py` and `test_open.py`. Replace `typing` with `collections.abc` for `Sequence` usage in `test_sweeps.py` and adjust type hints to use Python's generic collections. Add optional verbosity to `load_ifc_occ_shape` and refine geometry test assertions. Update `simple_sweep_2.ifc` fixtures for consistency with test expectations. --- .../test/fixtures/geom/simple_sweep_2.ifc | 36 +++++++++---------- .../test/geom/test_sweeps.py | 17 ++++----- src/ifcopenshell-python/test/test_open.py | 2 +- src/ifcopenshell-python/test/test_write.py | 2 +- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_2.ifc b/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_2.ifc index 7181f44337..b7c2eaf2e2 100644 --- a/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_2.ifc +++ b/src/ifcopenshell-python/test/fixtures/geom/simple_sweep_2.ifc @@ -1,16 +1,16 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); -FILE_NAME('/dev/null','2025-08-27T15:03:01+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); +FILE_NAME('/dev/null','2025-08-28T09:45:32+02:00',('AdaUser'),('AdaOrg'),'IfcOpenShell 0.8.2','IfcOpenShell 0.8.2','Nobody'); FILE_SCHEMA(('IFC4X3_ADD2')); ENDSEC; DATA; -#1=IFCPROJECT('1tjHZhewf3AROX1xjpvefY',$,'AdaProject',$,$,$,$,(#11),#6); +#1=IFCPROJECT('3kk2KcD29DrxlrjJ23wiG2',$,'AdaProject',$,$,$,$,(#11),#6); #2=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); #3=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); #4=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); #5=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); -#6=IFCUNITASSIGNMENT((#5,#4,#2,#3)); +#6=IFCUNITASSIGNMENT((#3,#5,#4,#2)); #7=IFCCARTESIANPOINT((0.,0.,0.)); #8=IFCDIRECTION((0.,0.,1.)); #9=IFCDIRECTION((1.,0.,0.)); @@ -24,18 +24,18 @@ DATA; #17=IFCORGANIZATION('ADA','Assembly For Design and Analysis',$,$,$); #18=IFCPERSONANDORGANIZATION(#16,#17,$); #19=IFCAPPLICATION(#17,'XXX','ADA','ADA'); -#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756299781); +#20=IFCOWNERHISTORY(#18,#19,.READWRITE.,$,$,#18,#19,1756367132); #21=IFCDIRECTION((0.,0.,1.)); #22=IFCDIRECTION((1.,0.,0.)); #23=IFCCARTESIANPOINT((0.,0.,0.)); #24=IFCAXIS2PLACEMENT3D(#23,#21,#22); #25=IFCLOCALPLACEMENT($,#24); -#26=IFCSITE('1$h1D7pKLBhQ2roRvKz9Kq',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); -#27=IFCRELAGGREGATES('1cbS0eMMz5482GelhPUH3D',#20,'Project Container',$,#1,(#26)); +#26=IFCSITE('3192LLwf9Et9NYY6Dp1HMI',#20,'Ada',$,$,#25,$,$,.ELEMENT.,$,$,$,$,$); +#27=IFCRELAGGREGATES('3sB8i$7If0y9iXdBJx7Et7',#20,'Project Container',$,#1,(#26)); #28=IFCPROPERTYSINGLEVALUE('project',$,IFCTEXT('AdaProject'),$); #29=IFCPROPERTYSINGLEVALUE('schema',$,IFCTEXT('IFC4X3_add2'),$); -#30=IFCPROPERTYSET('2Jj1ZXLcTFjxFj$8jn9r9Z',#20,'Properties',$,(#28,#29)); -#31=IFCRELDEFINESBYPROPERTIES('30tu3wf014T9Gbje7aeoNI',#20,'Properties',$,(#26),#30); +#30=IFCPROPERTYSET('16zSs_zL5FTQaH0f6iQohK',#20,'Properties',$,(#28,#29)); +#31=IFCRELDEFINESBYPROPERTIES('2hQUoEcor7uf16HkCAa06h',#20,'Properties',$,(#26),#30); #32=IFCMATERIAL('S355',$,'Steel'); #33=IFCPROPERTYSINGLEVALUE('Grade',$,IFCTEXT('S355'),$); #34=IFCPROPERTYSINGLEVALUE('YieldStress',$,IFCPRESSUREMEASURE(355000000.),$); @@ -45,21 +45,21 @@ DATA; #38=IFCPROPERTYSINGLEVALUE('SpecificHeatCapacity',$,IFCSPECIFICHEATCAPACITYMEASURE(0.03),$); #39=IFCPROPERTYSINGLEVALUE('MassDensity',$,IFCMASSDENSITYMEASURE(7850.),$); #40=IFCMATERIALPROPERTIES('MaterialMechanical','A Material property description',(#33,#34,#35,#36,#37,#38,#39),#32); -#41=IFCRELASSOCIATESMATERIAL('1kAam6k_5CO9mOkVDyk7FN',#20,'S355','Objects related to S355',(#64),#32); +#41=IFCRELASSOCIATESMATERIAL('3GCQxFEKjCmPtz21j5vEC_',#20,'S355','Objects related to S355',(#64),#32); #42=IFCDIRECTION((0.,0.,1.)); #43=IFCDIRECTION((1.,0.,0.)); #44=IFCCARTESIANPOINT((0.,0.,0.)); #45=IFCAXIS2PLACEMENT3D(#44,#42,#43); #46=IFCLOCALPLACEMENT(#25,#45); -#47=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.1,0.),(0.1,0.05)),$); -#48=IFCINDEXEDPOLYCURVE(#47,(IFCLINEINDEX((3,1)),IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3))),$); +#47=IFCCARTESIANPOINTLIST2D(((0.1,0.05),(0.,0.),(0.1,0.),(0.1,0.05)),$); +#48=IFCINDEXEDPOLYCURVE(#47,$,$); #49=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#48); -#50=IFCCARTESIANPOINTLIST3D(((100.,50.,-200.389146),(100.,50.,-200.),(100.025071208213,50.0003133895072,-200.486102587622),(100.093998658131,50.001174980994,-200.558749),(100.650041416131,50.0081255269446,-200.906275838506),(100.759324133751,50.0392280068626,-201.012218627291),(100.799999960608,50.1196282582437,-201.138769890994),(100.799999960608,50.6140303261248,-201.764595294385),(100.887867797756,50.7455308473077,-201.931051650581),(101.099999960608,50.7999999361248,-201.999999864385),(101.7,50.8000000827328,-202.000000049965)),$); -#51=IFCINDEXEDPOLYCURVE(#50,(IFCLINEINDEX((2,1)),IFCARCINDEX((1,3,4)),IFCLINEINDEX((4,5)),IFCARCINDEX((5,6,7)),IFCLINEINDEX((7,8)),IFCARCINDEX((8,9,10)),IFCLINEINDEX((10,11))),$); -#52=IFCDIRECTION((1.,-0.,0.)); +#50=IFCCARTESIANPOINTLIST3D(((50.,100.,200.),(50.,100.,200.389146),(50.0003133895072,100.025071208213,200.486102587622),(50.001174980994,100.093998658131,200.558749),(50.0086491903016,100.691934415524,200.932458971772),(50.0310627108963,100.770687414196,201.008805063266),(50.089001837944,100.800000190195,201.100002410475),(50.6760204909973,100.800000000803,201.843063903121),(50.7636872882004,100.858578730855,201.954034522829),(50.7999999397009,101.700000021708,201.999999960467),(50.8000002509973,100.999999960803,202.000000303121)),$); +#51=IFCINDEXEDPOLYCURVE(#50,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCLINEINDEX((4,5)),IFCARCINDEX((5,6,7)),IFCLINEINDEX((7,8)),IFCARCINDEX((8,9,11)),IFCLINEINDEX((11,10))),$); +#52=IFCDIRECTION((1.,0.,0.)); #53=IFCCARTESIANPOINT((0.,0.,0.)); -#54=IFCDIRECTION((0.,0.,-1.)); -#55=IFCDIRECTION((0.,1.,0.)); +#54=IFCDIRECTION((0.,0.,1.)); +#55=IFCDIRECTION((1.,0.,0.)); #56=IFCAXIS2PLACEMENT3D(#53,#54,#55); #57=IFCFIXEDREFERENCESWEPTAREASOLID(#49,#56,#51,$,$,#52); #58=IFCSHAPEREPRESENTATION(#12,'Body','AdvancedSweptSolid',(#57)); @@ -68,7 +68,7 @@ DATA; #61=IFCSURFACESTYLESHADING(#60,0.); #62=IFCSURFACESTYLE('Color1',.BOTH.,(#61)); #63=IFCSTYLEDITEM(#57,(#62),'Color1'); -#64=IFCBUILDINGELEMENTPROXY('34gqNt7M58Z972x$etr9V2',#20,'sweep2',$,$,#46,#59,$,$); -#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('1kbNj7znLCygBdHO9SJygX',#20,'Physical model',$,(#64),#26); +#64=IFCBUILDINGELEMENTPROXY('0Yr8J8fnj47xCNdvnijjk4',#20,'sweep2',$,$,#46,#59,$,$); +#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('1Bl6up0hb69elL9bAj0Yd6',#20,'Physical model',$,(#64),#26); ENDSEC; END-ISO-10303-21; diff --git a/src/ifcopenshell-python/test/geom/test_sweeps.py b/src/ifcopenshell-python/test/geom/test_sweeps.py index 6f0ea5b1a8..e5b93ad6d0 100644 --- a/src/ifcopenshell-python/test/geom/test_sweeps.py +++ b/src/ifcopenshell-python/test/geom/test_sweeps.py @@ -1,12 +1,12 @@ import pathlib -from typing import List, Sequence, Tuple +from collections.abc import Sequence import ifcopenshell import pytest from OCC.Core.TopoDS import TopoDS_Shape, TopoDS_Compound -def _bbox_from_vertices(verts: List[Tuple[float, float, float]]): +def _bbox_from_vertices(verts: list[tuple[float, float, float]]): if not verts: return (0, 0, 0), (0, 0, 0) xs = [v[0] for v in verts] @@ -21,11 +21,11 @@ def _size_from_bbox(mn, mx): return (mx[0] - mn[0], mx[1] - mn[1], mx[2] - mn[2]) -def _triples(flat: Sequence[float]) -> List[Tuple[float, float, float]]: +def _triples(flat: Sequence[float]) -> list[tuple[float, float, float]]: return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] -def load_ifc_occ_shape(ifc_path: str) -> TopoDS_Shape: +def load_ifc_occ_shape(ifc_path: str, verbose=False) -> TopoDS_Shape: try: import ifcopenshell.geom as geom except Exception as e: @@ -62,7 +62,8 @@ def load_ifc_occ_shape(ifc_path: str) -> TopoDS_Shape: occ_shape = shape_result.geometry if isinstance(occ_shape, TopoDS_Compound): json_data = occ_shape.DumpJson() - print(json_data) + if verbose: + print(json_data) else: raise NotImplemented(f"Unsupported shape type: {type(occ_shape)}") @@ -123,9 +124,9 @@ def test_simple_sweep_2(geom_dir): ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) occ_shape = load_ifc_occ_shape(ifc_file_path) assert occ_shape is not None - assert ifc_sz == pytest.approx((0.8764374444355525, 1.800000587893038, 2.095849252263605)) - assert ifc_mn == pytest.approx((50.0, 99.9, 200.0)) - assert ifc_mx == pytest.approx((50.87643744443555, 101.70000058789304, 202.0958492522636)) + assert ifc_mn == pytest.approx((50.0, 100.0, 200.0)) + assert ifc_mx == pytest.approx((50.89584911299009, 101.70000025609394, 202.0000003710634)) + assert ifc_sz == pytest.approx((0.8958491129900921, 1.7000002560939436, 2.0000003710634076)) def test_pipe_12d(geom_dir): diff --git a/src/ifcopenshell-python/test/test_open.py b/src/ifcopenshell-python/test/test_open.py index fd8864e584..99f312c76e 100644 --- a/src/ifcopenshell-python/test/test_open.py +++ b/src/ifcopenshell-python/test/test_open.py @@ -21,7 +21,7 @@ import pytest import ifcopenshell -TEST_FILE_DIR = Path("../../test/input/") +TEST_FILE_DIR = Path(__file__).parent / "../../../test/input/" class TestOpen: diff --git a/src/ifcopenshell-python/test/test_write.py b/src/ifcopenshell-python/test/test_write.py index 356f46c6fc..352aea2538 100644 --- a/src/ifcopenshell-python/test/test_write.py +++ b/src/ifcopenshell-python/test/test_write.py @@ -22,7 +22,7 @@ import pytest import ifcopenshell -TEST_FILE_DIR = Path("../../test/input/") +TEST_FILE_DIR = Path(__file__).parent / "../../../test/input/" class TestWrite: From 7eea995b88ae90275ee60c0f939b6dad41329f73 Mon Sep 17 00:00:00 2001 From: krande Date: Thu, 28 Aug 2025 15:41:20 +0200 Subject: [PATCH 21/39] Remove `load_ifc_occ_shape` and related OpenCASCADE-specific code from `test_sweeps.py`. Simplify tests by focusing on mesh-based geometry validation. Clean up imports and unused assertions. --- .../test/geom/test_sweeps.py | 54 ------------------- 1 file changed, 54 deletions(-) diff --git a/src/ifcopenshell-python/test/geom/test_sweeps.py b/src/ifcopenshell-python/test/geom/test_sweeps.py index e5b93ad6d0..d77faec540 100644 --- a/src/ifcopenshell-python/test/geom/test_sweeps.py +++ b/src/ifcopenshell-python/test/geom/test_sweeps.py @@ -3,7 +3,6 @@ from collections.abc import Sequence import ifcopenshell import pytest -from OCC.Core.TopoDS import TopoDS_Shape, TopoDS_Compound def _bbox_from_vertices(verts: list[tuple[float, float, float]]): @@ -25,53 +24,6 @@ def _triples(flat: Sequence[float]) -> list[tuple[float, float, float]]: return [(float(flat[i]), float(flat[i + 1]), float(flat[i + 2])) for i in range(0, len(flat), 3)] -def load_ifc_occ_shape(ifc_path: str, verbose=False) -> TopoDS_Shape: - try: - import ifcopenshell.geom as geom - except Exception as e: - raise RuntimeError("ifcopenshell.geom not available: cannot validate IFC geometry") from e - - settings = geom.settings() - settings.set(settings.USE_WORLD_COORDS, True) - settings.set("use-python-opencascade", True) - - # Open the IFC file - f = ifcopenshell.open(ifc_path) - - # Find the first representable product (prefer IfcBuildingElementProxy, then any product with representation) - products = f.by_type("IfcProduct") - target = None - for p in products: - if p.is_a("IfcBuildingElementProxy") and getattr(p, "Representation", None): - target = p - break - if target is None: - for p in products: - if getattr(p, "Representation", None): - target = p - break - if target is None: - raise RuntimeError("No representable product found in IFC for shape extraction") - - # Create the shape using ifcopenshell.geom with opencascade geometry library - shape_result = geom.create_shape(settings, target, geometry_library="opencascade") - - # Extract the OpenCASCADE TopoDS_Shape from the result - # The create_shape function returns an object with an occ_shape attribute when using opencascade - if hasattr(shape_result, "geometry") and shape_result.geometry: - occ_shape = shape_result.geometry - if isinstance(occ_shape, TopoDS_Compound): - json_data = occ_shape.DumpJson() - if verbose: - print(json_data) - else: - raise NotImplemented(f"Unsupported shape type: {type(occ_shape)}") - - return occ_shape - else: - raise RuntimeError("Failed to extract OpenCASCADE shape from IFC geometry") - - def load_ifc_mesh_bbox(ifc_path: str): """Load first product's mesh from IFC using ifcopenshell.geom and return bbox and size.""" try: @@ -112,8 +64,6 @@ def geom_dir(): def test_simple_sweep_1(geom_dir): ifc_file_path = geom_dir / "simple_sweep_1.ifc" ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) - occ_shape = load_ifc_occ_shape(ifc_file_path) - assert occ_shape is not None assert ifc_sz == pytest.approx((0.8957825463853046, 0.1, 1.1)) assert ifc_mn == pytest.approx((0.0, 0, -0.1)) assert ifc_mx == pytest.approx((0.8957825463853046, 0.1, 1.0)) @@ -122,8 +72,6 @@ def test_simple_sweep_1(geom_dir): def test_simple_sweep_2(geom_dir): ifc_file_path = geom_dir / "simple_sweep_2.ifc" ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) - occ_shape = load_ifc_occ_shape(ifc_file_path) - assert occ_shape is not None assert ifc_mn == pytest.approx((50.0, 100.0, 200.0)) assert ifc_mx == pytest.approx((50.89584911299009, 101.70000025609394, 202.0000003710634)) assert ifc_sz == pytest.approx((0.8958491129900921, 1.7000002560939436, 2.0000003710634076)) @@ -132,8 +80,6 @@ def test_simple_sweep_2(geom_dir): def test_pipe_12d(geom_dir): ifc_file_path = geom_dir / "pipe.ifc" ifc_mn, ifc_mx, ifc_sz = load_ifc_mesh_bbox(ifc_file_path) - occ_shape = load_ifc_occ_shape(ifc_file_path) - assert occ_shape is not None assert ifc_sz == pytest.approx((1.205888147422229, 0.9929900508137735, 0.35776115971654576)) assert ifc_mn == pytest.approx((288.9774190979147, 582.0537006391681, 118.70711942014172)) assert ifc_mx == pytest.approx((290.18330724533695, 583.0466906899819, 119.06488057985827)) From b5aeab6404b91839ba8a85114937a40c13bb2b09 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 17:04:21 +0500 Subject: [PATCH 22/39] Remove project library from UI #7057 Example - https://files.catbox.moe/940mhn.mp4 --- .../bonsai/bim/module/project/__init__.py | 1 + .../bonsai/bim/module/project/operator.py | 39 +++++++++++++++++++ src/bonsai/bonsai/bim/module/project/ui.py | 1 + src/bonsai/bonsai/tool/project.py | 39 +++++++++++++++++++ 4 files changed, 80 insertions(+) diff --git a/src/bonsai/bonsai/bim/module/project/__init__.py b/src/bonsai/bonsai/bim/module/project/__init__.py index 81bf9e9ec7..1316eb0325 100644 --- a/src/bonsai/bonsai/bim/module/project/__init__.py +++ b/src/bonsai/bonsai/bim/module/project/__init__.py @@ -55,6 +55,7 @@ classes = ( operator.RefreshClippingPlanes, operator.RefreshLibrary, operator.ReloadLink, + operator.RemoveProjectLibrary, operator.RevertProject, operator.RewindLibrary, operator.SaveLibraryFile, diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py index ec068c9040..79cd6873ed 100644 --- a/src/bonsai/bonsai/bim/module/project/operator.py +++ b/src/bonsai/bonsai/bim/module/project/operator.py @@ -774,6 +774,45 @@ class AddProjectLibrary(bpy.types.Operator): IfcStore.library_file.redo() +class RemoveProjectLibrary(bpy.types.Operator): + bl_idname = "bim.remove_project_library" + bl_label = "Remove Project Library" + bl_description = "Remove the currently selected IfcProjectLibrary." + bl_options = {"REGISTER", "UNDO"} + + def execute(self, context): + IfcStore.begin_transaction(self) + library_file = IfcStore.library_file + assert library_file + library_file.begin_transaction() + result = self._execute(context) + library_file.end_transaction() + IfcStore.add_transaction_operation(self) + IfcStore.end_transaction(self) + return result + + def _execute(self, context): + props = tool.Project.get_project_props() + library_file = IfcStore.library_file + assert library_file + + project_library = library_file.by_id(int(props.selected_project_library)) + tool.Project.remove_project_library(project_library) + + ProjectLibraryData.load() # Update enum. + enum_len = len(ProjectLibraryData.data["project_libraries_enum"]) + if props.is_property_set("selected_project_library"): + props["selected_project_library"] = min(enum_len - 1, props["selected_project_library"]) + bpy.ops.bim.refresh_library() + return {"FINISHED"} + + def rollback(self, data): + IfcStore.library_file.undo() + + def commit(self, data): + IfcStore.library_file.redo() + + class EnableEditingHeader(bpy.types.Operator): bl_idname = "bim.enable_editing_header" bl_label = "Enable Editing Header" diff --git a/src/bonsai/bonsai/bim/module/project/ui.py b/src/bonsai/bonsai/bim/module/project/ui.py index 88164e86c6..0c305302f2 100644 --- a/src/bonsai/bonsai/bim/module/project/ui.py +++ b/src/bonsai/bonsai/bim/module/project/ui.py @@ -406,6 +406,7 @@ class BIM_PT_project_library(Panel): if library_is_selected and not props.is_editing_project_library: row.prop(props, "is_editing_project_library", text="", icon="GREASEPENCIL") + row.operator("bim.remove_project_library", text="", icon="X") row.prop(self.props, "show_library_tree", text="", icon="OUTLINER") diff --git a/src/bonsai/bonsai/tool/project.py b/src/bonsai/bonsai/tool/project.py index a83f4d2fdc..f8c13e93b5 100644 --- a/src/bonsai/bonsai/tool/project.py +++ b/src/bonsai/bonsai/tool/project.py @@ -21,6 +21,7 @@ import os import bpy import ifcopenshell import ifcopenshell.api.document +import ifcopenshell.util.element import ifcopenshell.util.representation import ifcopenshell.util.unit import bonsai.core.aggregate @@ -398,3 +399,41 @@ class Project(bonsai.core.tool.Project): if library_element.is_a("IfcProfileDef"): return "ProfileName" return "Name" + + # TODO: Move to ifcopenshell.api and add tests. + @classmethod + def remove_project_library(cls, project_library: ifcopenshell.entity_instance) -> None: + ifc_file = project_library.file + roots_to_remove = {project_library} + rels_to_clean_up: set[ifcopenshell.entity_instance] = set() + queue = [project_library] + while queue: + current = queue.pop() + inverses = ifc_file.get_inverse(current) + rels_to_clean_up.update(i for i in inverses if i.is_a() in ("IfcRelNests", "IfcRelDeclares")) + + children = ifcopenshell.util.element.get_components(current) + queue.extend(children) + roots_to_remove.update(children) + + def remove_root(root: ifcopenshell.entity_instance) -> None: + history = root.OwnerHistory + ifc_file.remove(root) + if history: + ifcopenshell.util.element.remove_deep2(ifc_file, history) + + for root in roots_to_remove: + remove_root(root) + + # Clean up invalidated rels. + for rel in rels_to_clean_up: + if rel.is_a("IfcRelDeclares"): + # Project library was either assigned to Project or some types were assigned to it. + if not rel.RelatingContext or not rel.RelatedDefinitions: + remove_root(rel) + elif rel.is_a("IfcRelNests"): + # Project library was either parent or child to other project libraries. + if not rel.RelatingObject or not rel.RelatedObjects: + remove_root(rel) + else: + assert False, f"Shouldn't be here, {rel}" From 6702e912e7721b1bcfa369ac5cd830012e5e1992 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 18:14:40 +0500 Subject: [PATCH 23/39] bim.save_library - add info message for more responsive ui --- src/bonsai/bonsai/bim/module/project/operator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py index 79cd6873ed..8217e8590f 100644 --- a/src/bonsai/bonsai/bim/module/project/operator.py +++ b/src/bonsai/bonsai/bim/module/project/operator.py @@ -506,6 +506,7 @@ class SaveLibraryFile(bpy.types.Operator): def execute(self, context): IfcStore.library_file.write(IfcStore.library_path) + self.report({"INFO"}, f"Library saved to {IfcStore.library_path}") return {"FINISHED"} From c8a60cc4d5d568b4df6044713a483e78a35bbf23 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 18:17:13 +0500 Subject: [PATCH 24/39] bim.refresh_library - add description --- src/bonsai/bonsai/bim/module/project/operator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py index 8217e8590f..66507c605b 100644 --- a/src/bonsai/bonsai/bim/module/project/operator.py +++ b/src/bonsai/bonsai/bim/module/project/operator.py @@ -223,6 +223,7 @@ class SelectLibraryFile(bpy.types.Operator, IFCFileSelector, ImportHelper): class RefreshLibrary(bpy.types.Operator): bl_idname = "bim.refresh_library" bl_label = "Refresh Library" + bl_description = "Refresh the library browser" bl_options = {"UNDO"} def execute(self, context): From 12cfa21d9bb671ab05aa989e3c8fcd502ab2a586 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 18:53:11 +0500 Subject: [PATCH 25/39] Fix missing project library ui data refresh E.g. it wasn't updated on undo --- src/bonsai/bonsai/bim/module/project/data.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bonsai/bonsai/bim/module/project/data.py b/src/bonsai/bonsai/bim/module/project/data.py index 50aad50e07..d391c172c1 100644 --- a/src/bonsai/bonsai/bim/module/project/data.py +++ b/src/bonsai/bonsai/bim/module/project/data.py @@ -29,6 +29,7 @@ from typing import Union, Any def refresh(): ProjectData.is_loaded = False LinksData.is_loaded = False + ProjectLibraryData.is_loaded = False class ProjectData: From 0d3545c621f095b2eddf7d945696ed7af9ce7542 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 19:11:41 +0500 Subject: [PATCH 26/39] bim.select_library_file - shortcut to reload the library Location - https://files.catbox.moe/an9hif.png --- .../bonsai/bim/module/project/operator.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py index 66507c605b..5e118db2b6 100644 --- a/src/bonsai/bonsai/bim/module/project/operator.py +++ b/src/bonsai/bonsai/bim/module/project/operator.py @@ -167,11 +167,27 @@ class SelectLibraryFile(bpy.types.Operator, IFCFileSelector, ImportHelper): bl_idname = "bim.select_library_file" bl_label = "Select Library File" bl_options = {"REGISTER", "UNDO"} - bl_description = "Select an IFC file that can be used as a library" + bl_description = ( + "Select an IFC file that can be used as a library.\n\nALT+click to reload the current loaded library file." + ) filter_glob: bpy.props.StringProperty(default="*.ifc;*.ifczip;*.ifcxml", options={"HIDDEN"}) append_all: bpy.props.BoolProperty(default=False) use_relative_path: bpy.props.BoolProperty(name="Use Relative Path", default=False) + reload_previous_file = False + + def invoke(self, context, event): + if event.alt: + old_filepath = IfcStore.library_path + if not old_filepath: + self.report({"ERROR"}, "No library file loaded to reload.") + return {"CANCELLED"} + self.filepath = old_filepath + self.reload_previous_file = True + return self.execute(context) + + return ImportHelper.invoke(self, context, event) + def execute(self, context): IfcStore.begin_transaction(self) old_filepath = IfcStore.library_path @@ -201,6 +217,7 @@ class SelectLibraryFile(bpy.types.Operator, IFCFileSelector, ImportHelper): if self.append_all: bpy.ops.bim.append_entire_library() ProjectLibraryData.load() + self.report({"INFO"}, f"Loaded library from {filepath}.") return {"FINISHED"} def rollback(self, data): From df1b748b39385a153485fcc2c739b8876f4fd1fa Mon Sep 17 00:00:00 2001 From: krande Date: Thu, 28 Aug 2025 20:05:45 +0200 Subject: [PATCH 27/39] minor update --- pixi.lock | 428 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ pixi.toml | 9 +- 2 files changed, 433 insertions(+), 4 deletions(-) diff --git a/pixi.lock b/pixi.lock index acf3f2f6d1..aff1b38b70 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1486,6 +1486,7 @@ packages: sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 license: None + purls: [] size: 2562 timestamp: 1578324546067 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 @@ -1499,6 +1500,7 @@ packages: - openmp_impl 9999 license: BSD-3-Clause license_family: BSD + purls: [] size: 23621 timestamp: 1650670423406 - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -1513,6 +1515,7 @@ packages: - msys2-conda-epoch <0.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 49468 timestamp: 1718213032772 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda @@ -1531,6 +1534,7 @@ packages: - binutils_impl_linux-64 >=2.44,<2.45.0a0 license: GPL-3.0-only license_family: GPL + purls: [] size: 34998 timestamp: 1752032786202 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda @@ -1551,6 +1555,7 @@ packages: - sysroot_linux-64 license: GPL-3.0-only license_family: GPL + purls: [] size: 3781716 timestamp: 1752032761608 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda @@ -1569,6 +1574,7 @@ packages: - binutils_impl_linux-64 2.44 h4bf12b8_1 license: GPL-3.0-only license_family: GPL + purls: [] size: 36046 timestamp: 1752032788780 - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda @@ -1628,6 +1634,8 @@ packages: - libbrotlicommon 1.1.0 hb9d3cd8_3 license: MIT license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping size: 351721 timestamp: 1749230265727 - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda @@ -1642,6 +1650,8 @@ packages: - libbrotlicommon 1.1.0 h6e16a3a_3 license: MIT license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping size: 367262 timestamp: 1749230495846 - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda @@ -1657,6 +1667,8 @@ packages: - libbrotlicommon 1.1.0 h2466b09_3 license: MIT license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping size: 321941 timestamp: 1749231054102 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda @@ -1667,6 +1679,7 @@ packages: - libgcc-ng >=12 license: bzip2-1.0.6 license_family: BSD + purls: [] size: 252783 timestamp: 1720974456583 - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda @@ -1676,6 +1689,7 @@ packages: - __osx >=10.13 license: bzip2-1.0.6 license_family: BSD + purls: [] size: 134188 timestamp: 1720974491916 - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda @@ -1687,6 +1701,7 @@ packages: - vc14_runtime >=14.29.30139 license: bzip2-1.0.6 license_family: BSD + purls: [] size: 54927 timestamp: 1720974860185 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda @@ -1707,6 +1722,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 206884 timestamp: 1744127994291 - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda @@ -1725,6 +1741,7 @@ packages: - __osx >=10.13 license: MIT license_family: MIT + purls: [] size: 184824 timestamp: 1744128064511 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda @@ -1736,6 +1753,7 @@ packages: - gcc_linux-64 14.* license: BSD-3-Clause license_family: BSD + purls: [] size: 6693 timestamp: 1753098721814 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda @@ -1759,6 +1777,7 @@ packages: - llvm-openmp license: BSD-3-Clause license_family: BSD + purls: [] size: 6695 timestamp: 1753098825695 - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda @@ -1780,6 +1799,7 @@ packages: - vs2022_win-64 license: BSD-3-Clause license_family: BSD + purls: [] size: 6938 timestamp: 1753098808371 - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.9.0-hcfcfb64_0.conda @@ -1803,6 +1823,7 @@ packages: depends: - __win license: ISC + purls: [] size: 154489 timestamp: 1754210967212 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda @@ -1811,6 +1832,7 @@ packages: depends: - __unix license: ISC + purls: [] size: 154402 timestamp: 1754210968730 - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda @@ -1845,6 +1867,7 @@ packages: - libllvm19 >=19.1.7,<19.2.0a0 license: APSL-2.0 license_family: Other + purls: [] size: 20743 timestamp: 1756212761738 - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda @@ -1883,6 +1906,7 @@ packages: - cctools 1024.3.* license: APSL-2.0 license_family: Other + purls: [] size: 741390 timestamp: 1756212731349 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.8.3-pyhd8ed1ab_0.conda @@ -1891,6 +1915,8 @@ packages: depends: - python >=3.9 license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping size: 158692 timestamp: 1754231530168 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda @@ -1905,6 +1931,8 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping size: 294403 timestamp: 1725560714366 - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda @@ -1918,6 +1946,8 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping size: 282425 timestamp: 1725560725144 - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda @@ -1932,6 +1962,8 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping size: 288142 timestamp: 1725560896359 - conda: https://conda.anaconda.org/conda-forge/linux-64/cgal-cpp-6.0.1-h6aadc51_0.conda @@ -1960,6 +1992,7 @@ packages: - libstdcxx >=14 - mpfr >=4.2.1,<5.0a0 license: GPL3/LGPL3 + purls: [] size: 5866779 timestamp: 1753275161432 - conda: https://conda.anaconda.org/conda-forge/osx-64/cgal-cpp-6.0.1-h20ba9b8_0.conda @@ -1986,6 +2019,7 @@ packages: - libcxx >=19 - mpfr >=4.2.1,<5.0a0 license: GPL3/LGPL3 + purls: [] size: 5887000 timestamp: 1753275378338 - conda: https://conda.anaconda.org/conda-forge/win-64/cgal-cpp-6.0.1-h31bd75c_0.conda @@ -2014,6 +2048,7 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: GPL3/LGPL3 + purls: [] size: 5890254 timestamp: 1753275328387 - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.3-pyhd8ed1ab_0.conda @@ -2023,6 +2058,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping size: 51033 timestamp: 1754767444665 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_7.conda @@ -2041,6 +2078,7 @@ packages: - clang-19 19.1.7 default_h3571c67_3 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 24253 timestamp: 1747709797405 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_7.conda @@ -2065,6 +2103,7 @@ packages: - libllvm19 >=19.1.7,<19.2.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 766607 timestamp: 1747709700983 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda @@ -2091,6 +2130,7 @@ packages: - llvm-tools 19.1.7.* license: BSD-3-Clause license_family: BSD + purls: [] size: 18175 timestamp: 1748575764900 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda @@ -2109,6 +2149,7 @@ packages: - clang_impl_osx-64 19.1.7 hc73cdc9_25 license: BSD-3-Clause license_family: BSD + purls: [] size: 21473 timestamp: 1748575768567 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_7.conda @@ -2129,6 +2170,7 @@ packages: - libcxx-devel 19.1.* license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 24370 timestamp: 1747709814665 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda @@ -2153,6 +2195,7 @@ packages: - libllvm19 >=19.1.7,<19.2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 18289 timestamp: 1748575802444 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda @@ -2173,6 +2216,7 @@ packages: - clangxx_impl_osx-64 19.1.7 hb295874_25 license: BSD-3-Clause license_family: BSD + purls: [] size: 19873 timestamp: 1748575806458 - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda @@ -2183,6 +2227,8 @@ packages: - python >=3.10 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping size: 87749 timestamp: 1747811451319 - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda @@ -2194,6 +2240,8 @@ packages: - python >=3.10 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping size: 88117 timestamp: 1747811467132 - conda: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_1.conda @@ -2204,6 +2252,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/click-default-group?source=hash-mapping size: 10124 timestamp: 1734029586298 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.30.5-hf9cb763_0.conda @@ -2224,6 +2274,7 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 19606674 timestamp: 1728416480376 - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.30.5-h7243fc2_0.conda @@ -2243,6 +2294,7 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 17507220 timestamp: 1728417253023 - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.30.5-h400e5d1_0.conda @@ -2260,6 +2312,7 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 14357142 timestamp: 1728417628536 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -2269,6 +2322,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping size: 27011 timestamp: 1733218222191 - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda @@ -2292,6 +2347,7 @@ packages: - compiler-rt_osx-64 19.1.7.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE + purls: [] size: 96517 timestamp: 1736976706563 - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda @@ -2316,6 +2372,7 @@ packages: - clangxx 19.1.7 license: Apache-2.0 WITH LLVM-exception license_family: APACHE + purls: [] size: 10666253 timestamp: 1736976649189 - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-hb991d5c_4.conda @@ -2325,6 +2382,7 @@ packages: - gcc_impl_linux-64 >=14.3.0,<14.3.1.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 33272 timestamp: 1753905153853 - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda @@ -2336,6 +2394,7 @@ packages: - gxx_linux-64 14.* license: BSD-3-Clause license_family: BSD + purls: [] size: 6635 timestamp: 1753098722177 - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda @@ -2357,6 +2416,7 @@ packages: - clangxx_osx-64 19.* license: BSD-3-Clause license_family: BSD + purls: [] size: 6732 timestamp: 1753098827160 - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda @@ -2376,6 +2436,7 @@ packages: - vs2022_win-64 license: BSD-3-Clause license_family: BSD + purls: [] size: 6957 timestamp: 1753098809481 - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.9.0-h91493d7_0.conda @@ -2396,6 +2457,8 @@ packages: - untokenize >=0.1.1 license: MIT license_family: MIT + purls: + - pkg:pypi/docformatter?source=hash-mapping size: 30130 timestamp: 1746994987190 - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda @@ -2406,6 +2469,7 @@ packages: - libstdcxx-ng >=12 license: MPL-2.0 license_family: MOZILLA + purls: [] size: 1088433 timestamp: 1690272126173 - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda @@ -2415,6 +2479,7 @@ packages: - libcxx >=15.0.7 license: MPL-2.0 license_family: MOZILLA + purls: [] size: 1090184 timestamp: 1690272503232 - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda @@ -2426,6 +2491,7 @@ packages: - vc14_runtime >=14.29.30139 license: MPL-2.0 license_family: MOZILLA + purls: [] size: 1089706 timestamp: 1690273089254 - conda: https://conda.anaconda.org/conda-forge/noarch/elementpath-5.0.4-pyhd8ed1ab_0.conda @@ -2435,6 +2501,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/elementpath?source=hash-mapping size: 175341 timestamp: 1755379273161 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -2444,6 +2512,8 @@ packages: - python >=3.9 - typing_extensions >=4.6.0 license: MIT and PSF-2.0 + purls: + - pkg:pypi/exceptiongroup?source=hash-mapping size: 21284 timestamp: 1746947398083 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -2451,6 +2521,7 @@ packages: md5: 0c96522c6bdaed4b1566d11387caaf45 license: BSD-3-Clause license_family: BSD + purls: [] size: 397370 timestamp: 1566932522327 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -2458,6 +2529,7 @@ packages: md5: 34893075a5c9e55cdafac56607368fc6 license: OFL-1.1 license_family: Other + purls: [] size: 96530 timestamp: 1620479909603 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -2465,6 +2537,7 @@ packages: md5: 4d59c254e01d9cde7957100457e2d5fb license: OFL-1.1 license_family: Other + purls: [] size: 700814 timestamp: 1620479612257 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda @@ -2472,6 +2545,7 @@ packages: md5: 49023d73832ef61042f6a237cb2687e7 license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 license_family: Other + purls: [] size: 1620504 timestamp: 1727511233259 - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda @@ -2486,6 +2560,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT + purls: [] size: 265599 timestamp: 1730283881107 - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda @@ -2498,6 +2573,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT + purls: [] size: 232313 timestamp: 1730283983397 - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda @@ -2513,6 +2589,7 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: [] size: 192355 timestamp: 1730284147944 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 @@ -2522,6 +2599,7 @@ packages: - fonts-conda-forge license: BSD-3-Clause license_family: BSD + purls: [] size: 3667 timestamp: 1566974674465 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 @@ -2534,6 +2612,7 @@ packages: - font-ttf-ubuntu license: BSD-3-Clause license_family: BSD + purls: [] size: 4102 timestamp: 1566932280397 - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda @@ -2550,6 +2629,7 @@ packages: - xorg-libxi license: MIT license_family: MIT + purls: [] size: 144010 timestamp: 1719014356708 - conda: https://conda.anaconda.org/conda-forge/win-64/freeglut-3.2.2-he0c23c2_3.conda @@ -2561,6 +2641,7 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: [] size: 111956 timestamp: 1719014753462 - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda @@ -2581,6 +2662,7 @@ packages: - openexr >=3.3.1,<3.4.0a0 - openjpeg >=2.5.2,<3.0a0 license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage + purls: [] size: 467860 timestamp: 1729024045245 - conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda @@ -2600,6 +2682,7 @@ packages: - openexr >=3.3.1,<3.4.0a0 - openjpeg >=2.5.2,<3.0a0 license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage + purls: [] size: 410944 timestamp: 1729024174328 - conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda @@ -2620,6 +2703,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage + purls: [] size: 465887 timestamp: 1729024520954 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda @@ -2639,6 +2723,7 @@ packages: - libfreetype 2.13.3 ha770c72_1 - libfreetype6 2.13.3 h48d6fc4_1 license: GPL-2.0-only OR FTL + purls: [] size: 172450 timestamp: 1745369996765 - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda @@ -2657,6 +2742,7 @@ packages: - libfreetype 2.13.3 h694c41f_1 - libfreetype6 2.13.3 h40dfd5c_1 license: GPL-2.0-only OR FTL + purls: [] size: 172649 timestamp: 1745370231293 - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda @@ -2678,6 +2764,7 @@ packages: - libfreetype 2.13.3 h57928b3_1 - libfreetype6 2.13.3 h0b5ce68_1 license: GPL-2.0-only OR FTL + purls: [] size: 184162 timestamp: 1745370242683 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda @@ -2697,6 +2784,7 @@ packages: - gcc_impl_linux-64 14.3.0.* license: BSD-3-Clause license_family: BSD + purls: [] size: 31016 timestamp: 1753905350635 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda @@ -2727,6 +2815,7 @@ packages: - sysroot_linux-64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 71083505 timestamp: 1753904987887 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda @@ -2749,6 +2838,7 @@ packages: - sysroot_linux-64 license: BSD-3-Clause license_family: BSD + purls: [] size: 32512 timestamp: 1748905876846 - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.13.1-h97f6797_0.conda @@ -2759,6 +2849,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: LGPL-2.1-only + purls: [] size: 1871567 timestamp: 1741051481612 - conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.13.1-h502464c_0.conda @@ -2768,6 +2859,7 @@ packages: - __osx >=10.13 - libcxx >=18 license: LGPL-2.1-only + purls: [] size: 1562536 timestamp: 1741051661501 - conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.13.1-h9ea8674_0.conda @@ -2778,6 +2870,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: LGPL-2.1-only + purls: [] size: 1703268 timestamp: 1741052039669 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda @@ -2787,6 +2880,7 @@ packages: - libgcc-ng >=12 - libstdcxx-ng >=12 license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] size: 460055 timestamp: 1718980856608 - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda @@ -2796,6 +2890,7 @@ packages: - __osx >=10.13 - libcxx >=16 license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] size: 428919 timestamp: 1718981041839 - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda @@ -2808,6 +2903,7 @@ packages: constrains: - mpir <0.0a0 license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] size: 567053 timestamp: 1718982076982 - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda @@ -2828,6 +2924,7 @@ packages: - gxx_impl_linux-64 14.3.0.* license: BSD-3-Clause license_family: BSD + purls: [] size: 30420 timestamp: 1753905382479 - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda @@ -2852,6 +2949,7 @@ packages: - tzdata license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 15144697 timestamp: 1753905289599 - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda @@ -2876,6 +2974,7 @@ packages: - sysroot_linux-64 license: BSD-3-Clause license_family: BSD + purls: [] size: 30802 timestamp: 1748905895571 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda @@ -2887,6 +2986,8 @@ packages: - hpack >=4.1,<5 - python license: MIT + purls: + - pkg:pypi/h2?source=compressed-mapping size: 95967 timestamp: 1756364871835 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda @@ -2921,6 +3022,7 @@ packages: - openssl >=3.5.1,<4.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 3710057 timestamp: 1753357500665 - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda @@ -2954,6 +3056,7 @@ packages: - openssl >=3.5.1,<4.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 3522832 timestamp: 1753358062940 - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda @@ -2984,6 +3087,7 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD + purls: [] size: 2031491 timestamp: 1753357255237 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda @@ -2993,6 +3097,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping size: 30731 timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -3002,6 +3108,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping size: 17397 timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -3013,6 +3121,7 @@ packages: - libstdcxx-ng >=12 license: MIT license_family: MIT + purls: [] size: 12129203 timestamp: 1720853576813 - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda @@ -3022,6 +3131,7 @@ packages: - __osx >=10.13 license: MIT license_family: MIT + purls: [] size: 11761697 timestamp: 1720853679409 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -3031,6 +3141,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping size: 49765 timestamp: 1733211921194 - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda @@ -3043,6 +3155,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 159630 timestamp: 1725971591485 - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda @@ -3054,6 +3167,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 155534 timestamp: 1725971674035 - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda @@ -3066,6 +3180,7 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: [] size: 160408 timestamp: 1725972042635 - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda @@ -3075,6 +3190,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/iniconfig?source=hash-mapping size: 11474 timestamp: 1733223232820 - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda @@ -3091,6 +3208,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/isodate?source=hash-mapping size: 23778 timestamp: 1733230826126 - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda @@ -3104,6 +3223,7 @@ packages: - libglu >=9.0.3,<9.1.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 license: JasPer-2.0 + purls: [] size: 681643 timestamp: 1754514437930 - conda: https://conda.anaconda.org/conda-forge/osx-64/jasper-4.2.8-h9ce442b_0.conda @@ -3113,6 +3233,7 @@ packages: - __osx >=10.13 - libjpeg-turbo >=3.1.0,<4.0a0 license: JasPer-2.0 + purls: [] size: 574167 timestamp: 1754514708717 - conda: https://conda.anaconda.org/conda-forge/win-64/jasper-4.2.8-h8ad263b_0.conda @@ -3125,6 +3246,7 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: JasPer-2.0 + purls: [] size: 447036 timestamp: 1754514582523 - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -3135,6 +3257,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping size: 112714 timestamp: 1741263433881 - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda @@ -3144,6 +3268,7 @@ packages: - libgcc-ng >=12 license: BSD-2-Clause license_family: BSD + purls: [] size: 239104 timestamp: 1703333860145 - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda @@ -3151,6 +3276,7 @@ packages: md5: cfaf81d843a80812fe16a68bdae60562 license: BSD-2-Clause license_family: BSD + purls: [] size: 220376 timestamp: 1703334073774 - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda @@ -3162,6 +3288,7 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-2-Clause license_family: BSD + purls: [] size: 355340 timestamp: 1703334132631 - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda @@ -3180,6 +3307,7 @@ packages: - sysroot_linux-64 ==2.28 license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL + purls: [] size: 1272697 timestamp: 1752669126073 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -3197,6 +3325,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: LGPL-2.1-or-later + purls: [] size: 134088 timestamp: 1754905959823 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -3211,6 +3340,7 @@ packages: - openssl >=3.3.1,<4.0a0 license: MIT license_family: MIT + purls: [] size: 1370023 timestamp: 1719463201255 - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda @@ -3224,6 +3354,7 @@ packages: - openssl >=3.3.1,<4.0a0 license: MIT license_family: MIT + purls: [] size: 1185323 timestamp: 1719463492984 - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda @@ -3236,6 +3367,7 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: [] size: 712034 timestamp: 1719463874284 - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda @@ -3245,6 +3377,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/lark?source=hash-mapping size: 92093 timestamp: 1734709450256 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda @@ -3257,6 +3391,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 license: MIT license_family: MIT + purls: [] size: 248046 timestamp: 1739160907615 - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda @@ -3268,6 +3403,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 license: MIT license_family: MIT + purls: [] size: 226001 timestamp: 1739161050843 - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda @@ -3281,6 +3417,7 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: [] size: 510641 timestamp: 1739161381270 - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda @@ -3307,6 +3444,7 @@ packages: - cctools 1024.3.* license: APSL-2.0 license_family: Other + purls: [] size: 18109 timestamp: 1756212747763 - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda @@ -3343,6 +3481,7 @@ packages: - cctools 1024.3.* license: APSL-2.0 license_family: Other + purls: [] size: 1107425 timestamp: 1756212688116 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda @@ -3365,6 +3504,7 @@ packages: - binutils_impl_linux-64 2.44 license: GPL-3.0-only license_family: GPL + purls: [] size: 676044 timestamp: 1752032747103 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda @@ -3376,6 +3516,7 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache + purls: [] size: 264243 timestamp: 1745264221534 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 @@ -3405,6 +3546,7 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache + purls: [] size: 248882 timestamp: 1745264331196 - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 @@ -3426,6 +3568,7 @@ packages: - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: Apache + purls: [] size: 164701 timestamp: 1745264384716 - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda @@ -3447,6 +3590,7 @@ packages: - libstdcxx >=13 license: BSD-2-Clause license_family: BSD + purls: [] size: 36825 timestamp: 1749993532943 - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda @@ -3466,6 +3610,7 @@ packages: - libcxx >=18 license: BSD-2-Clause license_family: BSD + purls: [] size: 30034 timestamp: 1749993664561 - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda @@ -3488,6 +3633,7 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-2-Clause license_family: BSD + purls: [] size: 33847 timestamp: 1749993666162 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda @@ -3521,6 +3667,7 @@ packages: - liblapack 3.9.0 34*_openblas license: BSD-3-Clause license_family: BSD + purls: [] size: 19306 timestamp: 1754678416811 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-28_h7f60823_openblas.conda @@ -3554,6 +3701,7 @@ packages: - blas 2.134 openblas license: BSD-3-Clause license_family: BSD + purls: [] size: 19537 timestamp: 1754678644797 - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-28_h576b46c_mkl.conda @@ -3584,6 +3732,7 @@ packages: - liblapack 3.9.0 34*_mkl license: BSD-3-Clause license_family: BSD + purls: [] size: 70548 timestamp: 1754682440057 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda @@ -3618,6 +3767,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 3036176 timestamp: 1755040683556 - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda @@ -3650,6 +3800,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 2143629 timestamp: 1755041112348 - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda @@ -3685,6 +3836,7 @@ packages: - __win ==0|>=10 - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 2495267 timestamp: 1755042179457 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda @@ -3707,6 +3859,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 38151 timestamp: 1755040798180 - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda @@ -3729,6 +3882,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 38738 timestamp: 1755041280680 - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda @@ -3751,6 +3905,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 40542 timestamp: 1755042380260 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda @@ -3767,6 +3922,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 14513031 timestamp: 1755040699172 - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda @@ -3783,6 +3939,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 14601134 timestamp: 1755041154211 - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda @@ -3799,6 +3956,7 @@ packages: constrains: - boost-cpp <0.0a0 license: BSL-1.0 + purls: [] size: 14618746 timestamp: 1755042236296 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda @@ -3827,6 +3985,7 @@ packages: - liblapack 3.9.0 34*_openblas license: BSD-3-Clause license_family: BSD + purls: [] size: 19313 timestamp: 1754678426220 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-28_hff6cab4_openblas.conda @@ -3855,6 +4014,7 @@ packages: - blas 2.134 openblas license: BSD-3-Clause license_family: BSD + purls: [] size: 19518 timestamp: 1754678655239 - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-28_h7ad3364_mkl.conda @@ -3883,6 +4043,7 @@ packages: - liblapack 3.9.0 34*_mkl license: BSD-3-Clause license_family: BSD + purls: [] size: 70700 timestamp: 1754682490395 - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_7.conda @@ -3905,6 +4066,7 @@ packages: - libllvm19 >=19.1.7,<19.2.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 14708000 timestamp: 1747709593789 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda @@ -3937,6 +4099,7 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT + purls: [] size: 449910 timestamp: 1749033146806 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda @@ -3967,6 +4130,7 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT + purls: [] size: 424040 timestamp: 1749033558114 - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda @@ -3995,6 +4159,7 @@ packages: - vc14_runtime >=14.29.30139 license: curl license_family: MIT + purls: [] size: 368346 timestamp: 1749033492826 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda @@ -4013,6 +4178,7 @@ packages: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 564830 timestamp: 1752814841086 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda @@ -4031,6 +4197,7 @@ packages: - libcxx >=19.1.7 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 826706 timestamp: 1742451299167 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda @@ -4051,6 +4218,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 72573 timestamp: 1747040452262 - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda @@ -4069,6 +4237,7 @@ packages: - __osx >=10.13 license: MIT license_family: MIT + purls: [] size: 69751 timestamp: 1747040526774 - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda @@ -4091,6 +4260,7 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: [] size: 156292 timestamp: 1747040812624 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda @@ -4103,6 +4273,7 @@ packages: - ncurses >=6.5,<7.0a0 license: BSD-2-Clause license_family: BSD + purls: [] size: 134676 timestamp: 1738479519902 - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda @@ -4114,6 +4285,7 @@ packages: - ncurses >=6.5,<7.0a0 license: BSD-2-Clause license_family: BSD + purls: [] size: 115563 timestamp: 1738479554273 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -4123,6 +4295,7 @@ packages: - libgcc-ng >=12 license: BSD-2-Clause license_family: BSD + purls: [] size: 112766 timestamp: 1702146165126 - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda @@ -4130,6 +4303,7 @@ packages: md5: 899db79329439820b7e8f8de41bca902 license: BSD-2-Clause license_family: BSD + purls: [] size: 106663 timestamp: 1702146352558 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -4154,6 +4328,7 @@ packages: - expat 2.7.1.* license: MIT license_family: MIT + purls: [] size: 74811 timestamp: 1752719572741 - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda @@ -4176,6 +4351,7 @@ packages: - expat 2.7.1.* license: MIT license_family: MIT + purls: [] size: 72450 timestamp: 1752719744781 - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda @@ -4202,6 +4378,7 @@ packages: - expat 2.7.1.* license: MIT license_family: MIT + purls: [] size: 141322 timestamp: 1752719767870 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 @@ -4221,6 +4398,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 57433 timestamp: 1743434498161 - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 @@ -4237,6 +4415,7 @@ packages: - __osx >=10.13 license: MIT license_family: MIT + purls: [] size: 51216 timestamp: 1743434595269 - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 @@ -4258,6 +4437,7 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: [] size: 44978 timestamp: 1743435053850 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda @@ -4266,6 +4446,7 @@ packages: depends: - libfreetype6 >=2.13.3 license: GPL-2.0-only OR FTL + purls: [] size: 7693 timestamp: 1745369988361 - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda @@ -4274,6 +4455,7 @@ packages: depends: - libfreetype6 >=2.13.3 license: GPL-2.0-only OR FTL + purls: [] size: 7805 timestamp: 1745370212559 - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda @@ -4282,6 +4464,7 @@ packages: depends: - libfreetype6 >=2.13.3 license: GPL-2.0-only OR FTL + purls: [] size: 8159 timestamp: 1745370227235 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -4295,6 +4478,7 @@ packages: constrains: - freetype >=2.13.3 license: GPL-2.0-only OR FTL + purls: [] size: 380134 timestamp: 1745369987697 - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda @@ -4307,6 +4491,7 @@ packages: constrains: - freetype >=2.13.3 license: GPL-2.0-only OR FTL + purls: [] size: 357654 timestamp: 1745370210187 - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -4321,6 +4506,7 @@ packages: constrains: - freetype >=2.13.3 license: GPL-2.0-only OR FTL + purls: [] size: 337007 timestamp: 1745370226578 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda @@ -4347,6 +4533,7 @@ packages: - libgomp 15.1.0 h767d61c_4 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 824153 timestamp: 1753903866511 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda @@ -4375,6 +4562,7 @@ packages: - libgomp 15.1.0 h1383e82_4 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 668220 timestamp: 1753904114303 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda @@ -4393,6 +4581,7 @@ packages: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 2725618 timestamp: 1753904712267 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda @@ -4411,6 +4600,7 @@ packages: - libgcc 15.1.0 h767d61c_4 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 29249 timestamp: 1753903872571 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -4433,6 +4623,7 @@ packages: - libgfortran-ng ==15.1.0=*_4 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 29246 timestamp: 1753903898593 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.1.0-h5f6db21_1.conda @@ -4442,6 +4633,7 @@ packages: - libgfortran5 15.1.0 hfa3c126_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 133973 timestamp: 1756239628906 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda @@ -4474,6 +4666,7 @@ packages: - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 1564595 timestamp: 1753903882088 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda @@ -4496,6 +4689,7 @@ packages: - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 1225193 timestamp: 1756238834726 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda @@ -4506,6 +4700,7 @@ packages: - libglvnd 1.7.0 ha4b6fd6_2 - libglx 1.7.0 ha4b6fd6_2 license: LicenseRef-libglvnd + purls: [] size: 134712 timestamp: 1731330998354 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda @@ -4517,6 +4712,7 @@ packages: - libopengl >=1.7.0,<2.0a0 - libstdcxx >=13 license: SGI-B-2.0 + purls: [] size: 325262 timestamp: 1748692137626 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda @@ -4525,6 +4721,7 @@ packages: depends: - __glibc >=2.17,<3.0.a0 license: LicenseRef-libglvnd + purls: [] size: 132463 timestamp: 1731330968309 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda @@ -4535,6 +4732,7 @@ packages: - libglvnd 1.7.0 ha4b6fd6_2 - xorg-libx11 >=1.8.10,<2.0a0 license: LicenseRef-libglvnd + purls: [] size: 75504 timestamp: 1731330988898 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda @@ -4553,6 +4751,7 @@ packages: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 447289 timestamp: 1753903801049 - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda @@ -4575,6 +4774,7 @@ packages: - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 535125 timestamp: 1753904060607 - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda @@ -4601,6 +4801,7 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD + purls: [] size: 2412139 timestamp: 1752762145331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda @@ -4610,6 +4811,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: LGPL-2.1-only + purls: [] size: 790176 timestamp: 1754908768807 - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda @@ -4618,6 +4820,7 @@ packages: depends: - __osx >=10.13 license: LGPL-2.1-only + purls: [] size: 737846 timestamp: 1754908900138 - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda @@ -4628,6 +4831,7 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: LGPL-2.1-only + purls: [] size: 696926 timestamp: 1754909290005 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -4649,6 +4853,7 @@ packages: constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib + purls: [] size: 628947 timestamp: 1745268527144 - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda @@ -4667,6 +4872,7 @@ packages: constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib + purls: [] size: 586456 timestamp: 1745268522731 - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda @@ -4691,6 +4897,7 @@ packages: constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib + purls: [] size: 838154 timestamp: 1745268437136 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda @@ -4719,6 +4926,7 @@ packages: - blas 2.134 openblas license: BSD-3-Clause license_family: BSD + purls: [] size: 19324 timestamp: 1754678435277 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-28_h236ab99_openblas.conda @@ -4747,6 +4955,7 @@ packages: - libcblas 3.9.0 34*_openblas license: BSD-3-Clause license_family: BSD + purls: [] size: 19548 timestamp: 1754678665504 - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-28_hacfb0e4_mkl.conda @@ -4775,6 +4984,7 @@ packages: - blas 2.134 mkl license: BSD-3-Clause license_family: BSD + purls: [] size: 82224 timestamp: 1754682540087 - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda @@ -4801,6 +5011,7 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 28848197 timestamp: 1737782191240 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda @@ -4812,6 +5023,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD + purls: [] size: 112894 timestamp: 1749230047870 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda @@ -4822,6 +5034,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD + purls: [] size: 104826 timestamp: 1749230155443 - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda @@ -4844,6 +5057,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD + purls: [] size: 104935 timestamp: 1749230611612 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda @@ -4854,6 +5068,7 @@ packages: - libgcc >=13 - liblzma 5.8.1 hb9d3cd8_2 license: 0BSD + purls: [] size: 439868 timestamp: 1749230061968 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda @@ -4863,6 +5078,7 @@ packages: - __osx >=10.13 - liblzma 5.8.1 hd471939_2 license: 0BSD + purls: [] size: 116356 timestamp: 1749230171181 - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.4-h2466b09_0.conda @@ -4885,6 +5101,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: 0BSD + purls: [] size: 129344 timestamp: 1749230637001 - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda @@ -4912,6 +5129,7 @@ packages: - openssl >=3.3.2,<4.0a0 license: MIT license_family: MIT + purls: [] size: 647599 timestamp: 1729571887612 - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda @@ -4927,6 +5145,7 @@ packages: - openssl >=3.3.2,<4.0a0 license: MIT license_family: MIT + purls: [] size: 606663 timestamp: 1729572019083 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda @@ -4937,6 +5156,7 @@ packages: - libgcc >=13 license: LGPL-2.1-only license_family: GPL + purls: [] size: 33731 timestamp: 1750274110928 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -4974,6 +5194,7 @@ packages: - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 5938936 timestamp: 1755474342204 - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda @@ -5002,6 +5223,7 @@ packages: - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 6262457 timestamp: 1755473612572 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda @@ -5011,6 +5233,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libglvnd 1.7.0 ha4b6fd6_2 license: LicenseRef-libglvnd + purls: [] size: 50757 timestamp: 1731330993524 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda @@ -5031,6 +5254,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement + purls: [] size: 317390 timestamp: 1753879899951 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.46-h3c4a55f_0.conda @@ -5049,6 +5273,7 @@ packages: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement + purls: [] size: 297609 timestamp: 1753879919854 - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.46-had7236b_0.conda @@ -5074,6 +5299,7 @@ packages: - ucrt >=10.0.20348.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement + purls: [] size: 382709 timestamp: 1753879944850 - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda @@ -5105,6 +5331,7 @@ packages: - jasper >=4.2.5,<5.0a0 - lcms2 >=2.17,<3.0a0 license: LGPL-2.1-only + purls: [] size: 704665 timestamp: 1744641234631 - conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda @@ -5131,6 +5358,7 @@ packages: - libjpeg-turbo >=3.0.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-only + purls: [] size: 663777 timestamp: 1744641301951 - conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda @@ -5162,6 +5390,7 @@ packages: - lcms2 >=2.17,<3.0a0 - jasper >=4.2.5,<5.0a0 license: LGPL-2.1-only + purls: [] size: 536650 timestamp: 1744641254166 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda @@ -5183,6 +5412,7 @@ packages: - libstdcxx >=14.3.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 5069018 timestamp: 1753904903838 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda @@ -5213,6 +5443,7 @@ packages: - libgcc >=14 - libzlib >=1.3.1,<2.0a0 license: blessing + purls: [] size: 932581 timestamp: 1753948484112 - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.48.0-hdb6dae5_1.conda @@ -5240,6 +5471,7 @@ packages: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: blessing + purls: [] size: 980121 timestamp: 1753948554003 - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.48.0-h67fdade_1.conda @@ -5270,6 +5502,7 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: blessing + purls: [] size: 1288499 timestamp: 1753948889360 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda @@ -5282,6 +5515,7 @@ packages: - openssl >=3.5.0,<4.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 304790 timestamp: 1745608545575 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda @@ -5316,6 +5550,7 @@ packages: - openssl >=3.5.0,<4.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 284216 timestamp: 1745608575796 - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda @@ -5329,6 +5564,7 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: [] size: 292785 timestamp: 1745608759342 - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda @@ -5361,6 +5597,7 @@ packages: - libgcc 15.1.0 h767d61c_4 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 3903453 timestamp: 1753903894186 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda @@ -5379,6 +5616,7 @@ packages: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 14630918 timestamp: 1753904753558 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -5397,6 +5635,7 @@ packages: - libstdcxx 15.1.0 h8f9b012_4 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL + purls: [] size: 29317 timestamp: 1753903924491 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-h8261f1e_6.conda @@ -5414,6 +5653,7 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: HPND + purls: [] size: 433078 timestamp: 1755011934951 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda @@ -5447,6 +5687,7 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: HPND + purls: [] size: 401676 timestamp: 1755012183336 - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda @@ -5479,6 +5720,7 @@ packages: - vc14_runtime >=14.44.35208 - zstd >=1.5.7,<1.6.0a0 license: HPND + purls: [] size: 983988 timestamp: 1755012056987 - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda @@ -5504,6 +5746,7 @@ packages: - libgcc-ng >=12 license: BSD-3-Clause license_family: BSD + purls: [] size: 33601 timestamp: 1680112270483 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda @@ -5524,6 +5767,7 @@ packages: - libgcc >=14 license: MIT license_family: MIT + purls: [] size: 895108 timestamp: 1753948278280 - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda @@ -5542,6 +5786,7 @@ packages: - __osx >=10.13 license: MIT license_family: MIT + purls: [] size: 422612 timestamp: 1753948458902 - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda @@ -5564,6 +5809,7 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT + purls: [] size: 297087 timestamp: 1753948490874 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -5588,6 +5834,7 @@ packages: - libwebp 1.6.0 license: BSD-3-Clause license_family: BSD + purls: [] size: 429011 timestamp: 1752159441324 - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda @@ -5610,6 +5857,7 @@ packages: - libwebp 1.6.0 license: BSD-3-Clause license_family: BSD + purls: [] size: 365086 timestamp: 1752159528504 - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda @@ -5636,6 +5884,7 @@ packages: - libwebp 1.6.0 license: BSD-3-Clause license_family: BSD + purls: [] size: 279176 timestamp: 1752159543911 - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -5647,6 +5896,7 @@ packages: - pthreads-win32 <0.0a0 - msys2-conda-epoch <0.0a0 license: MIT AND BSD-3-Clause-Clear + purls: [] size: 35794 timestamp: 1737099561703 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda @@ -5660,6 +5910,7 @@ packages: - xorg-libxdmcp license: MIT license_family: MIT + purls: [] size: 395888 timestamp: 1727278577118 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -5668,6 +5919,7 @@ packages: depends: - libgcc-ng >=12 license: LGPL-2.1-or-later + purls: [] size: 100393 timestamp: 1702724383534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h04c0eec_1.conda @@ -5682,6 +5934,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT + purls: [] size: 698448 timestamp: 1754315344761 - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-he1bc88e_1.conda @@ -5695,6 +5948,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT + purls: [] size: 611430 timestamp: 1754315569848 - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h741aa76_1.conda @@ -5708,6 +5962,7 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT + purls: [] size: 1519401 timestamp: 1754315497781 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h7a3aeb2_0.conda @@ -5719,6 +5974,7 @@ packages: - libxml2 >=2.13.8,<2.14.0a0 license: MIT license_family: MIT + purls: [] size: 244399 timestamp: 1753273455036 - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h59ddae0_0.conda @@ -5729,6 +5985,7 @@ packages: - libxml2 >=2.13.8,<2.14.0a0 license: MIT license_family: MIT + purls: [] size: 225189 timestamp: 1753273768630 - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h25c3957_0.conda @@ -5741,6 +5998,7 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: [] size: 416974 timestamp: 1753273998632 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda @@ -5753,6 +6011,7 @@ packages: - zlib 1.3.1 *_2 license: Zlib license_family: Other + purls: [] size: 60963 timestamp: 1727963148474 - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda @@ -5764,6 +6023,7 @@ packages: - zlib 1.3.1 *_2 license: Zlib license_family: Other + purls: [] size: 57133 timestamp: 1727963183990 - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda @@ -5777,6 +6037,7 @@ packages: - zlib 1.3.1 *_2 license: Zlib license_family: Other + purls: [] size: 55476 timestamp: 1727963768015 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda @@ -5800,6 +6061,7 @@ packages: - openmp 20.1.8|20.1.8.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE + purls: [] size: 307983 timestamp: 1756144829047 - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-20.1.8-hfa2b4ca_2.conda @@ -5814,6 +6076,7 @@ packages: - openmp 20.1.8|20.1.8.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE + purls: [] size: 344490 timestamp: 1756145011384 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda @@ -5849,6 +6112,7 @@ packages: - llvm 19.1.7 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 87412 timestamp: 1737782713306 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda @@ -5875,6 +6139,7 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 17631684 timestamp: 1737782657331 - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.1-py312h70dad80_0.conda @@ -5889,6 +6154,8 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause and MIT-CMU + purls: + - pkg:pypi/lxml?source=hash-mapping size: 1611694 timestamp: 1755885885464 - conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.1-py312ha108ba6_0.conda @@ -5902,6 +6169,8 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause and MIT-CMU + purls: + - pkg:pypi/lxml?source=hash-mapping size: 1410674 timestamp: 1755886058218 - conda: https://conda.anaconda.org/conda-forge/win-64/lxml-6.0.1-py312hc85b015_0.conda @@ -5917,6 +6186,8 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: BSD-3-Clause and MIT-CMU + purls: + - pkg:pypi/lxml?source=hash-mapping size: 1234085 timestamp: 1755886164704 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda @@ -5931,6 +6202,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping size: 24604 timestamp: 1733219911494 - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda @@ -5944,6 +6217,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping size: 23888 timestamp: 1733219886634 - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda @@ -5959,6 +6234,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping size: 27582 timestamp: 1733220007802 - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda @@ -5969,6 +6246,7 @@ packages: - tbb 2021.* license: LicenseRef-IntelSimplifiedSoftwareOct2022 license_family: Proprietary + purls: [] size: 103088799 timestamp: 1753975600547 - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda @@ -5990,6 +6268,7 @@ packages: - libgcc >=13 license: LGPL-3.0-only license_family: LGPL + purls: [] size: 634751 timestamp: 1725746740014 - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda @@ -6000,6 +6279,7 @@ packages: - gmp >=6.3.0,<7.0a0 license: LGPL-3.0-only license_family: LGPL + purls: [] size: 373396 timestamp: 1725746891597 - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda @@ -6012,6 +6292,7 @@ packages: - ucrt >=10.0.20348.0 license: LGPL-3.0-only license_family: LGPL + purls: [] size: 654269 timestamp: 1725748295260 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda @@ -6030,6 +6311,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: X11 AND BSD-3-Clause + purls: [] size: 891641 timestamp: 1738195959188 - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda @@ -6038,6 +6320,7 @@ packages: depends: - __osx >=10.13 license: X11 AND BSD-3-Clause + purls: [] size: 822259 timestamp: 1738196181298 - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda @@ -6053,6 +6336,8 @@ packages: - pandas >=2.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/networkx?source=hash-mapping size: 1564462 timestamp: 1749078300258 - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda @@ -6074,6 +6359,7 @@ packages: - __glibc >=2.17,<3.0.a0 license: Apache-2.0 license_family: APACHE + purls: [] size: 186326 timestamp: 1752218296032 - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda @@ -6094,6 +6380,7 @@ packages: - libcxx >=19 license: Apache-2.0 license_family: APACHE + purls: [] size: 177958 timestamp: 1752218300571 - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda @@ -6119,6 +6406,7 @@ packages: - ucrt >=10.0.20348.0 license: Apache-2.0 license_family: APACHE + purls: [] size: 309517 timestamp: 1752218329097 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda @@ -6137,6 +6425,7 @@ packages: md5: d76872d096d063e226482c99337209dc license: MIT license_family: MIT + purls: [] size: 135906 timestamp: 1744445169928 - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda @@ -6154,6 +6443,7 @@ packages: md5: 9334c0f8d63ac55ff03e3b9cef9e371c license: MIT license_family: MIT + purls: [] size: 136237 timestamp: 1744445192082 - conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda @@ -6172,6 +6462,7 @@ packages: md5: 401617c1ad869b46966165aba18466fd license: MIT license_family: MIT + purls: [] size: 134432 timestamp: 1744445192270 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.2-py312h72c5963_0.conda @@ -6207,6 +6498,8 @@ packages: constrains: - numpy-base <0a0 license: BSD-3-Clause + purls: + - pkg:pypi/numpy?source=hash-mapping size: 8785544 timestamp: 1756343060399 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.2-py312h6693b03_0.conda @@ -6240,6 +6533,8 @@ packages: constrains: - numpy-base <0a0 license: BSD-3-Clause + purls: + - pkg:pypi/numpy?source=hash-mapping size: 7945733 timestamp: 1756343067826 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.2-py312h3150e54_0.conda @@ -6278,6 +6573,8 @@ packages: constrains: - numpy-base <0a0 license: BSD-3-Clause + purls: + - pkg:pypi/numpy?source=hash-mapping size: 7376601 timestamp: 1756343079617 - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-novtk_he2768ca_103.conda @@ -6316,6 +6613,7 @@ packages: - xorg-libxt >=1.3.1,<2.0a0 license: LGPL-2.1-only license_family: LGPL + purls: [] size: 24952098 timestamp: 1751411255412 - conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-novtk_h6d54593_103.conda @@ -6348,6 +6646,7 @@ packages: - rapidjson license: LGPL-2.1-only license_family: LGPL + purls: [] size: 25176639 timestamp: 1751411042717 - conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-novtk_hdfbec02_103.conda @@ -6382,6 +6681,7 @@ packages: - vc14_runtime >=14.44.35208 license: LGPL-2.1-only license_family: LGPL + purls: [] size: 24531205 timestamp: 1751413672290 - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda @@ -6410,6 +6710,7 @@ packages: - imath >=3.1.12,<3.1.13.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 1326814 timestamp: 1753614941084 - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda @@ -6436,6 +6737,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 1132521 timestamp: 1753614982652 - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda @@ -6467,6 +6769,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 1060265 timestamp: 1753614985511 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h55fea9a_1.conda @@ -6481,6 +6784,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause license_family: BSD + purls: [] size: 357828 timestamp: 1754297886899 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda @@ -6508,6 +6812,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause license_family: BSD + purls: [] size: 336370 timestamp: 1754297904811 - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda @@ -6535,6 +6840,7 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-2-Clause license_family: BSD + purls: [] size: 245076 timestamp: 1754298075628 - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda @@ -6571,6 +6877,7 @@ packages: - libgcc >=14 license: Apache-2.0 license_family: Apache + purls: [] size: 3128847 timestamp: 1754465526100 - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hc426f3f_1.conda @@ -6591,6 +6898,7 @@ packages: - ca-certificates license: Apache-2.0 license_family: Apache + purls: [] size: 2743708 timestamp: 1754466962243 - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda @@ -6615,6 +6923,7 @@ packages: - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: Apache + purls: [] size: 9275175 timestamp: 1754467904482 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda @@ -6625,6 +6934,8 @@ packages: - python license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping size: 62477 timestamp: 1745345660407 - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -6658,6 +6969,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 1197308 timestamp: 1745955064657 - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda @@ -6680,6 +6992,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 1086588 timestamp: 1745955211398 - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda @@ -6706,6 +7019,7 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: [] size: 1040584 timestamp: 1745955875845 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.4.0-pyhcf101f3_0.conda @@ -6724,6 +7038,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/pluggy?source=hash-mapping size: 24246 timestamp: 1747339794916 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -6734,6 +7050,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 8252 timestamp: 1726802366959 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -6744,6 +7061,8 @@ packages: - python license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/pycparser?source=hash-mapping size: 110100 timestamp: 1733195786147 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda @@ -6753,6 +7072,8 @@ packages: - python >=3.9 license: BSD-2-Clause license_family: BSD + purls: + - pkg:pypi/pygments?source=hash-mapping size: 889287 timestamp: 1750615908735 - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda @@ -6763,6 +7084,8 @@ packages: - python license: MIT license_family: MIT + purls: + - pkg:pypi/pyparsing?source=compressed-mapping size: 102292 timestamp: 1753873557076 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda @@ -6774,6 +7097,8 @@ packages: - win_inet_pton license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping size: 21784 timestamp: 1733217448189 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -6784,6 +7109,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda @@ -6802,6 +7129,8 @@ packages: - pytest-faulthandler >=2 license: MIT license_family: MIT + purls: + - pkg:pypi/pytest?source=hash-mapping size: 276562 timestamp: 1750239526127 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda @@ -6828,6 +7157,7 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 + purls: [] size: 31445023 timestamp: 1749050216615 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda @@ -6876,6 +7206,7 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 + purls: [] size: 13571569 timestamp: 1749049058713 - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.8-h9ccd52b_1_cpython.conda @@ -6919,6 +7250,7 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 + purls: [] size: 15829289 timestamp: 1749047682640 - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.8-h3f84c4b_1_cpython.conda @@ -6975,6 +7307,8 @@ packages: - python license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping size: 233310 timestamp: 1751104122689 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -6995,6 +7329,7 @@ packages: - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD + purls: [] size: 6958 timestamp: 1752805918820 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -7063,6 +7398,7 @@ packages: - occt 7.9.0 *novtk* license: LGPL-3.0-or-later license_family: LGPL + purls: [] size: 55270831 timestamp: 1744452686968 - conda: https://conda.anaconda.org/conda-forge/osx-64/pythonocc-core-7.8.1.1-novtk_hb8dc2b1_100.conda @@ -7099,6 +7435,7 @@ packages: - occt 7.9.0 *novtk* license: LGPL-3.0-or-later license_family: LGPL + purls: [] size: 43691761 timestamp: 1744451595414 - conda: https://conda.anaconda.org/conda-forge/win-64/pythonocc-core-7.8.1.1-novtk_h94eb9d1_100.conda @@ -7137,6 +7474,7 @@ packages: - occt 7.9.0 *novtk* license: LGPL-3.0-or-later license_family: LGPL + purls: [] size: 38773572 timestamp: 1744455636146 - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-h3f2d84a_2.conda @@ -7149,6 +7487,7 @@ packages: - __glibc >=2.17,<3.0.a0 license: MIT license_family: MIT + purls: [] size: 156074 timestamp: 1742820732296 - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda @@ -7169,6 +7508,7 @@ packages: - libcxx >=18 license: MIT license_family: MIT + purls: [] size: 156314 timestamp: 1742820725403 - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda @@ -7204,6 +7544,7 @@ packages: - ucrt >=10.0.20348.0 license: MIT license_family: MIT + purls: [] size: 153477 timestamp: 1742820803681 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -7224,6 +7565,7 @@ packages: - ncurses >=6.5,<7.0a0 license: GPL-3.0-only license_family: GPL + purls: [] size: 282480 timestamp: 1740379431762 - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda @@ -7233,6 +7575,7 @@ packages: - ncurses >=6.5,<7.0a0 license: GPL-3.0-only license_family: GPL + purls: [] size: 256712 timestamp: 1740379577668 - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda @@ -7257,6 +7600,8 @@ packages: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/requests?source=compressed-mapping size: 59263 timestamp: 1755614348400 - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda @@ -7277,6 +7622,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 193775 timestamp: 1748644872902 - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda @@ -7295,6 +7641,7 @@ packages: - __osx >=10.13 license: MIT license_family: MIT + purls: [] size: 185180 timestamp: 1748644989546 - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.12.10-h718f522_0.conda @@ -7309,6 +7656,8 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT + purls: + - pkg:pypi/ruff?source=compressed-mapping size: 10661766 timestamp: 1755823612718 - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.12.10-hab3cb23_0.conda @@ -7322,6 +7671,8 @@ packages: - __osx >=10.13 license: MIT license_family: MIT + purls: + - pkg:pypi/ruff?source=hash-mapping size: 10670425 timestamp: 1755823705979 - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.12.10-h429b229_0.conda @@ -7335,6 +7686,8 @@ packages: - ucrt >=10.0.20348.0 license: MIT license_family: MIT + purls: + - pkg:pypi/ruff?source=hash-mapping size: 10954968 timestamp: 1755823643535 - conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.1-py312h21f5128_0.conda @@ -7349,6 +7702,8 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/shapely?source=hash-mapping size: 639956 timestamp: 1747664455853 - conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.1-py312hbf10b29_0.conda @@ -7362,6 +7717,8 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/shapely?source=hash-mapping size: 606029 timestamp: 1747664579208 - conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.1-py312h3f81574_0.conda @@ -7377,6 +7734,8 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/shapely?source=hash-mapping size: 596725 timestamp: 1747664874209 - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 @@ -7386,6 +7745,7 @@ packages: - openssl >=3.0.0,<4.0a0 license: MIT license_family: MIT + purls: [] size: 213817 timestamp: 1643442169866 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -7396,6 +7756,8 @@ packages: - python license: MIT license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping size: 18455 timestamp: 1753199211006 - conda: https://conda.anaconda.org/conda-forge/noarch/svgwrite-1.4.3-pyhd8ed1ab_1.conda @@ -7406,6 +7768,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/svgwrite?source=hash-mapping size: 55407 timestamp: 1734380310892 - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda @@ -7430,6 +7794,7 @@ packages: - pcre2 >=10.45,<10.46.0a0 license: GPL-3.0-or-later license_family: GPL + purls: [] size: 1249501 timestamp: 1746016691247 - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda @@ -7452,6 +7817,7 @@ packages: - pcre2 >=10.45,<10.46.0a0 license: GPL-3.0-or-later license_family: GPL + purls: [] size: 1158340 timestamp: 1746016697903 - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda @@ -7476,6 +7842,7 @@ packages: - vc14_runtime >=14.29.30139 license: GPL-3.0-or-later license_family: GPL + purls: [] size: 1081846 timestamp: 1746017001804 - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda @@ -7497,6 +7864,7 @@ packages: - tzdata license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL + purls: [] size: 24210909 timestamp: 1752669140965 - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda @@ -7506,6 +7874,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/tabulate?source=hash-mapping size: 37554 timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda @@ -7517,6 +7887,7 @@ packages: - ncurses >=6.5,<7.0a0 license: NCSA license_family: MIT + purls: [] size: 221236 timestamp: 1725491044729 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda @@ -7529,6 +7900,7 @@ packages: - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: APACHE + purls: [] size: 150266 timestamp: 1755776172092 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda @@ -7562,6 +7934,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD + purls: [] size: 3285204 timestamp: 1748387766691 - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -7581,6 +7954,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD + purls: [] size: 3259809 timestamp: 1748387843735 - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda @@ -7592,6 +7966,7 @@ packages: - vc14_runtime >=14.29.30139 license: TCL license_family: BSD + purls: [] size: 3466348 timestamp: 1748388121356 - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -7613,6 +7988,8 @@ packages: - python license: MIT license_family: MIT + purls: + - pkg:pypi/tomli?source=compressed-mapping size: 21238 timestamp: 1753796677376 - conda: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_1.conda @@ -7622,6 +7999,8 @@ packages: - python >=3.9 license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/toposort?source=hash-mapping size: 14231 timestamp: 1734343818024 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda @@ -7631,6 +8010,7 @@ packages: - typing_extensions ==4.15.0 pyhcf101f3_0 license: PSF-2.0 license_family: PSF + purls: [] size: 91383 timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda @@ -7641,6 +8021,8 @@ packages: - python license: PSF-2.0 license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=compressed-mapping size: 51692 timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda @@ -7653,6 +8035,7 @@ packages: sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 md5: 4222072737ccff51314b5ece9c7d6f5a license: LicenseRef-Public-Domain + purls: [] size: 122968 timestamp: 1742727099393 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda @@ -7661,6 +8044,7 @@ packages: constrains: - vs2015_runtime >=14.29.30037 license: LicenseRef-MicrosoftWindowsSDK10 + purls: [] size: 559710 timestamp: 1728377334097 - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhd8ed1ab_2.conda @@ -7670,6 +8054,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/untokenize?source=hash-mapping size: 9517 timestamp: 1734421007487 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda @@ -7683,6 +8069,8 @@ packages: - zstandard >=0.18.0 license: MIT license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping size: 101735 timestamp: 1750271478254 - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_31.conda @@ -7694,6 +8082,7 @@ packages: - vc14 license: BSD-3-Clause license_family: BSD + purls: [] size: 18249 timestamp: 1753739241465 - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h5fd82a7_24.conda @@ -7717,6 +8106,7 @@ packages: - vs2015_runtime 14.44.35208.* *_31 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary + purls: [] size: 682424 timestamp: 1753739239305 - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda @@ -7728,6 +8118,7 @@ packages: - vs2015_runtime 14.44.35208.* *_31 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary + purls: [] size: 113963 timestamp: 1753739198723 - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_31.conda @@ -7776,6 +8167,7 @@ packages: - vc14 license: BSD-3-Clause license_family: BSD + purls: [] size: 21054 timestamp: 1753739201422 - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda @@ -7785,6 +8177,7 @@ packages: - __win license: MIT license_family: MIT + purls: [] size: 238764 timestamp: 1745560912727 - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda @@ -7801,6 +8194,8 @@ packages: - __win - python >=3.9 license: LicenseRef-Public-Domain + purls: + - pkg:pypi/win-inet-pton?source=hash-mapping size: 9555 timestamp: 1733130678956 - conda: https://conda.anaconda.org/conda-forge/noarch/xmlschema-4.1.0-pyhd8ed1ab_0.conda @@ -7811,6 +8206,8 @@ packages: - python >=3.9 license: MIT license_family: MIT + purls: + - pkg:pypi/xmlschema?source=hash-mapping size: 425680 timestamp: 1749678710627 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda @@ -7821,6 +8218,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 58628 timestamp: 1734227592886 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -7845,6 +8243,7 @@ packages: - xorg-libice >=1.1.2,<2.0a0 license: MIT license_family: MIT + purls: [] size: 27590 timestamp: 1741896361728 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda @@ -7867,6 +8266,7 @@ packages: - libxcb >=1.17.0,<2.0a0 license: MIT license_family: MIT + purls: [] size: 835896 timestamp: 1741901112627 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda @@ -7877,6 +8277,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 14780 timestamp: 1734229004433 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda @@ -7887,6 +8288,7 @@ packages: - libgcc >=13 license: MIT license_family: MIT + purls: [] size: 19901 timestamp: 1727794976192 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda @@ -7898,6 +8300,7 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT + purls: [] size: 50060 timestamp: 1727752228921 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda @@ -7909,6 +8312,7 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT + purls: [] size: 19575 timestamp: 1727794961233 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda @@ -7922,6 +8326,7 @@ packages: - xorg-libxfixes >=6.0.1,<7.0a0 license: MIT license_family: MIT + purls: [] size: 47179 timestamp: 1727799254088 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda @@ -7935,6 +8340,7 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT + purls: [] size: 379686 timestamp: 1731860547604 - conda: https://conda.anaconda.org/conda-forge/noarch/xsdata-25.7-pyhd8ed1ab_0.conda @@ -7953,6 +8359,8 @@ packages: - typing-extensions license: MIT license_family: MIT + purls: + - pkg:pypi/xsdata?source=hash-mapping size: 260640 timestamp: 1751907866433 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda @@ -7966,6 +8374,7 @@ packages: - xz-gpl-tools 5.8.1 hbcc6ac9_2 - xz-tools 5.8.1 hb9d3cd8_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] size: 23987 timestamp: 1749230104359 - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda @@ -7978,6 +8387,7 @@ packages: - xz-gpl-tools 5.8.1 h357f2ed_2 - xz-tools 5.8.1 hd471939_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] size: 24033 timestamp: 1749230223096 - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.4-h208afaa_0.conda @@ -8004,6 +8414,7 @@ packages: - vc14_runtime >=14.29.30139 - xz-tools 5.8.1 h2466b09_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] size: 24430 timestamp: 1749230691276 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda @@ -8016,6 +8427,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] size: 33911 timestamp: 1749230090353 - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda @@ -8027,6 +8439,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] size: 33890 timestamp: 1749230206830 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda @@ -8039,6 +8452,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later + purls: [] size: 96433 timestamp: 1749230076687 - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda @@ -8050,6 +8464,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later + purls: [] size: 85777 timestamp: 1749230191007 - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.4-h2466b09_0.conda @@ -8074,6 +8489,7 @@ packages: constrains: - xz 5.8.1.* license: 0BSD AND LGPL-2.1-or-later + purls: [] size: 67419 timestamp: 1749230666460 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda @@ -8085,6 +8501,7 @@ packages: - libzlib 1.3.1 hb9d3cd8_2 license: Zlib license_family: Other + purls: [] size: 92286 timestamp: 1727963153079 - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda @@ -8095,6 +8512,7 @@ packages: - libzlib 1.3.1 hd23fc13_2 license: Zlib license_family: Other + purls: [] size: 88544 timestamp: 1727963189976 - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda @@ -8107,6 +8525,7 @@ packages: - vc14_runtime >=14.29.30139 license: Zlib license_family: Other + purls: [] size: 107439 timestamp: 1727963788936 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h4c3975b_3.conda @@ -8120,6 +8539,8 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping size: 488806 timestamp: 1756075707087 - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h2f459f6_3.conda @@ -8132,6 +8553,8 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping size: 644204 timestamp: 1756075773049 - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312he06e257_3.conda @@ -8146,6 +8569,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping size: 342842 timestamp: 1756075919270 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda @@ -8169,6 +8594,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 567578 timestamp: 1742433379869 - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda @@ -8189,6 +8615,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD + purls: [] size: 485754 timestamp: 1742433356230 - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda @@ -8213,5 +8640,6 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: [] size: 354697 timestamp: 1742433568506 diff --git a/pixi.toml b/pixi.toml index 05315d174e..71bc0b887d 100644 --- a/pixi.toml +++ b/pixi.toml @@ -1,6 +1,6 @@ [project] name = "IfcOpenShell" -version = "0.8.2" +version = "0.8.4" description = "IfcOpenShell is a library to support the IFC file format" channels = ["conda-forge"] platforms = ["win-64", "linux-64", "osx-64"] @@ -37,6 +37,7 @@ mpfr = "*" gmp = "*" nlohmann_json = "*" zlib = "*" +# Not strictly necessary pythonocc-core = "*" [feature.tests.dependencies] @@ -59,18 +60,18 @@ vs2022_win-64 = "*" init-submodules = { cmd = "git submodule update --init --recursive", outputs =["$PIXI_PROJECT_ROOT/src/svgfill/3rdparty/svgpp/*"]} [feature.prod.target.win-64.tasks] -configure-release = { cmd = ["cmake", "--preset", "win-release", "-B", "build/win-release", "cmake"], description = "Configure the project", depends-on=["init-submodules"] } +configure-release = { cmd = ["cmake", "--preset", "win-release", "-B", "build/win-release", "cmake"], description = "Configure the project", depends-on=[{ task="init-submodules", environment = "common" }] } build-release = { cmd = ["cmake", "--build", "build/win-release", "--config", "Release"], description = "Build the project" } [feature.dev.target.win-64.tasks] -configure-debug = { cmd = ["cmake", "--preset", "win-debug", "-B", "build/win-debug", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["build/win-debug/CMakeCache.txt"] } +configure-debug = { cmd = ["cmake", "--preset", "win-debug", "-B", "build/win-debug", "cmake"], description = "Configure the project", depends-on=[{ task="init-submodules", environment = "common" }], outputs=["build/win-debug/CMakeCache.txt"] } build-debug = { cmd = ["cmake", "--build", "build/win-debug", "--config", "Debug"], description = "Build the project", depends-on = ["configure-debug"] } install-debug = { cmd = ["cmake", "--install", "build/win-debug", "--config", "Debug"], description = "Install the project" } # Optionally Install files to your desired env using --prefix vsdebug = { cmd = ["python"], description = "Run a python script with vs debugger attached" } [feature.tests.tasks] -configure-test = { cmd = ["cmake", "--preset", "win-test", "-B", "build/win-test", "cmake"], description = "Configure the project", depends-on=["init-submodules"], outputs=["build/win-test/CMakeCache.txt"] } +configure-test = { cmd = ["cmake", "--preset", "win-test", "-B", "build/win-test", "cmake"], description = "Configure the project", depends-on=[{ task="init-submodules", environment = "common" }], outputs=["build/win-test/CMakeCache.txt"] } build-test = { cmd = ["cmake", "--build", "build/win-test", "--config", "Release"], description = "Build the project", depends-on = ["configure-test"], outputs=["build/win-test/IfcGeom.lib"] } install-test = { cmd = ["cmake", "--install", "build/win-test", "--config", "Release"], description = "Install the project", depends-on = ["build-test"] } # Optionally Install files to your desired env using --prefix From 556eb128d69a5a183558bde59b097f6da7411ad6 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 28 Aug 2025 21:30:04 +0500 Subject: [PATCH 28/39] build-deps.cmd - add example use --- win/build-deps.cmd | 3 +++ 1 file changed, 3 insertions(+) diff --git a/win/build-deps.cmd b/win/build-deps.cmd index 888a94533e..555f194e68 100644 --- a/win/build-deps.cmd +++ b/win/build-deps.cmd @@ -20,6 +20,9 @@ :: This batch file expects CMake generator as %1 and build configuration type as %2. If not provided, :: a deduced generator will be used for %1 and BUILD_CFG_DEFAULT for %2 (both set in vs-cfg.cmd) :: Optionally a build type (Build/Rebuild/Clean) can be passed as %3. +:: +:: Example usage (all arguments are optional): +:: build-deps.cmd vs2022-x64 RelWithDebInfo Build @echo off echo. From b1a0b7a7d08a4ca27537fb397abd72c23a7fec46 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 29 Aug 2025 12:30:05 +0500 Subject: [PATCH 29/39] cmake - also try to use find_package(OpenCOLLADA) --- cmake/CMakeLists.txt | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 6c535a23a5..316ecc80d4 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -538,7 +538,18 @@ if(BUILD_IFCGEOM) endif(WITH_OPENCASCADE) endif(BUILD_IFCGEOM) -if(COLLADA_SUPPORT) +if(COLLADA_SUPPORT AND (NOT OPENCOLLADA_INCLUDE_DIR AND NOT OPENCOLLADA_LIBRARY_DIR)) + # If package is found, automatically sets + # OPENCOLLADA_INCLUDE_DIRS and OPENCOLLADA_LIBRARIES (list of targets, not paths). + find_package(OpenCOLLADA CONFIG) + if(OpenCOLLADA_DIR) + message(STATUS "Found OpenCOLLADA: '${OpenCOLLADA_DIR}'.") + set(OPENCOLLADA_FOUND TRUE) + else() + message(STATUS "OpenCOLLADA package not found, falling back to manual search.") + endif() +endif() +if(COLLADA_SUPPORT AND NOT OpenCOLLADA_DIR) # Find OpenCOLLADA if("${OPENCOLLADA_INCLUDE_DIR}" STREQUAL "") message(STATUS "No OpenCOLLADA include directory specified") @@ -571,8 +582,7 @@ if(COLLADA_SUPPORT) if(COLLADASWStreamWriter_h) message(STATUS "OpenCOLLADA header files found") - add_definitions(-DWITH_OPENCOLLADA) - set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_OPENCOLLADA) + set(OPENCOLLADA_FOUND TRUE) set(OPENCOLLADA_LIBRARY_NAMES GeneratedSaxParser MathMLSolver OpenCOLLADABaseUtils OpenCOLLADAFramework OpenCOLLADASaxFrameworkLoader @@ -620,7 +630,12 @@ if(COLLADA_SUPPORT) message(FATAL_ERROR "COLLADA_SUPPORT enabled, but unable to find OpenCOLLADA headers. " "Disable COLLADA_SUPPORT or fix OpenCOLLADA paths to proceed.") endif() -endif(COLLADA_SUPPORT) +endif(COLLADA_SUPPORT AND NOT OpenCOLLADA_DIR) +if(COLLADA_SUPPORT AND OPENCOLLADA_FOUND) + add_definitions(-DWITH_OPENCOLLADA) + set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_OPENCOLLADA) +endif() + if(HDF5_SUPPORT) if("${HDF5_INCLUDE_DIR}" STREQUAL "") From ae771cb37dd1d09780d192feeebfa2c065e3458e Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 29 Aug 2025 15:35:25 +0500 Subject: [PATCH 30/39] build-deps.cmd - bump swig version to 4.1.0 and use cmake 4.1.0 will match build-all.py and it's the first version to use cmake, so we can quickly build swig ourselves --- nix/build-all.py | 2 +- win/build-deps.cmd | 41 +++++++++++++++++++++++++++++------------ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/nix/build-all.py b/nix/build-all.py index bcf224f5ab..40fe22ba84 100644 --- a/nix/build-all.py +++ b/nix/build-all.py @@ -124,7 +124,7 @@ OCCT_VERSION = "7.8.1" BOOST_VERSION = "1.86.0" PCRE_VERSION = "8.41" LIBXML2_VERSION = "2.13.8" -SWIG_VERSION = "4.0.2" +SWIG_VERSION = "4.1.0" OPENCOLLADA_VERSION = "v1.6.68" HDF5_VERSION = "1.12.1" diff --git a/win/build-deps.cmd b/win/build-deps.cmd index 555f194e68..37e2cf094e 100644 --- a/win/build-deps.cmd +++ b/win/build-deps.cmd @@ -537,21 +537,38 @@ IF EXIST "%INSTALL_DIR%\swigwin" ( goto :cgal ) -set SWIG_VERSION=3.0.12 -set DEPENDENCY_NAME=SWIG %SWIG_VERSION% -set DEPENDENCY_DIR=N/A -set SWIG_ZIP=swigwin-%SWIG_VERSION%.zip cd "%DEPS_DIR%" -call :DownloadFile https://github.com/aothms/swigwin-3.0.12/raw/refs/heads/main/swigwin-3.0.12.zip "%DEPS_DIR%" %SWIG_ZIP% + +:: Install bizon dependency for SWIG. +set DEPENDENCY_NAME=win_flex_bison +set WIN_FLEX_BIZON=win_flex_bison-2.5.25 +set WIN_FLEX_BIZON_ZIP=%WIN_FLEX_BIZON%.zip +call :DownloadFile https://github.com/lexxmark/winflexbison/releases/download/v2.5.25/%WIN_FLEX_BIZON_ZIP% "%DEPS_DIR%" %WIN_FLEX_BIZON_ZIP% IF NOT %ERRORLEVEL%==0 GOTO :Error -call :ExtractArchive %SWIG_ZIP% "%DEPS_DIR%" "%DEPS_DIR%\swigwin" +echo test %WIN_FLEX_BIZON% +call :ExtractArchive %WIN_FLEX_BIZON_ZIP% "%DEPS_DIR%\%WIN_FLEX_BIZON%" "%DEPS_DIR%\%WIN_FLEX_BIZON%" IF NOT %ERRORLEVEL%==0 GOTO :Error -IF EXIST "%DEPS_DIR%\swigwin-%SWIG_VERSION%". ( - pushd "%DEPS_DIR%" - ren swigwin-%SWIG_VERSION% swigwin - popd -) -IF EXIST "%DEPS_DIR%\swigwin\". robocopy "%DEPS_DIR%\swigwin" "%INSTALL_DIR%\swigwin" /E /IS /MOVE /njh /njs + +set SWIG_VERSION=4.1.0 +set DEPENDENCY_NAME=SWIG %SWIG_VERSION% +set DEPENDENCY_DIR=%DEPS_DIR%\swig-%SWIG_VERSION% +set SWIG_ZIP=swigwin-%SWIG_VERSION%.zip +call :DownloadFile https://github.com/swig/swig/archive/refs/tags/v%SWIG_VERSION%.zip "%DEPS_DIR%" swig-%SWIG_VERSION%.zip +IF NOT %ERRORLEVEL%==0 GOTO :Error + +call :ExtractArchive swig-%SWIG_VERSION%.zip "%DEPS_DIR%" "%DEPENDENCY_DIR%" +IF NOT %ERRORLEVEL%==0 GOTO :Error +cd "%DEPENDENCY_DIR%" + +call :RunCMake -DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%\swigwin" ^ + -DWITH_PCRE=OFF ^ + -DBISON_EXECUTABLE="%DEPS_DIR%\%WIN_FLEX_BIZON%\win_bison.exe" +IF NOT %ERRORLEVEL%==0 GOTO :Error +call :BuildSolution "%DEPENDENCY_DIR%\%BUILD_DIR%\swig.sln" Release +IF NOT %ERRORLEVEL%==0 GOTO :Error +call :InstallCMakeProject "%DEPENDENCY_DIR%\%BUILD_DIR%" Release +IF NOT %ERRORLEVEL%==0 GOTO :Error +robocopy "%INSTALL_DIR%\swigwin\bin" "%INSTALL_DIR%\swigwin" /move /e :cgal From abbc5c2159c44e1a019f28a868623cc666dd1c7f Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 29 Aug 2025 18:21:52 +0500 Subject: [PATCH 31/39] run-cmake.bat - use opencollada install dir instead of providing include/library dirs explicitly --- win/run-cmake.bat | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/win/run-cmake.bat b/win/run-cmake.bat index c1ad00beef..83d142b469 100755 --- a/win/run-cmake.bat +++ b/win/run-cmake.bat @@ -87,8 +87,7 @@ set BOOST_ROOT=%DEPS_DIR%\boost_%BOOST_VER% set BOOST_LIBRARYDIR=%BOOST_ROOT%\stage\%GEN_SHORTHAND%\lib if not defined OCC_INCLUDE_DIR set OCC_INCLUDE_DIR=%INSTALL_DIR%\oce\include\oce if not defined OCC_LIBRARY_DIR set OCC_LIBRARY_DIR=%INSTALL_DIR%\oce\Win%ARCH_BITS%\lib -set OPENCOLLADA_INCLUDE_DIR=%INSTALL_DIR%\OpenCOLLADA\include\opencollada -set OPENCOLLADA_LIBRARY_DIR=%INSTALL_DIR%\OpenCOLLADA\lib\opencollada +set OPENCOLLADA_INSTALL_DIR=%INSTALL_DIR%\OpenCOLLADA set LIBXML2_INCLUDE_DIR=%DEPS_DIR%\OpenCOLLADA\Externals\LibXML\include set LIBXML2_LIBRARIES=%INSTALL_DIR%\OpenCOLLADA\lib\opencollada\xml.lib set HDF5_INSTALL_DIR=%INSTALL_DIR%\HDF5-%HDF5_VERSION%-win%ARCH_BITS% @@ -126,8 +125,7 @@ echo BOOST_ROOT = %BOOST_ROOT% echo BOOST_LIBRARYDIR = %BOOST_LIBRARYDIR% echo OCC_INCLUDE_DIR = %OCC_INCLUDE_DIR% echo OCC_LIBRARY_DIR = %OCC_LIBRARY_DIR% -echo OPENCOLLADA_INCLUDE_DIR = %OPENCOLLADA_INCLUDE_DIR% -echo OPENCOLLADA_LIBRARY_DIR = %OPENCOLLADA_LIBRARY_DIR% +echo OPENCOLLADA_INSTALL_DIR = %OPENCOLLADA_INSTALL_DIR% echo LIBXML2_INCLUDE_DIR = %LIBXML2_INCLUDE_DIR% echo LIBXML2_LIBRARIES = %LIBXML2_LIBRARIES% echo HDF5_INSTALL_DIR = %HDF5_INSTALL_DIR% @@ -161,12 +159,12 @@ call cecho.cmd 0 13 "Running CMake for %PROJECT_NAME%." IF NOT "%VS_TOOLSET_HOST%"=="" ( cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -A %VS_PLATFORM% -T %VS_TOOLSET_HOST% ^ -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%" -DBoost_NO_BOOST_CMAKE=ON ^ - -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%" ^ + -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%;%OPENCOLLADA_INSTALL_DIR%" ^ -DADD_COMMIT_SHA=%ADD_COMMIT_SHA% %ARGUMENTS% ) ELSE ( cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -A %VS_PLATFORM% ^ -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%" -DBoost_NO_BOOST_CMAKE=ON ^ - -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%" ^ + -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%;%OPENCOLLADA_INSTALL_DIR%" ^ -DADD_COMMIT_SHA=%ADD_COMMIT_SHA% %ARGUMENTS% ) From d004410ccba97e9e0c07adfdb50ec0e906c6d51e Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 29 Aug 2025 17:05:52 +0500 Subject: [PATCH 32/39] ifcwrap cmake - add _d debug postfix required on Windows --- src/ifcwrap/CMakeLists.txt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/ifcwrap/CMakeLists.txt b/src/ifcwrap/CMakeLists.txt index 930d3b6401..4e2e93157f 100644 --- a/src/ifcwrap/CMakeLists.txt +++ b/src/ifcwrap/CMakeLists.txt @@ -102,8 +102,22 @@ IF((PYTHONINTERP_FOUND AND NOT "${PYTHON_EXECUTABLE}" STREQUAL "") OR PYTHON_MOD OUTPUT_VARIABLE PYTHON_EXTENSION_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE ) - SET_TARGET_PROPERTIES(${SWIG_MODULE_ifcopenshell_wrapper_REAL_NAME} PROPERTIES SUFFIX ${PYTHON_EXTENSION_SUFFIX}) + + # On Windows there is '_d' prefix for debug builds - e.g. `_d.cp311-win_amd64.pyd`. + if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_target_properties( + ${SWIG_MODULE_ifcopenshell_wrapper_REAL_NAME} PROPERTIES + SUFFIX ${PYTHON_EXTENSION_SUFFIX} + DEBUG_POSTFIX "_d" + ) + else() + set_target_properties( + ${SWIG_MODULE_ifcopenshell_wrapper_REAL_NAME} PROPERTIES + SUFFIX ${PYTHON_EXTENSION_SUFFIX} + ) endif() + endif(NOT WASM_BUILD) + if (PYTHON_MODULE_INSTALL_DIR) set(python_package_dir "${PYTHON_MODULE_INSTALL_DIR}") else() From 76e3b8dd55b5e7cadbf8b40681043bf5640ba3b0 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 29 Aug 2025 19:30:08 +0500 Subject: [PATCH 33/39] Bonsai - fix error appending curve/fill area styles It would try to append them as Blender material and would fail, just import them as ifc elements. Noticed testing #7066 --- src/bonsai/bonsai/bim/module/project/operator.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py index 5e118db2b6..8ef95b19e1 100644 --- a/src/bonsai/bonsai/bim/module/project/operator.py +++ b/src/bonsai/bonsai/bim/module/project/operator.py @@ -620,8 +620,11 @@ class AppendLibraryElement(bpy.types.Operator, tool.Ifc.Operator): self.import_type_from_ifc(element_type, context) elif element.is_a("IfcMaterial"): self.import_material_from_ifc(element, context) - elif element.is_a("IfcPresentationStyle"): + elif element.is_a("IfcSurfaceStyle"): self.import_presentation_style_from_ifc(element, context) + else: + # E.g. other IfcPresentationStyles. + pass try: props = tool.Project.get_project_props() From d91362a6f738093ed4ebbc7dce23dc4d4698fba0 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 29 Aug 2025 21:08:06 +0500 Subject: [PATCH 34/39] run-cmake - use swig install dir --- win/run-cmake.bat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/win/run-cmake.bat b/win/run-cmake.bat index 83d142b469..27b3ea385e 100755 --- a/win/run-cmake.bat +++ b/win/run-cmake.bat @@ -96,7 +96,7 @@ if not defined PYTHONHOME set PYTHONHOME=%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR set PYTHON_INCLUDE_DIR=%PYTHONHOME%\include set PYTHON_LIBRARY=%PYTHONHOME%\libs\python%PY_VER_MAJOR_MINOR%.lib set PYTHON_EXECUTABLE=%PYTHONHOME%\python.exe -set SWIG_EXECUTABLE=%SWIG_DIR%\swig.exe +set SWIG_INSTALL_DIR=%INSTALL_DIR%\swigwin set PATH=%PATH%;%PYTHONHOME% set JSON_INCLUDE_DIR=%INSTALL_DIR%\json if not defined ADD_COMMIT_SHA set ADD_COMMIT_SHA=Off @@ -159,12 +159,12 @@ call cecho.cmd 0 13 "Running CMake for %PROJECT_NAME%." IF NOT "%VS_TOOLSET_HOST%"=="" ( cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -A %VS_PLATFORM% -T %VS_TOOLSET_HOST% ^ -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%" -DBoost_NO_BOOST_CMAKE=ON ^ - -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%;%OPENCOLLADA_INSTALL_DIR%" ^ + -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%;%OPENCOLLADA_INSTALL_DIR%;%SWIG_INSTALL_DIR%" ^ -DADD_COMMIT_SHA=%ADD_COMMIT_SHA% %ARGUMENTS% ) ELSE ( cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -A %VS_PLATFORM% ^ -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%" -DBoost_NO_BOOST_CMAKE=ON ^ - -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%;%OPENCOLLADA_INSTALL_DIR%" ^ + -DCMAKE_PREFIX_PATH="%HDF5_INSTALL_DIR%;%OPENCOLLADA_INSTALL_DIR%;%SWIG_INSTALL_DIR%" ^ -DADD_COMMIT_SHA=%ADD_COMMIT_SHA% %ARGUMENTS% ) From 43c35eaf24509dae647de07460e5f02e03544d38 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 29 Aug 2025 23:32:11 +0500 Subject: [PATCH 35/39] ifcfm - fix error running without pandas --- src/ifcfm/ifcfm/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ifcfm/ifcfm/__init__.py b/src/ifcfm/ifcfm/__init__.py index 6d08e2f17d..ff36e5702c 100644 --- a/src/ifcfm/ifcfm/__init__.py +++ b/src/ifcfm/ifcfm/__init__.py @@ -16,6 +16,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcFM. If not, see . +from __future__ import annotations import os import re import csv @@ -23,7 +24,7 @@ import importlib import ifcopenshell.util.selector from pathlib import Path from collections import defaultdict -from typing import Literal, Union, Any, Callable +from typing import Literal, Union, Any, Callable, TYPE_CHECKING try: from openpyxl import Workbook @@ -46,6 +47,9 @@ try: except: pass # No Pandas support +if TYPE_CHECKING: + import pandas as pd + __version__ = version = "0.0.0" From 34bf374047093a41c1d5aa00ef924cdb4c5f3ad7 Mon Sep 17 00:00:00 2001 From: Richard Brice <37087370+RickBrice@users.noreply.github.com> Date: Fri, 29 Aug 2025 12:48:03 -0700 Subject: [PATCH 36/39] Corrects nesting of referents --- .../ifcopenshell/api/alignment/__init__.py | 4 +- .../api/alignment/_add_segment_to_layout.py | 9 ++- .../api/alignment/_add_zero_length_segment.py | 4 +- .../api/alignment/add_stationing_referent.py | 55 ++++++++++--------- .../api/alignment/add_vertical_layout.py | 15 ++++- .../api/alignment/add_zero_length_segment.py | 5 +- .../ifcopenshell/api/alignment/create.py | 10 ++-- .../api/alignment/create_as_offset_curve.py | 5 -- .../alignment/distance_along_from_station.py | 2 +- ...tion.py => get_alignment_start_station.py} | 13 +++-- .../api/alignment/get_referent_nest.py | 13 +++-- .../alignment/test_add_segment_to_layout.py | 6 +- .../test_add_stationing_to_alignment.py | 25 +++++---- .../alignment/test_add_vertical_alignment.py | 28 ++++++---- .../api/alignment/test_create_by_pi_method.py | 7 +-- .../test/api/alignment/test_referent_names.py | 36 +++--------- .../test_vertical_layout_by_pi_method.py | 8 ++- 17 files changed, 125 insertions(+), 120 deletions(-) rename src/ifcopenshell-python/ifcopenshell/api/alignment/{get_alignment_station.py => get_alignment_start_station.py} (77%) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py index fb51da7cde..563376485f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/__init__.py @@ -62,7 +62,7 @@ from .distance_along_from_station import distance_along_from_station from .get_alignment import get_alignment from .get_alignment_layout_nest import get_alignment_layout_nest from .get_alignment_segment_nest import get_alignment_segment_nest -from .get_alignment_station import get_alignment_station +from .get_alignment_start_station import get_alignment_start_station from .get_curve_segment_transition_code import get_curve_segment_transition_code from .get_layout_segments import get_layout_segments from .get_horizontal_layout import get_horizontal_layout @@ -103,7 +103,7 @@ __all__ = [ "get_alignment_layout_nest", "get_alignment_layouts", "get_alignment_segment_nest", - "get_alignment_station", + "get_alignment_start_station", "get_axis_subcontext", "get_basis_curve", "get_cant_layout", diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py index b6e10113a7..6ab52af076 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py @@ -83,7 +83,7 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg # get the station of the start of the segment alignment = ifcopenshell.api.alignment.get_alignment(layout) - start_station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + start_station = ifcopenshell.api.alignment.get_alignment_start_station(file, alignment) station = start_station + dist_along # update the zero length layout segment @@ -137,8 +137,7 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg start_dist_along = segment.DesignParameters.StartDistAlong + segment.DesignParameters.HorizontalLength zero_length_segment.DesignParameters.StartDistAlong = start_dist_along - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, layout) - end_referent = referent_nest.RelatedObjects[-1] + end_referent = zero_length_segment.PositionedRelativeTo[0].RelatingPositioningElement end_referent.Name = f"{_get_segment_start_point_label(zero_length_segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,start_station+start_dist_along)})" # update the referent's geometric representation's location @@ -166,7 +165,7 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg end_referent.ObjectPlacement.CartesianPosition.Axis.DirectionRatios = (ax, ay, az) end_referent.ObjectPlacement.CartesianPosition.RefDirection.DirectionRatios = (rx, ry, rz) - start_station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + start_station = ifcopenshell.api.alignment.get_alignment_start_station(file, alignment) end_referent_station = start_station + start_dist_along pset_stationing = ifcopenshell.api.pset.add_pset(file, product=end_referent, name="Pset_Stationing") ifcopenshell.api.pset.edit_pset(file, pset=pset_stationing, properties={"Station": end_referent_station}) @@ -178,7 +177,7 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg prev_segment = segment_nest.RelatedObjects[-3] if 2 < len(segment_nest.RelatedObjects) else None name = f"{_get_segment_start_point_label(prev_segment,segment)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" referent = ifcopenshell.api.alignment.add_stationing_referent( - file, layout, distance_along=dist_along, station=station, name=name, positioned_product=segment + file, alignment, distance_along=dist_along, station=station, name=name, positioned_product=segment ) ifcopenshell.api.nest.reorder_nesting(file, referent, -1, -1) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py index dacae0be54..1219e35762 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_zero_length_segment.py @@ -51,6 +51,6 @@ def _add_zero_length_segment(file: ifcopenshell.file, layout: entity_instance) - segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(layout) segment = segment_nest.RelatedObjects[-1] alignment = ifcopenshell.api.alignment.get_alignment(layout) - station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + station = ifcopenshell.api.alignment.get_alignment_start_station(file, alignment) name = f"{_get_segment_start_point_label(segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" - ifcopenshell.api.alignment.add_stationing_referent(file, layout, 0.0, station, name, segment) + referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, station, name, segment) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py index c1590164e9..fe53ef5ca5 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py @@ -30,18 +30,17 @@ import numpy as np def add_stationing_referent( file: ifcopenshell.file, - element: entity_instance, + alignment: entity_instance, distance_along: float, station: float, name: str, positioned_product: entity_instance, ) -> entity_instance: """ - Adds an IfcReferent to the element with the Pset_Stationing property set. - If element is an IfcAlignment, IfcReferent.PredefinedType is set to "STATION", otherwise "POSITION" + Adds an IfcReferent to the alignment with the Pset_Stationing property set. - :param element: the element to receive the referent, expected to be an IfcAlignment or IfcAlignmentSegment - :param distance_along: distance along the alignment curve + :param alignment: the alignment to receive the referent + :param distance_along: distance along the alignment basis curve :param station: station value :param name: name to assign to IfcReferent.Name, typically a stringized version of the station value :param positioned_product: the product whose position is informed by the referent @@ -52,21 +51,8 @@ def add_stationing_referent( .. code:: python alignment = model.by_type("IfcAlignment")[0] - ifcopenshell.api.alignment.add_stationing_referent(model,entity=alignment,distance_along=0.0,station=100.0) + ifcopenshell.api.alignment.add_stationing_referent(model,alignment=alignment,distance_along=0.0,station=100.0) """ - alignment = element - - layout_types = [ - "IfcAlignmentHorizontal", - "IfcAlignmentVertical", - "IfcAlignmentCant", - ] - - if element.is_a("IfcAlignmentSegment"): - layout = element.Nests[0].RelatingObject - alignment = ifcopenshell.api.alignment.get_alignment(layout) - elif element.is_a() in layout_types: - alignment = ifcopenshell.api.alignment.get_alignment(element) basis_curve = ifcopenshell.api.alignment.get_basis_curve(alignment) @@ -86,6 +72,8 @@ def add_stationing_referent( ) is_valid_curve = True + if basis_curve.is_a("IfcCompositeCurve") and len(basis_curve.Segments) == 0: + is_valid_curve = False if basis_curve.is_a("IfcPolyline") and len(basis_curve.Points) < 2: is_valid_curve = False elif basis_curve.is_a("IfcIndexedPolyCurve") and len(basis_curve.Points.CoordList) < 2: @@ -101,6 +89,7 @@ def add_stationing_referent( fn = ifcopenshell_wrapper.convert_loop_to_function_item(fn) evaluator = ifcopenshell_wrapper.function_item_evaluator(settings, fn) + p = evaluator.evaluate(distance_along * unit_scale) p = np.array(p) @@ -115,12 +104,23 @@ def add_stationing_referent( ax = float(p[0, 2]) ay = float(p[1, 2]) az = float(p[2, 2]) + else: + x = 0. + y = 0. + z = 0. + rx = 1. + ry = 0. + rz = 0. + ax = 0. + ay = 0. + az = 1. - object_placement.CartesianPosition = file.createIfcAxis2Placement3D( - Location=file.createIfcCartesianPoint((x, y, z)), - Axis=file.createIfcDirection((ax, ay, az)), - RefDirection=file.createIfcDirection((rx, ry, rz)), - ) + object_placement.CartesianPosition = file.createIfcAxis2Placement3D( + Location=file.createIfcCartesianPoint((x, y, z)), + Axis=file.createIfcDirection((ax, ay, az)), + RefDirection=file.createIfcDirection((rx, ry, rz)), + ) + # this commented out code is what you would do to add a geometric representation of the referent # the example is a circle. a better way would be to pass a representation into the function # representation = file.create_entity( @@ -130,7 +130,6 @@ def add_stationing_referent( # ) # create referent for the station - predefined_type = "STATION" if element.is_a("IfcAlignment") else "POSITION" referent = file.createIfcReferent( GlobalId=ifcopenshell.guid.new(), OwnerHistory=None, @@ -139,14 +138,16 @@ def add_stationing_referent( ObjectType=None, ObjectPlacement=object_placement, Representation=representation, - PredefinedType=predefined_type, + PredefinedType="STATION", ) pset_stationing = ifcopenshell.api.pset.add_pset(file, product=referent, name="Pset_Stationing") ifcopenshell.api.pset.edit_pset(file, pset=pset_stationing, properties={"Station": station}) - nest = ifcopenshell.api.alignment.get_referent_nest(file, element) + nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) nest.RelatedObjects += (referent,) + nest.RelatedObjects = sorted(nest.RelatedObjects,key=lambda x: ifcopenshell.util.element.get_pset(x, name="Pset_Stationing", prop="Station")) + if len(referent.Positions) == 0: rel_positions = file.createIfcRelPositions( GlobalId=ifcopenshell.guid.new(), diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py index 6a388ff9d0..ffbd6b0870 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py @@ -50,9 +50,22 @@ def _move_vertical_layout_to_child_alignment( # nest the vertical layout onto the child alignment ifcopenshell.api.nest.assign_object(file, related_objects=[vertical_layout], relating_object=child_alignment) - # aggreage the child alignment to the parent alignment + # aggregate the child alignment to the parent alignment ifcopenshell.api.aggregate.assign_object(file, products=[child_alignment], relating_object=parent_alignment) + # move all referents positioning segments of the vertical layout to the referent nest of the child alignment + child_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,child_alignment) + parent_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,parent_alignment) + for referent in parent_referent_nest.RelatedObjects: + for product in referent.Positions[0].RelatedProducts: + if product.is_a("IfcAlignmentSegment") and product.Nests[0].RelatingObject == vertical_layout: + #ifcopenshell.api.nest.change_nest(file,referent,child_alignment) - this doesn't work because referent is assigned to child_alignment.IsNestedBy[0].RelatedObjects + # and it needs to be assigned to child_alignment.IsNestedBy[1].RelatedObjects + # move the referent manually - unassign it and add it to the child alignment's referent nest + ifcopenshell.api.nest.unassign_object(file,[referent]) + child_referent_nest.RelatedObjects += (referent,) + + # if the parent alignment has a representation, move the Axis/Curve3D represention to the child alignment base_curve = ifcopenshell.api.alignment.get_basis_curve(parent_alignment) if base_curve: diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py index 339098fa40..fbb159426a 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py @@ -231,8 +231,9 @@ def add_zero_length_segment(file: ifcopenshell.file, layout: entity_instance, in if include_referent: alignment = ifcopenshell.api.alignment.get_alignment(layout) - station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + station = ifcopenshell.api.alignment.get_alignment_start_station(file, alignment) name = f"{_get_segment_start_point_label(zero_length_curve_segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" - ifcopenshell.api.alignment.add_stationing_referent(file, zero_length_curve_segment, 0.0, station, name=name) + referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, station, name, zero_length_curve_segment) + referent.Description = f"Positions zero length segment {zero_length_curve_segment.id()}" return True diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py index daa44ed460..af106a584b 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py @@ -79,17 +79,15 @@ def create( if include_geometry: _create_geometric_representation(file, alignment) - - for layout in alignment_layouts: - _add_zero_length_segment(file, layout) - - if include_geometry: - # define stationing + name = ifcopenshell.util.alignment.station_as_string(file, start_station) referent = ifcopenshell.api.alignment.add_stationing_referent( file, alignment, 0.0, start_station, name, alignment ) + for layout in alignment_layouts: + _add_zero_length_segment(file, layout) + # IFC 4.1.4.1.1 Alignment Aggregation To Project project = file.by_type("IfcProject")[0] if project: diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_offset_curve.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_offset_curve.py index dd7be84223..a206fda69b 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_offset_curve.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_offset_curve.py @@ -53,11 +53,6 @@ def create_as_offset_curve( _create_offset_curve_representation(file, alignment, offsets) - # define stationing - # name = ifcopenshell.util.alignment.station_as_string(file, start_station) - # referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name) - # ifcopenshell.api.nest.reorder_nesting(file, referent, -1, 0) - # IFC 4.1.4.1.1 Alignment Aggregation To Project project = file.by_type("IfcProject")[0] if project: diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/distance_along_from_station.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/distance_along_from_station.py index e67b468c75..c52d9962ad 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/distance_along_from_station.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/distance_along_from_station.py @@ -43,6 +43,6 @@ def distance_along_from_station(file: ifcopenshell.file, alignment: entity_insta print(dist_along) # 100.00 """ - start_station = ifcopenshell.api.alignment.get_alignment_station(file, alignment) + start_station = ifcopenshell.api.alignment.get_alignment_start_station(file, alignment) dist_along = station - start_station return dist_along diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_start_station.py similarity index 77% rename from src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py rename to src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_start_station.py index 313ab949a7..8f9a5f0beb 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_station.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_alignment_start_station.py @@ -22,10 +22,10 @@ import ifcopenshell.util.element from ifcopenshell import entity_instance -def get_alignment_station(file: ifcopenshell.file, alignment: entity_instance) -> float: +def get_alignment_start_station(file: ifcopenshell.file, alignment: entity_instance) -> float: """ - Returns the start station of the alignment. If the alignment is nested by an IfcReferent - the referent is checked for PredefinedType of STATION and an occurance of Pset_Stationing.Station, + Returns the start station of the alignment. The starting station is defined by the first nested IfcReferent. + This is interpreted to mean the first IfcReferent with an occurance of Pset_Stationing.Station, otherwise returns 0.0. """ @@ -36,12 +36,13 @@ def get_alignment_station(file: ifcopenshell.file, alignment: entity_instance) - parent_alignment = ifcopenshell.api.alignment.get_parent_alignment(alignment) if parent_alignment: - start_station = ifcopenshell.api.alignment.get_alignment_station(file, parent_alignment) + start_station = ifcopenshell.api.alignment.get_alignment_start_station(file, parent_alignment) else: components = ifcopenshell.util.element.get_components(alignment) for c in components: - if c.is_a("IfcReferent") and ifcopenshell.util.element.get_predefined_type(c) == "STATION": + if c.is_a("IfcReferent"): start_station = ifcopenshell.util.element.get_pset(c, name="Pset_Stationing", prop="Station") - break + if not start_station == None: + break return start_station diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py index 0efad8c3cb..297d32a7e6 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py @@ -20,18 +20,23 @@ import ifcopenshell from ifcopenshell import entity_instance -def get_referent_nest(file: ifcopenshell.file, entity: entity_instance) -> entity_instance: +def get_referent_nest(file: ifcopenshell.file, alignment: entity_instance) -> entity_instance: """ Searches for the IfcRelNest that contains IfcReferent. If one is not found, a empty IfcRelNests is created. :param file: - :param entity: any entity that is the parent in a nesting relationship, but intended to be IfcAlignment, IfcAlignmentHorizontal, IfcAlignmentVertical, or IfcAlignmentCant + :param alignment: The IfcAlignment which hosts IfcReferent :return: Returns the IfcRelNests. """ - for nest in entity.IsNestedBy: + if not alignment.is_a("IfcAlignment"): + raise TypeError( + f"Expected IfcAlignment, instead received {alignment.is_a()}" + ) + + for nest in alignment.IsNestedBy: for related_object in nest.RelatedObjects: if related_object.is_a("IfcReferent"): return nest - nest = file.createIfcRelNests(GlobalId=ifcopenshell.guid.new(), RelatingObject=entity, RelatedObjects=[]) + nest = file.createIfcRelNests(GlobalId=ifcopenshell.guid.new(), RelatingObject=alignment, RelatedObjects=[]) return nest diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py b/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py index 6ca593f7dd..bea6f8989a 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_segment_to_layout.py @@ -67,11 +67,11 @@ def test_add_segment_to_layout(): _add_segment_to_layout(file, horizontal_alignment, alignment_segment) - assert len(horizontal_alignment.IsNestedBy) == 2 - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, horizontal_alignment) + assert len(horizontal_alignment.IsNestedBy) == 1 segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_alignment) assert len(segment_nest.RelatedObjects) == 2 - assert len(referent_nest.RelatedObjects) == 2 + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) + assert len(referent_nest.RelatedObjects) == 3 test_add_segment_to_layout() diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py b/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py index d4d75b31d5..0e8731d5f2 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py @@ -39,14 +39,17 @@ def test_add_stationing_to_alignment(): alignment = ifcopenshell.api.alignment.create(file, "TestAlignment", start_station=2000.0) - for rel in alignment.IsNestedBy: - for referent in rel.RelatedObjects: - if referent.is_a("IfcReferent"): - assert referent.PredefinedType == "STATION" - assert referent.Name == "2+000.000" - assert ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing") - assert ( - ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing", prop="Station") - == 2000.0 - ) - assert referent.ObjectPlacement != None + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + referent = referent_nest.RelatedObjects[0] + + assert referent.PredefinedType == "STATION" + assert referent.Name == "2+000.000" + assert ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing") + assert ( + ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing", prop="Station") + == 2000.0 + ) + assert referent.ObjectPlacement != None + + +test_add_stationing_to_alignment() \ No newline at end of file diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py index 70247f97e5..7d03dbcc2e 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py @@ -33,9 +33,13 @@ def test_add_vertical_alignment(): assert len(alignment.IsDecomposedBy) == 0 # no child alignments assert len(alignment.IsNestedBy) == 2 # nests for layout and referents - assert len(alignment.IsNestedBy[0].RelatedObjects) == 1 - assert ifcopenshell.api.alignment.get_referent_nest(file, alignment).RelatedObjects[0].is_a("IfcReferent") - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") + layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) + assert len(layout_nest.RelatedObjects) == 1 + assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + assert len(referent_nest.RelatedObjects) == 2 + assert referent_nest.RelatedObjects[0].is_a("IfcReferent") + curve = ifcopenshell.api.alignment.get_curve(alignment) assert curve.is_a("IfcCompositeCurve") @@ -43,9 +47,10 @@ def test_add_vertical_alignment(): assert len(alignment.IsDecomposedBy) == 0 # no child alignments assert len(alignment.IsNestedBy) == 2 - assert len(alignment.IsNestedBy[0].RelatedObjects) == 2 - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") - assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentVertical") + assert len(layout_nest.RelatedObjects) == 2 + assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") + assert layout_nest.RelatedObjects[1].is_a("IfcAlignmentVertical") + curve = ifcopenshell.api.alignment.get_curve(alignment) assert curve.is_a("IfcGradientCurve") @@ -57,13 +62,14 @@ def test_add_vertical_alignment(): for child_alignment in alignment.IsDecomposedBy[0].RelatedObjects: assert child_alignment.is_a("IfcAlignment") - assert len(child_alignment.IsNestedBy) == 1 # one nesting relationship for the IfcAlignmentVertical - assert len(child_alignment.IsNestedBy[0].RelatedObjects) == 1 # The IfcAlignmentVertical - assert child_alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentVertical") + assert len(child_alignment.IsNestedBy) == 2 + child_layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(child_alignment) + assert len(child_layout_nest.RelatedObjects) == 1 # The IfcAlignmentVertical + assert child_layout_nest.RelatedObjects[0].is_a("IfcAlignmentVertical") assert len(alignment.IsNestedBy) == 2 - assert len(alignment.IsNestedBy[0].RelatedObjects) == 1 - assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal") + assert len(layout_nest.RelatedObjects) == 1 + assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") test_add_vertical_alignment() diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py index 4b3b0d3c8d..1b088afd56 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py @@ -51,17 +51,16 @@ def test_create_by_pi_method(): layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) assert len(layout_nest.RelatedObjects) == 2 + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + assert len(referent_nest.RelatedObjects) == 19 + horizontal_layout = ifcopenshell.api.alignment.get_horizontal_layout(alignment) horizontal_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_layout) assert len(horizontal_segment_nest.RelatedObjects) == 8 - horizontal_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, horizontal_layout) - assert len(horizontal_referent_nest.RelatedObjects) == 8 vertical_layout = ifcopenshell.api.alignment.get_vertical_layout(alignment) vertical_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vertical_layout) assert len(vertical_segment_nest.RelatedObjects) == 10 - vertical_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, vertical_layout) - assert len(vertical_referent_nest.RelatedObjects) == 10 test_create_by_pi_method() diff --git a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py index 6939190d5f..a99afd8e55 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py +++ b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py @@ -97,36 +97,16 @@ def callback_alignment(): def test_with_default_names(default_names_alignment): - hlayout = ifcopenshell.api.alignment.get_horizontal_layout(default_names_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, hlayout) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, default_names_alignment) - assert "P.O.B." in referent_nest.RelatedObjects[0].Name - assert "P.C." in referent_nest.RelatedObjects[1].Name - assert "P.T." in referent_nest.RelatedObjects[2].Name - assert "P.O.E." in referent_nest.RelatedObjects[-1].Name - - vlayout = ifcopenshell.api.alignment.get_vertical_layout(default_names_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, vlayout) - - assert "V.P.O.B." in referent_nest.RelatedObjects[0].Name - assert "P.V.C." in referent_nest.RelatedObjects[1].Name - assert "P.V.T." in referent_nest.RelatedObjects[2].Name - assert "V.P.O.E." in referent_nest.RelatedObjects[-1].Name + expected = ["P.O.B", "P.C.", "P.T.", "P.O.E.", "V.P.O.B.", "P.V.C.", "P.V.T.", "V.P.O.E"] + for r in referent_nest.RelatedObjects: + assert [x in r.Name for x in expected] def test_with_callbacks(callback_alignment): - hlayout = ifcopenshell.api.alignment.get_horizontal_layout(callback_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, hlayout) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, callback_alignment) - assert "A" in referent_nest.RelatedObjects[0].Name - assert "Q" in referent_nest.RelatedObjects[1].Name - assert "Q" in referent_nest.RelatedObjects[2].Name - assert "Z" in referent_nest.RelatedObjects[-1].Name - - vlayout = ifcopenshell.api.alignment.get_vertical_layout(callback_alignment) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, vlayout) - - assert "a" in referent_nest.RelatedObjects[0].Name - assert "q" in referent_nest.RelatedObjects[1].Name - assert "q" in referent_nest.RelatedObjects[2].Name - assert "z" in referent_nest.RelatedObjects[-1].Name + expected = ["A","Q","Z","a","q","z"] + for r in referent_nest.RelatedObjects: + assert [x in r.Name for x in expected] diff --git a/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py index 5315070937..8dab67c181 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_vertical_layout_by_pi_method.py @@ -58,11 +58,15 @@ def test_vertical_layout_by_pi_method(): ifcopenshell.api.alignment.layout_vertical_alignment_by_pi_method(file, vlayout, vpoints, lengths) assert len(alignment.IsDecomposedBy) == 0 # no child alignments + assert len(alignment.IsNestedBy) == 2 - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) + layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) - assert len(referent_nest.RelatedObjects) == 1 assert len(layout_nest.RelatedObjects) == 2 + + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) + assert len(referent_nest.RelatedObjects) == 6 + segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vlayout) assert len(segment_nest.RelatedObjects) == 3 From a839183ac290fdbc46b9f5fdd5396c4f60f53bfa Mon Sep 17 00:00:00 2001 From: Richard Brice <37087370+RickBrice@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:37:17 -0700 Subject: [PATCH 37/39] Fixes referent sorting --- .../api/alignment/_add_segment_to_layout.py | 1 - .../api/alignment/add_stationing_referent.py | 24 ++++++++++--------- .../api/alignment/add_vertical_layout.py | 9 ++++--- .../api/alignment/add_zero_length_segment.py | 4 +++- .../ifcopenshell/api/alignment/create.py | 2 +- .../api/alignment/create_as_polyline.py | 1 - .../api/alignment/get_referent_nest.py | 6 ++--- .../test_add_stationing_to_alignment.py | 9 +++---- .../alignment/test_add_vertical_alignment.py | 2 +- .../api/alignment/test_create_by_pi_method.py | 2 +- .../test/api/alignment/test_referent_names.py | 2 +- 11 files changed, 29 insertions(+), 33 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py index 6ab52af076..88b68ff674 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/_add_segment_to_layout.py @@ -179,7 +179,6 @@ def _add_segment_to_layout(file: ifcopenshell.file, layout: entity_instance, seg referent = ifcopenshell.api.alignment.add_stationing_referent( file, alignment, distance_along=dist_along, station=station, name=name, positioned_product=segment ) - ifcopenshell.api.nest.reorder_nesting(file, referent, -1, -1) if len(curve.Segments) == 2 and layout.is_a("IfcAlignmentHorizontal"): # this is the first real segment in the horizontal alignment diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py index fe53ef5ca5..1534ad9d5d 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_stationing_referent.py @@ -105,22 +105,22 @@ def add_stationing_referent( ay = float(p[1, 2]) az = float(p[2, 2]) else: - x = 0. - y = 0. - z = 0. - rx = 1. - ry = 0. - rz = 0. - ax = 0. - ay = 0. - az = 1. + x = 0.0 + y = 0.0 + z = 0.0 + rx = 1.0 + ry = 0.0 + rz = 0.0 + ax = 0.0 + ay = 0.0 + az = 1.0 object_placement.CartesianPosition = file.createIfcAxis2Placement3D( Location=file.createIfcCartesianPoint((x, y, z)), Axis=file.createIfcDirection((ax, ay, az)), RefDirection=file.createIfcDirection((rx, ry, rz)), ) - + # this commented out code is what you would do to add a geometric representation of the referent # the example is a circle. a better way would be to pass a representation into the function # representation = file.create_entity( @@ -146,7 +146,9 @@ def add_stationing_referent( nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) nest.RelatedObjects += (referent,) - nest.RelatedObjects = sorted(nest.RelatedObjects,key=lambda x: ifcopenshell.util.element.get_pset(x, name="Pset_Stationing", prop="Station")) + nest.RelatedObjects = sorted( + nest.RelatedObjects, key=lambda x: ifcopenshell.util.element.get_pset(x, name="Pset_Stationing", prop="Station") + ) if len(referent.Positions) == 0: rel_positions = file.createIfcRelPositions( diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py index ffbd6b0870..06c1ef9fa8 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_vertical_layout.py @@ -54,18 +54,17 @@ def _move_vertical_layout_to_child_alignment( ifcopenshell.api.aggregate.assign_object(file, products=[child_alignment], relating_object=parent_alignment) # move all referents positioning segments of the vertical layout to the referent nest of the child alignment - child_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,child_alignment) - parent_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,parent_alignment) + child_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, child_alignment) + parent_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, parent_alignment) for referent in parent_referent_nest.RelatedObjects: for product in referent.Positions[0].RelatedProducts: if product.is_a("IfcAlignmentSegment") and product.Nests[0].RelatingObject == vertical_layout: - #ifcopenshell.api.nest.change_nest(file,referent,child_alignment) - this doesn't work because referent is assigned to child_alignment.IsNestedBy[0].RelatedObjects + # ifcopenshell.api.nest.change_nest(file,referent,child_alignment) - this doesn't work because referent is assigned to child_alignment.IsNestedBy[0].RelatedObjects # and it needs to be assigned to child_alignment.IsNestedBy[1].RelatedObjects # move the referent manually - unassign it and add it to the child alignment's referent nest - ifcopenshell.api.nest.unassign_object(file,[referent]) + ifcopenshell.api.nest.unassign_object(file, [referent]) child_referent_nest.RelatedObjects += (referent,) - # if the parent alignment has a representation, move the Axis/Curve3D represention to the child alignment base_curve = ifcopenshell.api.alignment.get_basis_curve(parent_alignment) if base_curve: diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py index fbb159426a..fc2fcb2c0e 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py @@ -233,7 +233,9 @@ def add_zero_length_segment(file: ifcopenshell.file, layout: entity_instance, in alignment = ifcopenshell.api.alignment.get_alignment(layout) station = ifcopenshell.api.alignment.get_alignment_start_station(file, alignment) name = f"{_get_segment_start_point_label(zero_length_curve_segment,None)} ({ifcopenshell.util.alignment.station_as_string(file,station)})" - referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, station, name, zero_length_curve_segment) + referent = ifcopenshell.api.alignment.add_stationing_referent( + file, alignment, 0.0, station, name, zero_length_curve_segment + ) referent.Description = f"Positions zero length segment {zero_length_curve_segment.id()}" return True diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py index af106a584b..cd707920c0 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create.py @@ -79,7 +79,7 @@ def create( if include_geometry: _create_geometric_representation(file, alignment) - + name = ifcopenshell.util.alignment.station_as_string(file, start_station) referent = ifcopenshell.api.alignment.add_stationing_referent( file, alignment, 0.0, start_station, name, alignment diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py index d8c48d1b3c..1048f1fa69 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/create_as_polyline.py @@ -142,7 +142,6 @@ def create_as_polyline( # define stationing name = ifcopenshell.util.alignment.station_as_string(file, start_station) referent = ifcopenshell.api.alignment.add_stationing_referent(file, alignment, 0.0, start_station, name, alignment) - ifcopenshell.api.nest.reorder_nesting(file, referent, -1, 0) # IFC 4.1.4.1.1 Alignment Aggregation To Project project = file.by_type("IfcProject")[0] diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py index 297d32a7e6..b57b787e38 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/get_referent_nest.py @@ -29,10 +29,8 @@ def get_referent_nest(file: ifcopenshell.file, alignment: entity_instance) -> en :return: Returns the IfcRelNests. """ if not alignment.is_a("IfcAlignment"): - raise TypeError( - f"Expected IfcAlignment, instead received {alignment.is_a()}" - ) - + raise TypeError(f"Expected IfcAlignment, instead received {alignment.is_a()}") + for nest in alignment.IsNestedBy: for related_object in nest.RelatedObjects: if related_object.is_a("IfcReferent"): diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py b/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py index 0e8731d5f2..49cbd70367 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_stationing_to_alignment.py @@ -39,17 +39,14 @@ def test_add_stationing_to_alignment(): alignment = ifcopenshell.api.alignment.create(file, "TestAlignment", start_station=2000.0) - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) referent = referent_nest.RelatedObjects[0] assert referent.PredefinedType == "STATION" assert referent.Name == "2+000.000" assert ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing") - assert ( - ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing", prop="Station") - == 2000.0 - ) + assert ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing", prop="Station") == 2000.0 assert referent.ObjectPlacement != None -test_add_stationing_to_alignment() \ No newline at end of file +test_add_stationing_to_alignment() diff --git a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py index 7d03dbcc2e..243188866c 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py +++ b/src/ifcopenshell-python/test/api/alignment/test_add_vertical_alignment.py @@ -36,7 +36,7 @@ def test_add_vertical_alignment(): layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) assert len(layout_nest.RelatedObjects) == 1 assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal") - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) assert len(referent_nest.RelatedObjects) == 2 assert referent_nest.RelatedObjects[0].is_a("IfcReferent") diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py index 1b088afd56..bd3a25faed 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py +++ b/src/ifcopenshell-python/test/api/alignment/test_create_by_pi_method.py @@ -51,7 +51,7 @@ def test_create_by_pi_method(): layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment) assert len(layout_nest.RelatedObjects) == 2 - referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment) + referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment) assert len(referent_nest.RelatedObjects) == 19 horizontal_layout = ifcopenshell.api.alignment.get_horizontal_layout(alignment) diff --git a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py index a99afd8e55..2e0e50a683 100644 --- a/src/ifcopenshell-python/test/api/alignment/test_referent_names.py +++ b/src/ifcopenshell-python/test/api/alignment/test_referent_names.py @@ -107,6 +107,6 @@ def test_with_default_names(default_names_alignment): def test_with_callbacks(callback_alignment): referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, callback_alignment) - expected = ["A","Q","Z","a","q","z"] + expected = ["A", "Q", "Z", "a", "q", "z"] for r in referent_nest.RelatedObjects: assert [x in r.Name for x in expected] From da9be7cff0f8ac8bc888b273a1d5f4703463ba81 Mon Sep 17 00:00:00 2001 From: smr <67860835+smr02@users.noreply.github.com> Date: Thu, 28 Aug 2025 23:27:57 +0200 Subject: [PATCH 38/39] Fix PythonOCC >=7.8.0 compatibility in serialize_shape function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves issue #6099: PythonOCC >=7.8.0 changed WriteToString() method signature, causing TypeError in ifcopenshell.geom.serialise(). This fix uses signature inspection to detect the method signature: - For PythonOCC < 7.8.0: Use WriteToString() (no parameters) - For PythonOCC >= 7.8.0: Fall back to Write() method - Graceful handling of signature inspection failures 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../ifcopenshell/geom/occ_utils.py | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py b/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py index eb3fa7ac52..7d19981a8b 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py @@ -18,6 +18,7 @@ from __future__ import annotations +import inspect import random import operator import warnings @@ -225,10 +226,24 @@ def serialize_shape(shape): shapes.SetFormatNb(2) shapes.Add(shape) + + # Check if WriteToString method exists and has the correct signature + # In PythonOCC >= 7.8.0, WriteToString signature changed and requires additional arguments if hasattr(shapes, "WriteToString"): - return shapes.WriteToString() - else: - return shapes.Write() + try: + # Try to get the method signature + sig = inspect.signature(shapes.WriteToString) + # If WriteToString has no parameters (just self), use it + # This works for PythonOCC < 7.8.0 + if len(sig.parameters) == 0: + return shapes.WriteToString() + except (ValueError, TypeError): + # If signature inspection fails, fall through to Write() method + pass + + # Fall back to Write() method for newer PythonOCC versions (>= 7.8.0) + # or when WriteToString is not available/compatible + return shapes.Write() def create_shape_from_serialization( From 67fb56966960392c632721bdc9805415afa72fe6 Mon Sep 17 00:00:00 2001 From: smr <67860835+smr02@users.noreply.github.com> Date: Thu, 28 Aug 2025 23:35:50 +0200 Subject: [PATCH 39/39] style: fix formatting with black --- src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py b/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py index 7d19981a8b..9835b48696 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/occ_utils.py @@ -226,7 +226,7 @@ def serialize_shape(shape): shapes.SetFormatNb(2) shapes.Add(shape) - + # Check if WriteToString method exists and has the correct signature # In PythonOCC >= 7.8.0, WriteToString signature changed and requires additional arguments if hasattr(shapes, "WriteToString"): @@ -240,7 +240,7 @@ def serialize_shape(shape): except (ValueError, TypeError): # If signature inspection fails, fall through to Write() method pass - + # Fall back to Write() method for newer PythonOCC versions (>= 7.8.0) # or when WriteToString is not available/compatible return shapes.Write()