mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/74353 Repatched `d00de0d43598522b8f6ab2de553b6aaf6768faa5` by Nora Belrose (norabelrose). With following changes: * Register fake source of generated methods in linecache so that inspect.get_source will succeed. * this patching is only triggered if the given dataclass passed to torch.jit.script previously. Effectively we make this feature opt-in. ## Original Summary: Fixes https://github.com/pytorch/pytorch/issues/72901. Since we can't get access to the source code for synthesized magic methods on dataclasses, we have to synthesize our own versions. torch/jit/_dataclass_impls.py has the code that does this. What's supported Synthesized __init__, __eq__, and the comparison magic methods when order=True is set on the dataclass decorator Default values for fields __post_init__, including using InitVar fields inside of __post_init__, on Python 3.8+ Overriding __eq__ or any of the comparison magic methods to provide your own implementation What's not supported Default factory initializers for fields Frozen dataclasses InitVar on Python 3.7 __repr__ and __hash__ (these are actually implemented, but the TorchScript interpreter won't call them) Using the != operator on dataclasses inside TorchScript; this is because TorchScript requires that you implement __ne__ to use this operator, whereas in regular Python the != operator will resolve to the negation of whatever is returned by __eq__ if there's no __ne__. Dataclasses don't actually synthesize an __ne__ method for this reason. I've been toying with different ways to fix this but != is not working in this PR at the moment. Pull Request resolved: https://github.com/pytorch/pytorch/pull/74889 Test Plan: unittest Also run previously failed test: ``` buck test mode/dev-nosan //fblearner/flow/projects/fluent2/definition/transformers/contrib/faim/test:tests -- --exact 'fblearner/flow/projects/fluent2/definition/transformers/contrib/faim/test:tests - test_mixmatch_multiclass (fblearner.flow.projects.fluent2.definition.transformers.contrib.faim.test.faim_mixmatch_test.TestFaimTransformerMixMatch)' ``` passes Reviewed By: zhxchen17 Differential Revision: D35206262 Pulled By: qihqi Pull Request resolved: https://github.com/pytorch/pytorch/pull/76771 Approved by: https://github.com/seemethere |
||
|---|---|---|
| .. | ||
| _passes | ||
| mobile | ||
| __init__.py | ||
| _async.py | ||
| _builtins.py | ||
| _check.py | ||
| _dataclass_impls.py | ||
| _decomposition_utils.py | ||
| _decompositions.py | ||
| _freeze.py | ||
| _fuser.py | ||
| _ir_utils.py | ||
| _logging.py | ||
| _monkeytype_config.py | ||
| _pickle.py | ||
| _recursive.py | ||
| _script.py | ||
| _serialization.py | ||
| _shape_functions.py | ||
| _state.py | ||
| _trace.py | ||
| annotations.py | ||
| frontend.py | ||
| generate_bytecode.py | ||
| quantized.py | ||
| supported_ops.py | ||
| unsupported_tensor_ops.py | ||