#pragma once #include #include #include #include #include #include namespace torch::jit { struct UpgraderRange { int min_version; int max_version; }; // Given a list of upgrader entries for a single operator // and the model version for that operator, find a valid // upgrader. TORCH_API std::optional findUpgrader( const std::vector& upgraders_for_schema, size_t current_version); // Utility methods to find if the operator is up-to-date // based on all registered upgraders for this operator. // This can be different from the current server version // because the implementation of this operator could have // been consistent for many later version bumps. TORCH_API bool isOpCurrentBasedOnUpgraderEntries( const std::vector& upgraders_for_schema, size_t current_version); TORCH_API bool isOpSymbolCurrent( const std::string& name, size_t current_version); // Returns the possible old schemas for the operator that // doesn't exist anymore. This can be true for deprecated // operators. Since name is always a symbol name, there // can be multiple schemas for different overloads. TORCH_API std::vector loadPossibleHistoricOps( const std::string& name, std::optional version); TORCH_API uint64_t getMaxOperatorVersion(); // Returns the list of min and max version numbers of the operators // that an upgrader `x` support for all upgraders for op `foo` TORCH_API std::vector getUpgradersRangeForOp( const std::string& name); } // namespace torch::jit