Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

396 kml model #397

Merged
merged 20 commits into from
Dec 1, 2024
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9a653d2
Add KML Model element scaffold implementation with associated classes
cleder Nov 30, 2024
b4ba74f
add __bool__ and __repr__ for model classes
cleder Nov 30, 2024
1d80099
Add documentation for fastkml.model module and its members
cleder Nov 30, 2024
6e3febb
add attributes and registry registrations for KML Model classes
cleder Nov 30, 2024
cd1b723
refactor to allow for empty kml namespace
cleder Dec 1, 2024
df56d56
add ignore identifiers for typos in KML namespace
cleder Dec 1, 2024
f150e76
Merge branch 'develop' into 396-kml-model
cleder Dec 1, 2024
79e500f
fix typo
cleder Dec 1, 2024
e8ccb04
add default KML namespace identifier to model classes and implement h…
cleder Dec 1, 2024
aabc062
add geometry property to Model and Location classes; update registry …
cleder Dec 1, 2024
15f113f
add empty string to KML namespace identifiers to enable parsing kml f…
cleder Dec 1, 2024
e7e781e
update changelog for version 1.1.0; add support for ScreenOverlay and…
cleder Dec 1, 2024
31aa4dc
add default values for float properties in model registry and rename …
cleder Dec 1, 2024
8b5da4a
refactor boolean methods in model classes to clarify conditions for t…
cleder Dec 1, 2024
a85ea4c
add unit tests for Model class and update overlay test description
cleder Dec 1, 2024
7286d09
add note why validate=False when parsing undocumented elements
cleder Dec 1, 2024
cfd9994
add test model with missing location
cleder Dec 1, 2024
d38b096
improve readme
cleder Dec 1, 2024
9177191
add test when location is invalid
cleder Dec 1, 2024
abcc0d9
add test for handling invalid location in model
cleder Dec 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions _typos.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
[default]
extend-ignore-identifiers-re = [
"04AFE6060F147CE66FBD",
"Lod",
"lod",
]



[default.extend-words]
lod = "lod"
Lod = "Lod"
Expand Down
5 changes: 3 additions & 2 deletions docs/HISTORY.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
Changelog
=========

1.0.0dev0 (unreleased)
1.1.0 (unreleased)
----------------------

- Add support for ScreenOverlay
- Add support for ScreenOverlay and Model.
- allow parsing kml files without namespace declarations.


1.0 (2024/11/19)
Expand Down
9 changes: 9 additions & 0 deletions docs/fastkml.rst
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,15 @@ fastkml.mixins
:undoc-members:
:show-inheritance:

fastkml.model
--------------------

.. automodule:: fastkml.model
:members:
:undoc-members:
:show-inheritance:


fastkml.overlays
-----------------------

