{"record":{"id":"76e86d6f35aa8a56","repo":"Genesis-Embodied-AI/genesis-world","slug":"this-property-has-been-removed","errorCode":null,"errorMessage":"This property has been removed.","messagePattern":"This property has been removed\\.","errorType":"exception","errorClass":"DeprecationError","httpStatus":null,"severity":"error","filePath":"genesis/engine/entities/rigid_entity/rigid_entity.py","lineNumber":4737,"sourceCode":"\n    @property\n    def equality_start(self):\n        \"\"\"The index of the entity's first RigidEquality in the scene.\"\"\"\n        return self._equality_start\n\n    @property\n    def equality_end(self):\n        \"\"\"The index of the entity's last RigidEquality in the scene *plus one*.\"\"\"\n        return self._equality_start + self.n_equalities\n\n    @property\n    def equalities(self):\n        \"\"\"The list of equality constraints (`RigidEquality`) in the entity.\"\"\"\n        return self._equalities\n\n    @property\n    def is_free(self) -> bool:\n        raise DeprecationError(\"This property has been removed.\")\n\n    @property\n    def is_local_collision_mask(self):\n        \"\"\"Whether the contype and conaffinity bitmasks of this entity only applies to self-collision.\"\"\"\n        return self._is_local_collision_mask\n","sourceCodeStart":4719,"sourceCodeEnd":4743,"githubUrl":"https://github.com/Genesis-Embodied-AI/genesis-world/blob/56e4aa5d82bdb83f2e532e4cc364cb69527acb06/genesis/engine/entities/rigid_entity/rigid_entity.py#L4719-L4743","documentation":"RigidEntity.is_free was a property reporting whether the entity is freely floating (no fixed root joint). It has been removed from the Genesis API and now unconditionally raises DeprecationError. The replacement is the link-level equivalent, since a free-floating entity is characterized by its root link's root_joint.","triggerScenarios":"Calling entity.is_free on any RigidEntity instance, including indirectly from old user scripts, tutorials, or third-party code written for an earlier Genesis version.","commonSituations":"Upgrading Genesis to a version where the entity/link/geom API was refactored to be link-centric; running legacy demo scripts or copied forum/GitHub code that checks if an entity is floating via entity.is_free.","solutions":["Use entity.links[entity.root_idx].is_free (root link's is_free) instead","If only fixed-vs-free matters, check entity.is_fixed or the root link's root_joint type","Search the codebase for '.is_free' on entities and migrate all call sites to link-level API"],"exampleFix":"// before\nif entity.is_free:\n    ...\n// after\nif entity.links[entity.root_idx].is_free:\n    ...","handlingStrategy":"validation","validationCode":"assert not hasattr(RigidEntity, 'is_free') or False  # after upgrade, grep instead\n# runtime check for old code paths:\nfrom genesis.utils.exceptions import DeprecationError\n","typeGuard":"def entity_is_free(entity) -> bool:\n    return entity.links[entity.root_idx].root_joint.type == gs.JOINT_TYPE.FREE\n","tryCatchPattern":"try:\n    val = entity.is_free\nexcept DeprecationError:\n    val = entity.links[entity.root_idx].is_fixed is False\n","preventionTips":["Pin the Genesis version your scripts were written against","After upgrading, grep for '.is_free' on entities/geoms/links and migrate to link-level API","Read the release notes for removed properties before upgrading"],"tags":["genesis","deprecation","rigid-entity","api-removal"],"backgroundTag":"removed-api-migration","analyzedSha":"56e4aa5d82bdb83f2e532e4cc364cb69527acb06","analyzedAt":"2026-08-28T15:15:07.922Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}