arkparser 0.1.6__tar.gz → 0.1.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. {arkparser-0.1.6 → arkparser-0.1.8}/PKG-INFO +1 -1
  2. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/__init__.py +2 -2
  3. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/export.py +4 -0
  4. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/game_objects/container.py +10 -7
  5. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser.egg-info/PKG-INFO +1 -1
  6. {arkparser-0.1.6 → arkparser-0.1.8}/pyproject.toml +1 -1
  7. {arkparser-0.1.6 → arkparser-0.1.8}/LICENSE +0 -0
  8. {arkparser-0.1.6 → arkparser-0.1.8}/README.md +0 -0
  9. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/common/__init__.py +0 -0
  10. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/common/binary_reader.py +0 -0
  11. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/common/exceptions.py +0 -0
  12. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/common/map_config.py +0 -0
  13. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/common/normalization.py +0 -0
  14. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/common/types.py +0 -0
  15. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/common/version_detection.py +0 -0
  16. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/data_models.py +0 -0
  17. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/files/__init__.py +0 -0
  18. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/files/base.py +0 -0
  19. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/files/cloud_inventory.py +0 -0
  20. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/files/profile.py +0 -0
  21. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/files/tribe.py +0 -0
  22. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/files/world_save.py +0 -0
  23. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/game_objects/__init__.py +0 -0
  24. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/game_objects/game_object.py +0 -0
  25. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/game_objects/location.py +0 -0
  26. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/__init__.py +0 -0
  27. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/character.py +0 -0
  28. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/creature.py +0 -0
  29. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/item.py +0 -0
  30. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/player.py +0 -0
  31. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/stats.py +0 -0
  32. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/structure.py +0 -0
  33. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/models/tribe.py +0 -0
  34. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/properties/__init__.py +0 -0
  35. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/properties/base.py +0 -0
  36. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/properties/byte_property.py +0 -0
  37. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/properties/compound.py +0 -0
  38. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/properties/primitives.py +0 -0
  39. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/properties/registry.py +0 -0
  40. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/structs/__init__.py +0 -0
  41. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/structs/base.py +0 -0
  42. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/structs/colors.py +0 -0
  43. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/structs/misc.py +0 -0
  44. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/structs/property_list.py +0 -0
  45. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/structs/registry.py +0 -0
  46. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser/structs/vectors.py +0 -0
  47. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser.egg-info/SOURCES.txt +0 -0
  48. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser.egg-info/dependency_links.txt +0 -0
  49. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser.egg-info/requires.txt +0 -0
  50. {arkparser-0.1.6 → arkparser-0.1.8}/arkparser.egg-info/top_level.txt +0 -0
  51. {arkparser-0.1.6 → arkparser-0.1.8}/setup.cfg +0 -0
  52. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_binary_reader.py +0 -0
  53. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_cloud_inventory.py +0 -0
  54. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_data_models.py +0 -0
  55. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_export.py +0 -0
  56. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_game_objects.py +0 -0
  57. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_models.py +0 -0
  58. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_profile.py +0 -0
  59. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_tribe.py +0 -0
  60. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_version_detection.py +0 -0
  61. {arkparser-0.1.6 → arkparser-0.1.8}/tests/test_world_save.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arkparser
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Summary: Pure Python parser for ARK: Survival Evolved and ARK: Survival Ascended save files
5
5
  Author: Vertyco
6
6
  License-Expression: MIT
@@ -1,4 +1,4 @@
1
- """
1
+ """
2
2
  ARK Save Parser - Parse ARK: Survival Evolved/Ascended save files.
3
3
 
4
4
  This package provides tools to parse various ARK save file formats:
@@ -115,4 +115,4 @@ __all__ = [
115
115
  "ArkParseError",
116
116
  ]
117
117
 
118
- __version__ = "0.1.6"
118
+ __version__ = "0.1.8"
@@ -276,6 +276,8 @@ def export_structures(
276
276
  results: list[dict[str, t.Any]] = []
277
277
 
278
278
  struct_objs = _get_worldsave_objects(save, "get_structures", "structure_objects")
279
+ objects = save.objects if hasattr(save, "objects") else {}
280
+ obj_lookup = _build_lookup(objects)
279
281
 
280
282
  for obj in struct_objs:
281
283
  structure = Structure.from_game_object(obj)
@@ -288,6 +290,8 @@ def export_structures(
288
290
  if mapped_loc.longitude is not None:
289
291
  data["lon"] = mapped_loc.longitude
290
292
 
293
+ data["inventory"] = _get_inventory_items(obj, obj_lookup)
294
+
291
295
  results.append(data)
292
296
 
293
297
  return results
@@ -141,23 +141,26 @@ class GameObjectContainer:
141
141
  def get_structures(self) -> list[GameObject]:
142
142
  """Get all tribe-owned placed structures.
143
143
 
144
- Component sub-objects (has_parent_names=True) share the same coordinates
145
- as their parent structure and must be excluded to avoid double-counting.
146
- Every placed structure actor in ARK's save format is a root-level object
147
- (one name only); its child inventory/component objects carry additional
148
- names pointing back to the parent.
144
+ ASE saves include the same actor in both the main level and sub-levels,
145
+ producing duplicate entries with identical Names[0]. Deduplicating by
146
+ primary_name matches the C# ASVPack reference (ContentContainer.cs:1049):
147
+ .GroupBy(x => x.Names[0]).Select(s => s.First())
149
148
  """
149
+ seen_names: set[str] = set()
150
150
  results: list[GameObject] = []
151
151
  for obj in self.objects:
152
152
  cn = obj.class_name
153
- if obj.has_parent_names:
154
- continue
155
153
  if obj.get_property_value("TargetingTeam") is None:
156
154
  continue
157
155
  if obj.get_property_value("DinoID1") is not None:
158
156
  continue
159
157
  if any(pat in cn for pat in self._NON_STRUCTURE_PATTERNS):
160
158
  continue
159
+ name = obj.primary_name
160
+ if name is not None:
161
+ if name in seen_names:
162
+ continue
163
+ seen_names.add(name)
161
164
  results.append(obj)
162
165
  return results
163
166
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arkparser
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Summary: Pure Python parser for ARK: Survival Evolved and ARK: Survival Ascended save files
5
5
  Author: Vertyco
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "arkparser"
7
- version = "0.1.6"
7
+ version = "0.1.8"
8
8
  description = "Pure Python parser for ARK: Survival Evolved and ARK: Survival Ascended save files"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes
File without changes
File without changes
File without changes