diff --git a/fastkml/geometry.py b/fastkml/geometry.py
index 84160499..e0827b44 100644
--- a/fastkml/geometry.py
+++ b/fastkml/geometry.py
@@ -856,6 +856,17 @@ def __bool__(self) -> bool:
"""
return bool(self.geometry)
+ def __repr__(self) -> str:
+ """Create a string (c)representation for OuterBoundaryIs."""
+ return (
+ f"{self.__class__.__module__}.{self.__class__.__name__}("
+ f"ns={self.ns!r}, "
+ f"name_spaces={self.name_spaces!r}, "
+ f"kml_geometry={self.kml_geometry!r}, "
+ f"**{self._get_splat()},"
+ ")"
+ )
+
@classmethod
def get_tag_name(cls) -> str:
"""
@@ -961,6 +972,17 @@ def __bool__(self) -> bool:
"""Return True if any of the inner boundary geometries exist."""
return any(b.geometry for b in self.kml_geometries)
+ def __repr__(self) -> str:
+ """Create a string (c)representation for InnerBoundaryIs."""
+ return (
+ f"{self.__class__.__module__}.{self.__class__.__name__}("
+ f"ns={self.ns!r}, "
+ f"name_spaces={self.name_spaces!r}, "
+ f"kml_geometries={self.kml_geometries!r}, "
+ f"**{self._get_splat()},"
+ ")"
+ )
+
@classmethod
def get_tag_name(cls) -> str:
"""Return the tag name of the element."""
diff --git a/fastkml/kml.py b/fastkml/kml.py
index 05446dea..08687679 100644
--- a/fastkml/kml.py
+++ b/fastkml/kml.py
@@ -63,7 +63,7 @@ class KML(_XMLObject):
_default_nsid = config.KML
- _features: List[kml_children]
+ features: List[kml_children]
ns: str
def __init__(
diff --git a/fastkml/styles.py b/fastkml/styles.py
index 24da2951..d6a4c930 100644
--- a/fastkml/styles.py
+++ b/fastkml/styles.py
@@ -636,7 +636,11 @@ def __bool__(self) -> bool:
bool: True if the width is not None, False otherwise.
"""
- return self.width is not None
+ return (
+ self.width is not None
+ or self.color is not None
+ or self.color_mode is not None
+ )
registry.register(
@@ -739,7 +743,12 @@ def __bool__(self) -> bool:
bool: True if the style has a fill or outline, False otherwise.
"""
- return self.fill is not None or self.outline is not None
+ return (
+ self.fill is not None
+ or self.outline is not None
+ or self.color is not None
+ or self.color_mode is not None
+ )
registry.register(
diff --git a/pyproject.toml b/pyproject.toml
index f194d40b..e716ecae 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -263,6 +263,9 @@ select = [
"tests/oldunit_test.py" = [
"E501",
]
+"tests/repr_eq_test.py" = [
+ "E501",
+]
[tool.ruff.lint.isort]
force-single-line = true
diff --git a/tests/geometries/coordinates_test.py b/tests/geometries/coordinates_test.py
index 7358aca3..9b8074e1 100644
--- a/tests/geometries/coordinates_test.py
+++ b/tests/geometries/coordinates_test.py
@@ -46,6 +46,24 @@ def test_coordinates_from_string(self) -> None:
assert coordinates.coords == [(0, 0), (1, 0), (1, 1), (0, 0)]
+ def test_coordinates_from_string_with_whitespace(self) -> None:
+ """Test the from_string method with whitespace."""
+ coordinates = Coordinates.class_from_string(
+ '\n'
+ "-123.9404499372,49.169275246690,17 -123.940493701601,49.1694596207446,17 "
+ "-123.940356261489,49.16947180231761,17 -123.940306243,49.169291706171,17 "
+ "-123.940449937288,49.16927524669021,17 \n"
+ "",
+ )
+
+ assert coordinates.coords == [
+ (-123.9404499372, 49.16927524669, 17.0),
+ (-123.940493701601, 49.1694596207446, 17.0),
+ (-123.940356261489, 49.16947180231761, 17.0),
+ (-123.940306243, 49.169291706171, 17.0),
+ (-123.940449937288, 49.16927524669021, 17.0),
+ ]
+
class TestCoordinatesLxml(Lxml, TestCoordinates):
pass
diff --git a/tests/repr_eq_test.py b/tests/repr_eq_test.py
new file mode 100644
index 00000000..4e0a39f3
--- /dev/null
+++ b/tests/repr_eq_test.py
@@ -0,0 +1,1960 @@
+# Copyright (C) 2024 Christian Ledermann
+#
+# This library 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 2.1 of the License, or (at your option)
+# any later version.
+#
+# This library 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 this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+"""Test the __repr__ and __eq__ methods."""
+import difflib
+from textwrap import wrap
+from typing import Final
+
+from pygeoif.geometry import LinearRing
+from pygeoif.geometry import LineString
+from pygeoif.geometry import Point
+from pygeoif.geometry import Polygon
+
+import fastkml
+from fastkml.enums import AltitudeMode
+from fastkml.enums import PairKey
+from tests.base import Lxml
+from tests.base import StdLibrary
+
+eval_locals = {
+ "Point": Point,
+ "Polygon": Polygon,
+ "LineString": LineString,
+ "LinearRing": LinearRing,
+ "AltitudeMode": AltitudeMode,
+ "PairKey": PairKey,
+ "fastkml": fastkml,
+}
+
+
+class TestRepr(StdLibrary):
+ clean_doc: Final = fastkml.kml.KML(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ features=[
+ fastkml.containers.Document(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="doc-001",
+ target_id="",
+ name="Vestibulum eleifend lobortis lorem.",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description=None,
+ view=None,
+ times=None,
+ style_url=None,
+ styles=[
+ fastkml.styles.Style(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="style-001",
+ target_id="",
+ styles=[
+ fastkml.styles.IconStyle(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ color=None,
+ color_mode=None,
+ scale=None,
+ heading=None,
+ icon=fastkml.links.Icon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ href="http://barcelona.galdos.local/svn1/sqa/ets-kml/main/test/data/ogc-kml/images/red-stars.png",
+ refresh_mode=None,
+ refresh_interval=None,
+ view_refresh_mode=None,
+ view_refresh_time=None,
+ view_bound_scale=None,
+ view_format=None,
+ http_query=None,
+ ),
+ hot_spot=None,
+ ),
+ ],
+ ),
+ fastkml.styles.Style(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="style-002",
+ target_id="",
+ styles=[
+ fastkml.styles.IconStyle(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ color=None,
+ color_mode=None,
+ scale=None,
+ heading=None,
+ icon=fastkml.links.Icon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ href="http://barcelona.galdos.local/svn1/sqa/ets-kml/main/test/data/ogc-kml/images/wht-blank.png",
+ refresh_mode=None,
+ refresh_interval=None,
+ view_refresh_mode=None,
+ view_refresh_time=None,
+ view_bound_scale=None,
+ view_format=None,
+ http_query=None,
+ ),
+ hot_spot=None,
+ ),
+ ],
+ ),
+ fastkml.styles.Style(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="khStyle712",
+ target_id="",
+ styles=[
+ fastkml.styles.IconStyle(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="khIconStyle716",
+ target_id="",
+ color=None,
+ color_mode=None,
+ scale=None,
+ heading=None,
+ icon=fastkml.links.Icon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ href="http://barcelona.galdos.local/svn1/sqa/ets-kml/main/test/data/ogc-kml/images/9.png",
+ refresh_mode=None,
+ refresh_interval=None,
+ view_refresh_mode=None,
+ view_refresh_time=None,
+ view_bound_scale=None,
+ view_format=None,
+ http_query=None,
+ ),
+ hot_spot=None,
+ ),
+ ],
+ ),
+ fastkml.styles.Style(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="khStyle887",
+ target_id="",
+ styles=[
+ fastkml.styles.LineStyle(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="khLineStyle890",
+ target_id="",
+ color="7fffffff",
+ color_mode=None,
+ width=None,
+ ),
+ fastkml.styles.PolyStyle(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="khPolyStyle889",
+ target_id="",
+ color="7fa7ce9e",
+ color_mode=None,
+ fill=None,
+ outline=None,
+ ),
+ ],
+ ),
+ fastkml.styles.StyleMap(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="stylemap-001",
+ target_id="",
+ pairs=[
+ fastkml.styles.Pair(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ key=PairKey.normal,
+ style=fastkml.styles.StyleUrl(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ url="#style-002",
+ ),
+ ),
+ fastkml.styles.Pair(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ key=PairKey.highlight,
+ style=fastkml.styles.StyleUrl(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ url="#style-001",
+ ),
+ ),
+ ],
+ ),
+ ],
+ region=None,
+ extended_data=None,
+ features=[
+ fastkml.containers.Folder(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="Folder-001",
+ target_id="",
+ name="Nanaimo, BC",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description=None,
+ view=fastkml.views.LookAt(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ longitude=-123.9336542173363,
+ latitude=49.16692307094711,
+ altitude=None,
+ heading=-126.0570028967645,
+ tilt=61.61116895973212,
+ range=359.3753895394523,
+ altitude_mode=AltitudeMode.relative_to_ground,
+ time_primitive=None,
+ ),
+ times=None,
+ style_url=None,
+ styles=[],
+ region=None,
+ extended_data=None,
+ features=[
+ fastkml.containers.Folder(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="Downtown Virtual Tours",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description=None,
+ view=None,
+ times=None,
+ style_url=None,
+ styles=[],
+ region=None,
+ extended_data=None,
+ features=[
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="HBC Bastion",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description='Launch Virtual Tour',
+ view=None,
+ times=None,
+ style_url=fastkml.styles.StyleUrl(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ url="#khStyle712",
+ ),
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.Point(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ altitude_mode=AltitudeMode.relative_to_ground,
+ kml_coordinates=fastkml.geometry.Coordinates(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ coords=[
+ (-123.93563168, 49.16716103, 5.0),
+ ],
+ ),
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="Building",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description=None,
+ view=None,
+ times=None,
+ style_url=fastkml.styles.StyleUrl(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ url="#khStyle887",
+ ),
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.Polygon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=True,
+ tessellate=None,
+ altitude_mode=AltitudeMode.absolute,
+ outer_boundary_is=fastkml.geometry.OuterBoundaryIs(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ kml_geometry=fastkml.geometry.LinearRing(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ tessellate=None,
+ altitude_mode=None,
+ geometry=LinearRing(
+ (
+ (
+ -123.940449937288,
+ 49.16927524669021,
+ 17.0,
+ ),
+ (
+ -123.940493701601,
+ 49.1694596207446,
+ 17.0,
+ ),
+ (
+ -123.940356261489,
+ 49.16947180231761,
+ 17.0,
+ ),
+ (
+ -123.940306243823,
+ 49.1692917061711,
+ 17.0,
+ ),
+ (
+ -123.940449937288,
+ 49.16927524669021,
+ 17.0,
+ ),
+ ),
+ ),
+ ),
+ ),
+ inner_boundary_is=None,
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="Building",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description=None,
+ view=None,
+ times=None,
+ style_url=fastkml.styles.StyleUrl(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ url="#khStyle887",
+ ),
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.Polygon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=True,
+ tessellate=None,
+ altitude_mode=AltitudeMode.absolute,
+ outer_boundary_is=fastkml.geometry.OuterBoundaryIs(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ kml_geometry=fastkml.geometry.LinearRing(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ tessellate=None,
+ altitude_mode=None,
+ geometry=LinearRing(
+ (
+ (
+ -123.940122952744,
+ 49.1691287039003,
+ 18.0,
+ ),
+ (
+ -123.940137225952,
+ 49.16920143662431,
+ 18.0,
+ ),
+ (
+ -123.939995940886,
+ 49.16921364907441,
+ 18.0,
+ ),
+ (
+ -123.939979331833,
+ 49.16914300389781,
+ 18.0,
+ ),
+ (
+ -123.940122952744,
+ 49.1691287039003,
+ 18.0,
+ ),
+ ),
+ ),
+ ),
+ ),
+ inner_boundary_is=None,
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="Building",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description=None,
+ view=None,
+ times=None,
+ style_url=fastkml.styles.StyleUrl(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ url="#khStyle887",
+ ),
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.Polygon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=True,
+ tessellate=None,
+ altitude_mode=AltitudeMode.absolute,
+ outer_boundary_is=fastkml.geometry.OuterBoundaryIs(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ kml_geometry=fastkml.geometry.LinearRing(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ tessellate=None,
+ altitude_mode=None,
+ geometry=LinearRing(
+ (
+ (
+ -123.940353238527,
+ 49.1688284179789,
+ 15.0,
+ ),
+ (
+ -123.940328496557,
+ 49.1688539816849,
+ 15.0,
+ ),
+ (
+ -123.940305627051,
+ 49.1688410371204,
+ 15.0,
+ ),
+ (
+ -123.94029136599,
+ 49.1688525752424,
+ 15.0,
+ ),
+ (
+ -123.940275724243,
+ 49.16884496803361,
+ 15.0,
+ ),
+ (
+ -123.940267212761,
+ 49.16885547002801,
+ 15.0,
+ ),
+ (
+ -123.940250998683,
+ 49.1688475077284,
+ 15.0,
+ ),
+ (
+ -123.94024045302,
+ 49.1688581162214,
+ 15.0,
+ ),
+ (
+ -123.940221737029,
+ 49.1688494547939,
+ 15.0,
+ ),
+ (
+ -123.940211083364,
+ 49.1688603339744,
+ 15.0,
+ ),
+ (
+ -123.940178900168,
+ 49.1688453966693,
+ 15.0,
+ ),
+ (
+ -123.940163692655,
+ 49.1688607198336,
+ 15.0,
+ ),
+ (
+ -123.940136059186,
+ 49.1688470945275,
+ 15.0,
+ ),
+ (
+ -123.940162391523,
+ 49.1688218776622,
+ 15.0,
+ ),
+ (
+ -123.940122367227,
+ 49.1688289487997,
+ 15.0,
+ ),
+ (
+ -123.940128827323,
+ 49.1688475131544,
+ 15.0,
+ ),
+ (
+ -123.940088186399,
+ 49.16885189119151,
+ 15.0,
+ ),
+ (
+ -123.940058889981,
+ 49.1687743342294,
+ 15.0,
+ ),
+ (
+ -123.940146366884,
+ 49.16876417866831,
+ 15.0,
+ ),
+ (
+ -123.940150570466,
+ 49.16876513375031,
+ 15.0,
+ ),
+ (
+ -123.940183311773,
+ 49.16875578354081,
+ 15.0,
+ ),
+ (
+ -123.940200543746,
+ 49.168763737562,
+ 15.0,
+ ),
+ (
+ -123.940211624266,
+ 49.16875150585231,
+ 15.0,
+ ),
+ (
+ -123.940229767887,
+ 49.1687598121941,
+ 15.0,
+ ),
+ (
+ -123.940240426635,
+ 49.1687492027812,
+ 15.0,
+ ),
+ (
+ -123.940256088782,
+ 49.1687578890722,
+ 15.0,
+ ),
+ (
+ -123.940267772273,
+ 49.1687476310603,
+ 15.0,
+ ),
+ (
+ -123.940282259105,
+ 49.1687539885572,
+ 15.0,
+ ),
+ (
+ -123.940301511045,
+ 49.1687371934515,
+ 15.0,
+ ),
+ (
+ -123.940335907902,
+ 49.1687555303004,
+ 15.0,
+ ),
+ (
+ -123.940313690715,
+ 49.1687770262802,
+ 15.0,
+ ),
+ (
+ -123.940345414677,
+ 49.1687916075398,
+ 15.0,
+ ),
+ (
+ -123.940321043389,
+ 49.16881285125181,
+ 15.0,
+ ),
+ (
+ -123.940353238527,
+ 49.1688284179789,
+ 15.0,
+ ),
+ ),
+ ),
+ ),
+ ),
+ inner_boundary_is=None,
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="Building",
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description=None,
+ view=None,
+ times=None,
+ style_url=fastkml.styles.StyleUrl(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ url="#khStyle887",
+ ),
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.Polygon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=True,
+ tessellate=None,
+ altitude_mode=AltitudeMode.absolute,
+ outer_boundary_is=fastkml.geometry.OuterBoundaryIs(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ kml_geometry=fastkml.geometry.LinearRing(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ tessellate=None,
+ altitude_mode=None,
+ geometry=LinearRing(
+ (
+ (
+ -123.935755404797,
+ 49.1660852779118,
+ 25.0,
+ ),
+ (
+ -123.93582067022,
+ 49.1660311465527,
+ 25.0,
+ ),
+ (
+ -123.935800492118,
+ 49.1660168302278,
+ 25.0,
+ ),
+ (
+ -123.936039795526,
+ 49.165822245592,
+ 25.0,
+ ),
+ (
+ -123.936064357298,
+ 49.1658350873476,
+ 25.0,
+ ),
+ (
+ -123.936179746682,
+ 49.1657457438265,
+ 25.0,
+ ),
+ (
+ -123.936369720217,
+ 49.1657486103712,
+ 25.0,
+ ),
+ (
+ -123.936512648837,
+ 49.1658300134091,
+ 25.0,
+ ),
+ (
+ -123.936229647663,
+ 49.16604662814821,
+ 25.0,
+ ),
+ (
+ -123.936209525388,
+ 49.1660352793624,
+ 25.0,
+ ),
+ (
+ -123.935976452504,
+ 49.16621236606521,
+ 25.0,
+ ),
+ (
+ -123.935755404797,
+ 49.1660852779118,
+ 25.0,
+ ),
+ ),
+ ),
+ ),
+ ),
+ inner_boundary_is=fastkml.geometry.InnerBoundaryIs(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ kml_geometries=[
+ fastkml.geometry.LinearRing(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ tessellate=None,
+ altitude_mode=None,
+ geometry=LinearRing(
+ (
+ (
+ -123.935774273544,
+ 49.1660841356946,
+ 25.0,
+ ),
+ (
+ -123.935975080821,
+ 49.16619960613241,
+ 25.0,
+ ),
+ (
+ -123.936199121569,
+ 49.1660294278725,
+ 25.0,
+ ),
+ (
+ -123.936199903082,
+ 49.16602888191441,
+ 25.0,
+ ),
+ (
+ -123.936200797694,
+ 49.1660283350392,
+ 25.0,
+ ),
+ (
+ -123.936201694,
+ 49.16602787808731,
+ 25.0,
+ ),
+ (
+ -123.936202592002,
+ 49.16602751105871,
+ 25.0,
+ ),
+ (
+ -123.936203603103,
+ 49.1660271431131,
+ 25.0,
+ ),
+ (
+ -123.936204615898,
+ 49.16602686509071,
+ 25.0,
+ ),
+ (
+ -123.936205743487,
+ 49.1660266760745,
+ 25.0,
+ ),
+ (
+ -123.936206871076,
+ 49.1660264870584,
+ 25.0,
+ ),
+ (
+ -123.93620800036,
+ 49.16602638796551,
+ 25.0,
+ ),
+ (
+ -123.936209129645,
+ 49.1660262888725,
+ 25.0,
+ ),
+ (
+ -123.936210260625,
+ 49.1660262797028,
+ 25.0,
+ ),
+ (
+ -123.9362113933,
+ 49.1660263604563,
+ 25.0,
+ ),
+ (
+ -123.936212527671,
+ 49.16602653113311,
+ 25.0,
+ ),
+ (
+ -123.936213548944,
+ 49.1660267027268,
+ 25.0,
+ ),
+ (
+ -123.93621468501,
+ 49.16602696332681,
+ 25.0,
+ ),
+ (
+ -123.936215707978,
+ 49.1660272248437,
+ 25.0,
+ ),
+ (
+ -123.936216732642,
+ 49.1660275762838,
+ 25.0,
+ ),
+ (
+ -123.936217645904,
+ 49.16602801856421,
+ 25.0,
+ ),
+ (
+ -123.936218559165,
+ 49.16602846084461,
+ 25.0,
+ ),
+ (
+ -123.936228164518,
+ 49.1660339590587,
+ 25.0,
+ ),
+ (
+ -123.936493324423,
+ 49.1658309795689,
+ 25.0,
+ ),
+ (
+ -123.936364459423,
+ 49.1657575567936,
+ 25.0,
+ ),
+ (
+ -123.936186026871,
+ 49.1657548664825,
+ 25.0,
+ ),
+ (
+ -123.936074872463,
+ 49.1658408480101,
+ 25.0,
+ ),
+ (
+ -123.936074315451,
+ 49.1658413022105,
+ 25.0,
+ ),
+ (
+ -123.936073532244,
+ 49.1658417582446,
+ 25.0,
+ ),
+ (
+ -123.936072637635,
+ 49.1658423051187,
+ 25.0,
+ ),
+ (
+ -123.936071739635,
+ 49.1658426721463,
+ 25.0,
+ ),
+ (
+ -123.936070728538,
+ 49.16584304009081,
+ 25.0,
+ ),
+ (
+ -123.93606971744,
+ 49.1658434080353,
+ 25.0,
+ ),
+ (
+ -123.936068589855,
+ 49.16584359705011,
+ 25.0,
+ ),
+ (
+ -123.936067577062,
+ 49.16584387507131,
+ 25.0,
+ ),
+ (
+ -123.936066447782,
+ 49.1658439741628,
+ 25.0,
+ ),
+ (
+ -123.936065318501,
+ 49.1658440732543,
+ 25.0,
+ ),
+ (
+ -123.936064187525,
+ 49.1658440824226,
+ 25.0,
+ ),
+ (
+ -123.936063054855,
+ 49.1658440016676,
+ 25.0,
+ ),
+ (
+ -123.936061922184,
+ 49.1658439209126,
+ 25.0,
+ ),
+ (
+ -123.936060787817,
+ 49.16584375023431,
+ 25.0,
+ ),
+ (
+ -123.936059653451,
+ 49.1658435795561,
+ 25.0,
+ ),
+ (
+ -123.936058628792,
+ 49.1658432281144,
+ 25.0,
+ ),
+ (
+ -123.936057605828,
+ 49.1658429665961,
+ 25.0,
+ ),
+ (
+ -123.936056692572,
+ 49.1658425243144,
+ 25.0,
+ ),
+ (
+ -123.936055779315,
+ 49.1658420820327,
+ 25.0,
+ ),
+ (
+ -123.936041957201,
+ 49.165834909184,
+ 25.0,
+ ),
+ (
+ -123.93581858271,
+ 49.1660164138055,
+ 25.0,
+ ),
+ (
+ -123.935830850283,
+ 49.1660251282083,
+ 25.0,
+ ),
+ (
+ -123.93583153904,
+ 49.1660256622482,
+ 25.0,
+ ),
+ (
+ -123.935832229491,
+ 49.1660262862113,
+ 25.0,
+ ),
+ (
+ -123.935832806845,
+ 49.166026911091,
+ 25.0,
+ ),
+ (
+ -123.9358332711,
+ 49.16602753688741,
+ 25.0,
+ ),
+ (
+ -123.935833737051,
+ 49.1660282526069,
+ 25.0,
+ ),
+ (
+ -123.935833976805,
+ 49.16602897015971,
+ 25.0,
+ ),
+ (
+ -123.935834216559,
+ 49.1660296877125,
+ 25.0,
+ ),
+ (
+ -123.935834343216,
+ 49.1660304061819,
+ 25.0,
+ ),
+ (
+ -123.935834471567,
+ 49.1660312145745,
+ 25.0,
+ ),
+ (
+ -123.935834372027,
+ 49.1660319348771,
+ 25.0,
+ ),
+ (
+ -123.935834272488,
+ 49.16603265517961,
+ 25.0,
+ ),
+ (
+ -123.935833946752,
+ 49.16603337731541,
+ 25.0,
+ ),
+ (
+ -123.935833621016,
+ 49.16603409945121,
+ 25.0,
+ ),
+ (
+ -123.935833295281,
+ 49.166034821587,
+ 25.0,
+ ),
+ (
+ -123.935832741654,
+ 49.1660354556328,
+ 25.0,
+ ),
+ (
+ -123.935832188028,
+ 49.1660360896785,
+ 25.0,
+ ),
+ (
+ -123.935831521303,
+ 49.1660367246408,
+ 25.0,
+ ),
+ (
+ -123.935774273544,
+ 49.1660841356946,
+ 25.0,
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="General Motors Place",
+ visibility=None,
+ isopen=None,
+ atom_link=fastkml.atom.Link(
+ ns="{http://www.w3.org/2005/Atom}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ href="http://en.wikipedia.org/wiki/General_Motors_Place",
+ rel="related",
+ type="text/html",
+ hreflang="en",
+ title="Wikipedia entry",
+ length=None,
+ ),
+ atom_author=fastkml.atom.Author(
+ ns="{http://www.w3.org/2005/Atom}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ name="Phineas Fogg",
+ uri=None,
+ email=None,
+ ),
+ address=None,
+ phone_number="tel:+1-604-899-7400",
+ snippet=None,
+ description="General Motors Place (), sponsored by General Motors Canada,\n is an indoor arena at 800 Griffiths Way in Vancouver, British Columbia,\n Canada. Completed in 1995 at a cost of CAD $160 million in private\n financing, the arena is home to the Vancouver Canucks of the NHL, and\n was formerly home to the Vancouver Grizzlies of the NBA and the Vancouver\n Ravens of the NLL. The Grizzlies have since moved to Memphis. The arena\n seats 18,630 for ice hockey and 19,193 for basketball. It has 88 luxury suites,\n 12 hospitality suites, and 2,195 club seats. The arena replaced the\n Pacific Coliseum as the main venue for events in Vancouver.",
+ view=None,
+ times=None,
+ style_url=None,
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.Point(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ altitude_mode=None,
+ kml_coordinates=fastkml.geometry.Coordinates(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ coords=[(-123.1097, 49.2774, 0.0)],
+ ),
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="VFS",
+ target_id="",
+ name="Vancouver Film Studios",
+ visibility=None,
+ isopen=None,
+ atom_link=fastkml.atom.Link(
+ ns="{http://www.w3.org/2005/Atom}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ href="http://www.vancouverfilmstudios.com/",
+ rel="related",
+ type="text/html",
+ hreflang="en",
+ title="Welcome to Vancouver Film Studios",
+ length=None,
+ ),
+ atom_author=None,
+ address="3500 Cornett Rd, Vancouver, BC, Canada",
+ phone_number=None,
+ snippet=None,
+ description="Situated on nearly two city blocks of land just fifteen minutes from\n downtown Vancouver, British Columbia, Vancouver Film Studios (VFS) is\n Canada's premier motion picture production complex.",
+ view=fastkml.views.LookAt(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ longitude=-123.0281012076333,
+ latitude=49.26140654323342,
+ altitude=0.0,
+ heading=0.0,
+ tilt=51.96,
+ range=301.9568,
+ altitude_mode=AltitudeMode.relative_to_ground,
+ time_primitive=None,
+ ),
+ times=None,
+ style_url=None,
+ styles=[
+ fastkml.styles.StyleMap(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ pairs=[
+ fastkml.styles.Pair(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ key=PairKey.normal,
+ style=fastkml.styles.Style(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ styles=[
+ fastkml.styles.IconStyle(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ color=None,
+ color_mode=None,
+ scale=None,
+ heading=None,
+ icon=fastkml.links.Icon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ href="http://maps.google.com/mapfiles/kml/paddle/go.png",
+ refresh_mode=None,
+ refresh_interval=None,
+ view_refresh_mode=None,
+ view_refresh_time=None,
+ view_bound_scale=None,
+ view_format=None,
+ http_query=None,
+ ),
+ hot_spot=None,
+ ),
+ ],
+ ),
+ ),
+ fastkml.styles.Pair(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ key=PairKey.highlight,
+ style=fastkml.styles.Style(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ styles=[
+ fastkml.styles.IconStyle(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ color=None,
+ color_mode=None,
+ scale=1.3,
+ heading=None,
+ icon=fastkml.links.Icon(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ href="http://maps.google.com/mapfiles/kml/paddle/go.png",
+ refresh_mode=None,
+ refresh_interval=None,
+ view_refresh_mode=None,
+ view_refresh_time=None,
+ view_bound_scale=None,
+ view_format=None,
+ http_query=None,
+ ),
+ hot_spot=None,
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ],
+ region=None,
+ extended_data=fastkml.data.ExtendedData(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="ed-001",
+ target_id="",
+ elements=[
+ fastkml.data.Data(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="nStages",
+ value="13",
+ display_name="Number of sound stages",
+ ),
+ fastkml.data.Data(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="helipad",
+ value="yes",
+ display_name="Helipad?",
+ ),
+ ],
+ ),
+ kml_geometry=fastkml.geometry.Point(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ altitude_mode=None,
+ kml_coordinates=fastkml.geometry.Coordinates(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ coords=[(-123.028369, 49.26107900000001, 0.0)],
+ ),
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name=None,
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description="Navigation buoys in Vancouver harbour",
+ view=None,
+ times=None,
+ style_url=None,
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.MultiGeometry(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="geom-001",
+ target_id="",
+ kml_geometries=[
+ fastkml.geometry.Point(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="b385.5",
+ target_id="",
+ extrude=None,
+ altitude_mode=None,
+ kml_coordinates=fastkml.geometry.Coordinates(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ coords=[(-123.3215766, 49.2760338, 0.0)],
+ ),
+ ),
+ fastkml.geometry.Point(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="b386",
+ target_id="",
+ extrude=None,
+ altitude_mode=None,
+ kml_coordinates=fastkml.geometry.Coordinates(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ coords=[(-123.2643704, 49.3301853, 0.0)],
+ ),
+ ),
+ fastkml.geometry.Point(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="b386.3",
+ target_id="",
+ extrude=None,
+ altitude_mode=None,
+ kml_coordinates=fastkml.geometry.Coordinates(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ coords=[(-123.2477084, 49.2890857, 0.0)],
+ ),
+ ),
+ ],
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ name="Rivière des Outaouais",
+ visibility=None,
+ isopen=True,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description="Vue du ciel, la rivière des Outaouais est le principal élément naturel\n de la vallée du même nom. Cette splendide rivière, la deuxième plus\n grande dans l'est du Canada, possède un bassin hydrographique de 140 000\n km2 et s'étend sur plus de 1 271 km, en majeure partie dans le Bouclier\n canadien.",
+ view=None,
+ times=None,
+ style_url=None,
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.LineString(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="ed-003",
+ target_id="",
+ extrude=None,
+ tessellate=None,
+ altitude_mode=None,
+ geometry=LineString(
+ (
+ (-74.08, 45.45, 19.0),
+ (-74.25, 45.51, 23.0),
+ (-74.33, 45.51, 22.0),
+ (-74.36, 45.55, 22.0),
+ (-74.39, 45.57, 29.0),
+ (-74.44, 45.57, 35.0),
+ (-74.48, 45.6, 35.0),
+ (-74.52, 45.59, 32.0),
+ (-74.55, 45.6, 32.0),
+ (-74.6, 45.62, 32.0),
+ ),
+ ),
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="place-100",
+ target_id="",
+ name=None,
+ visibility=None,
+ isopen=None,
+ atom_link=None,
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description="Sampling loop",
+ view=None,
+ times=None,
+ style_url=None,
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=fastkml.geometry.LinearRing(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="",
+ target_id="",
+ extrude=None,
+ tessellate=False,
+ altitude_mode=None,
+ geometry=LinearRing(
+ (
+ (-65.679, 47.43),
+ (-65.73, 47.456),
+ (-65.72, 47.461),
+ (-65.669, 47.439),
+ (-65.679, 47.43),
+ ),
+ ),
+ ),
+ ),
+ fastkml.features.Placemark(
+ ns="{http://www.opengis.net/kml/2.2}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ id="VPL",
+ target_id="",
+ name="Vancouver Public Library",
+ visibility=None,
+ isopen=None,
+ atom_link=fastkml.atom.Link(
+ ns="{http://www.w3.org/2005/Atom}",
+ name_spaces={
+ "kml": "{http://www.opengis.net/kml/2.2}",
+ "atom": "{http://www.w3.org/2005/Atom}",
+ "gx": "{http://www.google.com/kml/ext/2.2}",
+ },
+ href="http://www.vpl.ca/",
+ rel="related",
+ type="text/html",
+ hreflang="en",
+ title="Vancouver Public Library - Home",
+ length=None,
+ ),
+ atom_author=None,
+ address=None,
+ phone_number=None,
+ snippet=None,
+ description="Funded by the City of Vancouver, Vancouver Public Library is the third\n largest public library system in Canada, with over 373,000 cardholders\n and more than 9 million items borrowed annually. Today, with exceptional\n collections, services and technologies offered at 22 branches and an\n extensive virtual library, VPL is accessible to all citizens of Vancouver.",
+ view=None,
+ times=None,
+ style_url=None,
+ styles=[],
+ region=None,
+ extended_data=None,
+ kml_geometry=None,
+ ),
+ ],
+ schemata=[],
+ ),
+ ],
+ )
+
+ def diff_compare(self, a: str, b: str) -> None:
+ """Compare two strings and print the differences."""
+ differ = difflib.Differ()
+ for line, d in enumerate(differ.compare(a.split(), b.split())):
+ if d[0] in ("+", "-"):
+ print(line, d) # noqa: T201
+
+ for i, chunk in enumerate(zip(wrap(a, 100), wrap(b, 100))):
+ if chunk[0] != chunk[1]:
+ print(i * 100) # noqa: T201
+ print(chunk[0]) # noqa: T201
+ print(chunk[1]) # noqa: T201
+
+ def test_repr(self) -> None:
+ """Test the __repr__ method."""
+ new_doc = eval(repr(self.clean_doc), {}, eval_locals) # noqa: S307
+
+ assert new_doc == self.clean_doc
+ assert repr(new_doc) == repr(self.clean_doc)
+
+ def test_str(self) -> None:
+ """Test the __str__ method."""
+ assert str(self.clean_doc) == self.clean_doc.to_string()
+
+ def test_eq_str_round_trip(self) -> None:
+ """Test the equality of the original and the round-tripped document."""
+ new_doc = fastkml.KML.class_from_string(self.clean_doc.to_string(precision=15))
+
+ assert str(self.clean_doc) == str(new_doc)
+ assert repr(new_doc) == repr(self.clean_doc)
+ # srict equality is not a given new_doc == self.clean_doc
+
+
+class TestReprLxml(Lxml, TestRepr):
+ """Test the __repr__ and __str__ methods of the KML document with lxml."""