arkparser 0.1.6__tar.gz → 0.1.7__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.7}/PKG-INFO +1 -1
  2. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/__init__.py +2 -2
  3. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/game_objects/container.py +10 -7
  4. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser.egg-info/PKG-INFO +1 -1
  5. {arkparser-0.1.6 → arkparser-0.1.7}/pyproject.toml +1 -1
  6. {arkparser-0.1.6 → arkparser-0.1.7}/LICENSE +0 -0
  7. {arkparser-0.1.6 → arkparser-0.1.7}/README.md +0 -0
  8. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/common/__init__.py +0 -0
  9. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/common/binary_reader.py +0 -0
  10. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/common/exceptions.py +0 -0
  11. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/common/map_config.py +0 -0
  12. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/common/normalization.py +0 -0
  13. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/common/types.py +0 -0
  14. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/common/version_detection.py +0 -0
  15. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/data_models.py +0 -0
  16. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/export.py +0 -0
  17. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/files/__init__.py +0 -0
  18. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/files/base.py +0 -0
  19. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/files/cloud_inventory.py +0 -0
  20. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/files/profile.py +0 -0
  21. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/files/tribe.py +0 -0
  22. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/files/world_save.py +0 -0
  23. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/game_objects/__init__.py +0 -0
  24. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/game_objects/game_object.py +0 -0
  25. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/game_objects/location.py +0 -0
  26. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/__init__.py +0 -0
  27. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/character.py +0 -0
  28. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/creature.py +0 -0
  29. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/item.py +0 -0
  30. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/player.py +0 -0
  31. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/stats.py +0 -0
  32. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/structure.py +0 -0
  33. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/models/tribe.py +0 -0
  34. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/properties/__init__.py +0 -0
  35. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/properties/base.py +0 -0
  36. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/properties/byte_property.py +0 -0
  37. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/properties/compound.py +0 -0
  38. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/properties/primitives.py +0 -0
  39. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/properties/registry.py +0 -0
  40. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/structs/__init__.py +0 -0
  41. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/structs/base.py +0 -0
  42. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/structs/colors.py +0 -0
  43. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/structs/misc.py +0 -0
  44. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/structs/property_list.py +0 -0
  45. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/structs/registry.py +0 -0
  46. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser/structs/vectors.py +0 -0
  47. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser.egg-info/SOURCES.txt +0 -0
  48. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser.egg-info/dependency_links.txt +0 -0
  49. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser.egg-info/requires.txt +0 -0
  50. {arkparser-0.1.6 → arkparser-0.1.7}/arkparser.egg-info/top_level.txt +0 -0
  51. {arkparser-0.1.6 → arkparser-0.1.7}/setup.cfg +0 -0
  52. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_binary_reader.py +0 -0
  53. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_cloud_inventory.py +0 -0
  54. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_data_models.py +0 -0
  55. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_export.py +0 -0
  56. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_game_objects.py +0 -0
  57. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_models.py +0 -0
  58. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_profile.py +0 -0
  59. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_tribe.py +0 -0
  60. {arkparser-0.1.6 → arkparser-0.1.7}/tests/test_version_detection.py +0 -0
  61. {arkparser-0.1.6 → arkparser-0.1.7}/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.7
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.7"
@@ -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.7
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.7"
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
File without changes