mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:34:18 +08:00
Excise yaml dependency in torchgen.model (#100203)
The problem: - The new CustomOp API depends on torchgen.model - torchgen.model imports `yaml` - `yaml` is not a PyTorch runtime dependency To unblock myself, because I'm not sure how long it'll take to convince people yaml should be a PyTorch runtime dependency (unless one of you wants to approve #100166), this PR removes the yaml dependency from torchgen.model. It does so by splitting torchgen.utils (the offender) into torchgen.utils (no yaml) and torchgen.yaml (which uses yaml). Test Plan: - CI Pull Request resolved: https://github.com/pytorch/pytorch/pull/100203 Approved by: https://github.com/ezyang, https://github.com/Skylion007
This commit is contained in:
committed by
PyTorch MergeBot
parent
55b661137f
commit
4135295a76
@ -28,33 +28,6 @@ from typing import (
|
||||
|
||||
from torchgen.code_template import CodeTemplate
|
||||
|
||||
# Safely load fast C Yaml loader/dumper if they are available
|
||||
try:
|
||||
from yaml import CSafeLoader as Loader
|
||||
except ImportError:
|
||||
from yaml import SafeLoader as Loader # type: ignore[misc]
|
||||
|
||||
try:
|
||||
from yaml import CSafeDumper as Dumper
|
||||
except ImportError:
|
||||
from yaml import SafeDumper as Dumper # type: ignore[misc]
|
||||
YamlDumper = Dumper
|
||||
|
||||
|
||||
# A custom loader for YAML that errors on duplicate keys.
|
||||
# This doesn't happen by default: see https://github.com/yaml/pyyaml/issues/165
|
||||
class YamlLoader(Loader):
|
||||
def construct_mapping(self, node, deep=False): # type: ignore[no-untyped-def]
|
||||
mapping = []
|
||||
for key_node, value_node in node.value:
|
||||
key = self.construct_object(key_node, deep=deep) # type: ignore[no-untyped-call]
|
||||
assert (
|
||||
key not in mapping
|
||||
), f"Found a duplicate key in the yaml. key={key}, line={node.start_mark.line}"
|
||||
mapping.append(key)
|
||||
mapping = super().construct_mapping(node, deep=deep) # type: ignore[no-untyped-call]
|
||||
return mapping
|
||||
|
||||
|
||||
# Many of these functions share logic for defining both the definition
|
||||
# and declaration (for example, the function signature is the same), so
|
||||
|
Reference in New Issue
Block a user