Skip to content

Commit

Permalink
explicitly pass the namespace ids to be processed #318
Browse files Browse the repository at this point in the history
  • Loading branch information
cleder committed Jun 19, 2024
1 parent bed73f8 commit 40bee72
Show file tree
Hide file tree
Showing 19 changed files with 224 additions and 61 deletions.
9 changes: 9 additions & 0 deletions fastkml/atom.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
Link,
item=RegistryItem(
ns_ids=("atom",),
attr_name="href",
node_name="href",
classes=(str,),
Expand All @@ -174,6 +175,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
Link,
item=RegistryItem(
ns_ids=("atom",),
attr_name="rel",
node_name="rel",
classes=(str,),
Expand All @@ -184,6 +186,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
Link,
item=RegistryItem(
ns_ids=("atom",),
attr_name="type",
node_name="type",
classes=(str,),
Expand All @@ -194,6 +197,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
Link,
item=RegistryItem(
ns_ids=("atom",),
attr_name="hreflang",
node_name="hreflang",
classes=(str,),
Expand All @@ -205,6 +209,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
Link,
item=RegistryItem(
ns_ids=("atom",),
attr_name="title",
node_name="title",
classes=(str,),
Expand All @@ -215,6 +220,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
Link,
item=RegistryItem(
ns_ids=("atom",),
attr_name="length",
node_name="length",
classes=(int,),
Expand Down Expand Up @@ -286,6 +292,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
_Person,
item=RegistryItem(
ns_ids=("atom",),
attr_name="name",
node_name="name",
classes=(str,),
Expand All @@ -296,6 +303,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
_Person,
item=RegistryItem(
ns_ids=("atom",),
attr_name="uri",
node_name="uri",
classes=(str,),
Expand All @@ -306,6 +314,7 @@ def __eq__(self, other: object) -> bool:
registry.register(
_Person,
item=RegistryItem(
ns_ids=("atom",),
attr_name="email",
node_name="email",
classes=(str,),
Expand Down
15 changes: 10 additions & 5 deletions fastkml/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,17 +157,22 @@ def _get_kwargs(
name_spaces = {**config.NAME_SPACES, **name_spaces}
kwargs: Dict[str, Any] = {"ns": ns, "name_spaces": name_spaces}
for item in registry.get(cls):
kwargs.update(
item.get_kwarg(
for name_space in item.ns_ids:
# breakpoint()
kwarg = item.get_kwarg(
element=element,
ns=ns,
ns=name_spaces.get(name_space, ""),
name_spaces=name_spaces,
node_name=item.node_name,
kwarg=item.attr_name,
classes=item.classes,
strict=strict,
),
)
)
if kwarg:
kwargs.update(
kwarg,
)
break
return kwargs

@classmethod
Expand Down
2 changes: 2 additions & 0 deletions fastkml/containers.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ def get_style_by_url(self, style_url: str) -> Optional[Union[Style, StyleMap]]:
registry.register(
_Container,
RegistryItem(
ns_ids=("kml",),
attr_name="features",
node_name="Folder,Placemark,Document",
classes=(Folder, Placemark, Document),
Expand All @@ -272,6 +273,7 @@ def get_style_by_url(self, style_url: str) -> Optional[Union[Style, StyleMap]]:
registry.register(
Document,
RegistryItem(
ns_ids=("kml",),
attr_name="schemata",
node_name="Schema",
classes=(Schema,),
Expand Down
13 changes: 13 additions & 0 deletions fastkml/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ def __bool__(self) -> bool:
registry.register(
SimpleField,
RegistryItem(
ns_ids=("kml",),
attr_name="name",
node_name="name",
classes=(str,),
Expand All @@ -135,6 +136,7 @@ def __bool__(self) -> bool:
registry.register(
SimpleField,
RegistryItem(
ns_ids=("kml",),
attr_name="type",
node_name="type",
classes=(DataType,),
Expand All @@ -145,6 +147,7 @@ def __bool__(self) -> bool:
registry.register(
SimpleField,
RegistryItem(
ns_ids=("kml",),
attr_name="display_name",
node_name="displayName",
classes=(str,),
Expand Down Expand Up @@ -213,6 +216,7 @@ def append(self, field: SimpleField) -> None:
registry.register(
Schema,
RegistryItem(
ns_ids=("kml",),
attr_name="name",
node_name="name",
classes=(str,),
Expand All @@ -223,6 +227,7 @@ def append(self, field: SimpleField) -> None:
registry.register(
Schema,
RegistryItem(
ns_ids=("kml",),
attr_name="fields",
node_name="SimpleField",
classes=(SimpleField,),
Expand Down Expand Up @@ -285,6 +290,7 @@ def __bool__(self) -> bool:
registry.register(
Data,
RegistryItem(
ns_ids=("kml",),
attr_name="name",
node_name="name",
classes=(str,),
Expand All @@ -296,6 +302,7 @@ def __bool__(self) -> bool:
registry.register(
Data,
RegistryItem(
ns_ids=("kml",),
attr_name="value",
node_name="value",
classes=(str,),
Expand All @@ -306,6 +313,7 @@ def __bool__(self) -> bool:
registry.register(
Data,
RegistryItem(
ns_ids=("kml",),
attr_name="display_name",
node_name="displayName",
classes=(str,),
Expand Down Expand Up @@ -360,6 +368,7 @@ def __bool__(self) -> bool:
registry.register(
SimpleData,
RegistryItem(
ns_ids=("kml",),
attr_name="value",
node_name="value",
classes=(str,),
Expand All @@ -370,6 +379,7 @@ def __bool__(self) -> bool:
registry.register(
SimpleData,
RegistryItem(
ns_ids=("kml",),
attr_name="name",
node_name="name",
classes=(str,),
Expand Down Expand Up @@ -441,6 +451,7 @@ def append_data(self, data: SimpleData) -> None:
registry.register(
SchemaData,
RegistryItem(
ns_ids=("kml",),
attr_name="schema_url",
node_name="schemaUrl",
classes=(str,),
Expand All @@ -451,6 +462,7 @@ def append_data(self, data: SimpleData) -> None:
registry.register(
SchemaData,
RegistryItem(
ns_ids=("kml",),
attr_name="data",
node_name="SimpleData",
classes=(SimpleData,),
Expand Down Expand Up @@ -511,6 +523,7 @@ def __bool__(self) -> bool:
registry.register(
ExtendedData,
RegistryItem(
ns_ids=("kml",),
attr_name="elements",
node_name="Data,SchemaData",
classes=(
Expand Down
21 changes: 21 additions & 0 deletions fastkml/features.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ def __bool__(self) -> bool:
registry.register(
Snippet,
RegistryItem(
ns_ids=("kml",),
attr_name="text",
node_name="",
classes=(str,),
Expand All @@ -143,6 +144,7 @@ def __bool__(self) -> bool:
registry.register(
Snippet,
RegistryItem(
ns_ids=("kml",),
attr_name="max_lines",
node_name="maxLines",
classes=(int,),
Expand Down Expand Up @@ -328,6 +330,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="name",
node_name="name",
classes=(str,),
Expand All @@ -338,6 +341,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="visibility",
node_name="visibility",
classes=(bool,),
Expand All @@ -348,6 +352,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="isopen",
node_name="open",
classes=(bool,),
Expand All @@ -358,6 +363,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="atom_link",
node_name="atom:link",
classes=(atom.Link,),
Expand All @@ -368,6 +374,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="atom_author",
node_name="atom:author",
classes=(atom.Author,),
Expand All @@ -378,6 +385,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="address",
node_name="address",
classes=(str,),
Expand All @@ -388,6 +396,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="phone_number",
node_name="phoneNumber",
classes=(str,),
Expand All @@ -398,6 +407,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="snippet",
node_name="Snippet",
classes=(Snippet,),
Expand All @@ -408,6 +418,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="description",
node_name="description",
classes=(str,),
Expand All @@ -418,6 +429,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="view",
node_name="Camera,LookAt",
classes=(
Expand All @@ -431,6 +443,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="times",
node_name="TimeSpan,TimeStamp",
classes=(
Expand All @@ -444,6 +457,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="style_url",
node_name="styleUrl",
classes=(StyleUrl,),
Expand All @@ -454,6 +468,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="styles",
node_name="Style,StyleMap",
classes=(
Expand All @@ -467,6 +482,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="region",
node_name="region",
classes=(Region,),
Expand All @@ -477,6 +493,7 @@ def __repr__(self) -> str:
registry.register(
_Feature,
RegistryItem(
ns_ids=("kml",),
attr_name="extended_data",
node_name="ExtendedData",
classes=(ExtendedData,),
Expand Down Expand Up @@ -592,6 +609,7 @@ def geometry(self) -> Optional[AnyGeometryType]:
registry.register(
Placemark,
RegistryItem(
ns_ids=("kml",),
attr_name="kml_geometry",
node_name=(
"Point,LineString,LinearRing,Polygon,MultiGeometry,"
Expand Down Expand Up @@ -746,6 +764,7 @@ def __bool__(self) -> bool:
registry.register(
NetworkLink,
RegistryItem(
ns_ids=("kml",),
attr_name="refresh_visibility",
node_name="refreshVisibility",
classes=(bool,),
Expand All @@ -756,6 +775,7 @@ def __bool__(self) -> bool:
registry.register(
NetworkLink,
RegistryItem(
ns_ids=("kml",),
attr_name="fly_to_view",
node_name="flyToView",
classes=(bool,),
Expand All @@ -766,6 +786,7 @@ def __bool__(self) -> bool:
registry.register(
NetworkLink,
RegistryItem(
ns_ids=("kml",),
attr_name="link",
node_name="Link",
classes=(Link,),
Expand Down
Loading

0 comments on commit 40bee72

Please sign in to comment.