构造前失败合法 Wrapper 被当成非法环境拒绝
环境注册允许把 `gymnasium.Wrapper` 子类直接作为 entry point,但 Wrapper 的类级 `metadata` 是一个实例属性:只有构造实例后才会委托到底层环境。旧版 `make()` 在构造前读取类属性,得到的是 `property` 描述符,却把它当作具体 metadata 字典交给 `_check_metadata()`;结果合法的 Wrapper 入口会在 `make()` 与 `make_vec()` 真正实例化之前被 `InvalidMetadata` 拒绝。
描述符语义Property 只有绑定实例后才返回元数据
同名类属性不一定已经是可验证的数据。普通 Env 子类可以提供具体的字典 metadata,Wrapper 则通过 property 在实例层动态委托;预构造阶段必须区分这两类对象。修复不能全面跳过 metadata 校验,否则真正把列表等非法值写在类上的环境会失去早期错误提示,只应绕开尚未绑定实例的 property 描述符。
校验分流只跳过 Property,具体值继续验证
先缓存 `env_creator.metadata`,若它是 `property` 就留到 Wrapper 实例创建后的正常委托路径;否则继续执行原有字典结构和 render modes 校验。同时把错误信息中的 `type(metadata)` 改为 `type(testing_metadata)`,避免把导入模块的类型误报成用户值。回归注册一个 Wrapper entry point,并由 `make_vec(..., num_envs=2)` 验证两个实例都保留 Wrapper;另一用例确认具体的列表 metadata 仍被拒绝且报告 `list`。
契约保持向量化可创建,非法列表仍准确报错
Wrapper 子类现在可以作为注册入口被单环境和同步向量环境正常构造,既不要求伪造类级字典,也不削弱普通环境的 metadata 契约。定向 `make_vec` 测试 41 项、注册测试 107 项通过;完整测试记录 4,390 项通过、146 项跳过,两个约 1e−16 的 MuJoCo 精度失败可在未修改主分支复现。