# Copyright 2024 The HuggingFace Inc. team. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import packaging.version V30_MESSAGE = """ The dataset you requested ({repo_id}) is in {version} format. We introduced a new format since v3.0 which is not backward compatible with v2.1. Please, update your dataset to the new format using this command: ``` python -m lerobot.datasets.v30.convert_dataset_v21_to_v30 --repo-id={repo_id} ``` If you already have a converted version uploaded to the hub, then this error might be because of an older version in your local cache. Consider deleting the cached version and retrying. If you encounter a problem, contact LeRobot maintainers on [Discord](https://discord.com/invite/s3KuuzsPFb) or open an [issue on GitHub](https://github.com/huggingface/lerobot/issues/new/choose). """ FUTURE_MESSAGE = """ The dataset you requested ({repo_id}) is only available in {version} format. As we cannot ensure forward compatibility with it, please update your current version of lerobot. """ class CompatibilityError(Exception): ... class BackwardCompatibilityError(CompatibilityError): def __init__(self, repo_id: str, version: packaging.version.Version): if version.major == 2 and version.minor == 1: message = V30_MESSAGE.format(repo_id=repo_id, version=version) else: raise NotImplementedError( "Contact the maintainer on [Discord](https://discord.com/invite/s3KuuzsPFb)." ) super().__init__(message) class ForwardCompatibilityError(CompatibilityError): def __init__(self, repo_id: str, version: packaging.version.Version): message = FUTURE_MESSAGE.format(repo_id=repo_id, version=version) super().__init__(message)