Expand Down
4 changes: 2 additions & 2 deletions docs/working_with_kml.rst
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ We need to register the attributes of the KML object to be able to parse it:
>>> registry.register(
... CascadingStyle,
... RegistryItem(
... ns_ids=("kml",),
... ns_ids=("kml", ""),
... attr_name="style",
... node_name="Style",
... classes=(Style,),
Expand Down Expand Up @@ -236,7 +236,7 @@ Now we can remove the CascadingStyle from the document and have a look at the re
<kml:displayMode>hide</kml:displayMode>
</kml:BalloonStyle>
</kml:Style>
<kml:Placemark id="04SAFE6060F147CE66FBD">
<kml:Placemark id="04AFE6060F147CE66FBD">
<kml:name>Ort1</kml:name>
<kml:LookAt>
<kml:longitude>10.06256752902339</kml:longitude>
Expand Down
4 changes: 2 additions & 2 deletions fastkml/containers.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ def get_style_by_url(self, style_url: str) -> Optional[Union[Style, StyleMap]]:
registry.register(
_Container,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="features",
node_name=(
"Folder,Placemark,Document,GroundOverlay,PhotoOverlay,ScreenOverlay,"
Expand All @@ -351,7 +351,7 @@ def get_style_by_url(self, style_url: str) -> Optional[Union[Style, StyleMap]]:
registry.register(
Document,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="schemata",
node_name="Schema",
classes=(Schema,),
Expand Down
6 changes: 3 additions & 3 deletions fastkml/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ def append(self, field: SimpleField) -> None:
registry.register(
Schema,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="fields",
node_name="SimpleField",
classes=(SimpleField,),
Expand Down Expand Up @@ -644,7 +644,7 @@ def append_data(self, data: SimpleData) -> None:
registry.register(
SchemaData,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="data",
node_name="SimpleData",
classes=(SimpleData,),
Expand Down Expand Up @@ -725,7 +725,7 @@ def __bool__(self) -> bool:
registry.register(
ExtendedData,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="elements",
node_name="Data,SchemaData",
classes=(
Expand Down
39 changes: 21 additions & 18 deletions fastkml/features.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
from fastkml.kml_base import _BaseObject
from fastkml.links import Link
from fastkml.mixins import TimeMixin
from fastkml.model import Model
from fastkml.registry import RegistryItem
from fastkml.registry import registry
from fastkml.styles import Style
Expand All @@ -78,6 +79,7 @@
LineString,
LinearRing,
Polygon,
Model,
MultiGeometry,
gx.MultiTrack,
gx.Track,
Expand Down Expand Up @@ -309,7 +311,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="name",
node_name="name",
classes=(str,),
Expand All @@ -320,7 +322,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="visibility",
node_name="visibility",
classes=(bool,),
Expand All @@ -332,7 +334,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="isopen",
node_name="open",
classes=(bool,),
Expand Down Expand Up @@ -366,7 +368,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="address",
node_name="address",
classes=(str,),
Expand All @@ -377,7 +379,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="phone_number",
node_name="phoneNumber",
classes=(str,),
Expand All @@ -388,7 +390,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="snippet",
node_name="Snippet",
classes=(Snippet,),
Expand All @@ -399,7 +401,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="description",
node_name="description",
classes=(str,),
Expand All @@ -410,7 +412,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="view",
node_name="Camera,LookAt",
classes=(
Expand All @@ -424,7 +426,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="times",
node_name="TimeSpan,TimeStamp",
classes=(
Expand All @@ -438,7 +440,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="style_url",
node_name="styleUrl",
classes=(StyleUrl,),
Expand All @@ -449,7 +451,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="styles",
node_name="Style,StyleMap",
classes=(
Expand All @@ -463,7 +465,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="region",
node_name="region",
classes=(Region,),
Expand All @@ -474,7 +476,7 @@ def __init__(
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="extended_data",
node_name="ExtendedData",
classes=(ExtendedData,),
Expand Down Expand Up @@ -662,10 +664,10 @@ def geometry(self) -> Optional[AnyGeometryType]:
registry.register(
Placemark,
RegistryItem(
ns_ids=("kml", "gx"),
ns_ids=("kml", "gx", ""),
attr_name="kml_geometry",
node_name=(
"Point,LineString,LinearRing,Polygon,MultiGeometry,"
"Point,LineString,LinearRing,Polygon,MultiGeometry,Model,"
"gx:MultiTrack,gx:Track"
),
classes=(
Expand All @@ -674,6 +676,7 @@ def geometry(self) -> Optional[AnyGeometryType]:
LinearRing,
Polygon,
MultiGeometry,
Model,
gx.MultiTrack,
gx.Track,
),
Expand Down Expand Up @@ -891,7 +894,7 @@ def __bool__(self) -> bool:
registry.register(
NetworkLink,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="refresh_visibility",
node_name="refreshVisibility",
classes=(bool,),
Expand All @@ -903,7 +906,7 @@ def __bool__(self) -> bool:
registry.register(
NetworkLink,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="fly_to_view",
node_name="flyToView",
classes=(bool,),
Expand All @@ -915,7 +918,7 @@ def __bool__(self) -> bool:
registry.register(
NetworkLink,
RegistryItem(
ns_ids=("kml",),
ns_ids=("kml", ""),
attr_name="link",
node_name="Link",
classes=(Link,),
Expand Down
Loading
Loading