returnn 1.20250123.173545__tar.gz → 1.20250123.223321__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of returnn might be problematic. Click here for more details.

Files changed (473) hide show
  1. {returnn-1.20250123.173545/returnn.egg-info → returnn-1.20250123.223321}/PKG-INFO +1 -1
  2. returnn-1.20250123.223321/_setup_info_generated.py +2 -0
  3. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-iter-dataset.py +0 -1
  4. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/__main__.py +1 -1
  5. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/audio.py +2 -6
  6. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/hdf.py +6 -15
  7. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/sprint.py +3 -6
  8. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/log.py +0 -2
  9. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/sprint/control.py +0 -1
  10. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/sprint/interface.py +0 -1
  11. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/layers/basic.py +2 -2
  12. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/basic.py +7 -163
  13. {returnn-1.20250123.173545 → returnn-1.20250123.223321/returnn.egg-info}/PKG-INFO +1 -1
  14. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/_setup_test_env.py +0 -2
  15. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_HDFDataset.py +3 -6
  16. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_Log.py +1 -4
  17. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TFNetworkLayer.py +0 -2
  18. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TFUtil.py +0 -2
  19. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TranslationDataset.py +0 -5
  20. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_Util.py +0 -8
  21. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/analyze-dataset-batches.py +0 -1
  22. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/calculate-word-error-rate.py +0 -1
  23. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/collect-orth-symbols.py +0 -1
  24. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/collect-words.py +0 -1
  25. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/compile_native_op.py +0 -1
  26. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/compile_tf_graph.py +0 -1
  27. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/debug-dump-search-scores.py +0 -1
  28. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/dump-dataset-raw-strings.py +0 -1
  29. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/dump-dataset.py +0 -1
  30. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/hdf_dump.py +0 -1
  31. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/torch_export_to_onnx.py +0 -1
  32. returnn-1.20250123.173545/_setup_info_generated.py +0 -2
  33. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/.editorconfig +0 -0
  34. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/.gitignore +0 -0
  35. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/.gitmodules +0 -0
  36. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/.kateconfig +0 -0
  37. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/CHANGELOG.md +0 -0
  38. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/CODEOWNERS +0 -0
  39. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/CONTRIBUTING.md +0 -0
  40. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/LICENSE +0 -0
  41. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/MANIFEST.in +0 -0
  42. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/README.rst +0 -0
  43. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/__init__.py +0 -0
  44. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/12AX.cluster_map +0 -0
  45. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/_setup_returnn_env.py +0 -0
  46. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-fwd.config +0 -0
  47. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-horovod-mpi.py +0 -0
  48. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-horovod-mpi.py.sh +0 -0
  49. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-horovod-mpi.sh +0 -0
  50. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-hyper-param-tuning.config +0 -0
  51. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-list-devices.py +0 -0
  52. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-lua-torch-layer.config +0 -0
  53. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-pretrain.config +0 -0
  54. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-record-and-push-to-webserver.py +0 -0
  55. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-returnn-as-framework.py +0 -0
  56. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-rf-pt-benchmark.py +0 -0
  57. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-rf.config +0 -0
  58. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-rhn-enwik8.config +0 -0
  59. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-sprint-interface.py +0 -0
  60. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-att-copy.config +0 -0
  61. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-attention.config +0 -0
  62. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  63. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  64. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-enc-dec.config +0 -0
  65. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-hard-att-copy.config +0 -0
  66. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-lstm-benchmark.py +0 -0
  67. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  68. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  69. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-native-lstm.12ax.config +0 -0
  70. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  71. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  72. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  73. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  74. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  75. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-rec-self-att.config +0 -0
  76. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-search-compiled-graph.py +0 -0
  77. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  78. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-timit-lstm-ctc.config +0 -0
  79. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-torch.config +0 -0
  80. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  81. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/demo.sh +0 -0
  82. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  83. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  84. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  85. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/README.txt +0 -0
  86. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/chars.txt +0 -0
  87. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/config_demo +0 -0
  88. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/config_fwd +0 -0
  89. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/config_real +0 -0
  90. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  91. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/decode.py +0 -0
  92. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  93. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/go.sh +0 -0
  94. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/lines.txt +0 -0
  95. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/split/eval.txt +0 -0
  96. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/split/train.txt +0 -0
  97. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/IAM/split/valid.txt +0 -0
  98. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/README.md +0 -0
  99. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  100. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial/forwardconfig +0 -0
  101. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial/go.sh +0 -0
  102. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial/trainconfig +0 -0
  103. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  104. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  105. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  106. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  107. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/pyproject.toml +0 -0
  108. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/requirements.txt +0 -0
  109. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/__init__.py +0 -0
  110. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/__old_mod_loader__.py +0 -0
  111. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/__setup__.py +0 -0
  112. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/config.py +0 -0
  113. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/__init__.py +0 -0
  114. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/basic.py +0 -0
  115. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/bundle_file.py +0 -0
  116. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/cached.py +0 -0
  117. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/cached2.py +0 -0
  118. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/distrib_files.py +0 -0
  119. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/generating.py +0 -0
  120. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/lm.py +0 -0
  121. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/map.py +0 -0
  122. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/meta.py +0 -0
  123. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/multi_proc.py +0 -0
  124. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/normalization_data.py +0 -0
  125. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/numpy_dump.py +0 -0
  126. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/postprocessing.py +0 -0
  127. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/raw_wav.py +0 -0
  128. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/stereo.py +0 -0
  129. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/text_dict.py +0 -0
  130. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/util/__init__.py +0 -0
  131. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/util/feature_extraction.py +0 -0
  132. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/util/strings.py +0 -0
  133. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/datasets/util/vocabulary.py +0 -0
  134. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/engine/__init__.py +0 -0
  135. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/engine/base.py +0 -0
  136. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/engine/batch.py +0 -0
  137. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/__init__.py +0 -0
  138. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/__main__.py +0 -0
  139. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  140. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  141. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  142. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  143. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  144. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  145. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  146. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  147. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  148. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  149. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  150. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  151. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  152. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  153. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  154. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  155. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  156. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  157. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  158. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  159. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  160. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  161. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  162. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  163. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  164. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/__init__.py +0 -0
  165. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/README.md +0 -0
  166. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/__init__.py +0 -0
  167. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/edit.py +0 -0
  168. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/reroute.py +0 -0
  169. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/select.py +0 -0
  170. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/subgraph.py +0 -0
  171. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/transform.py +0 -0
  172. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/extern/graph_editor/util.py +0 -0
  173. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/forward_iface.py +0 -0
  174. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/__init__.py +0 -0
  175. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_backend.py +0 -0
  176. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_cache.py +0 -0
  177. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/__init__.py +0 -0
  178. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/backend.cpp +0 -0
  179. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/backend.hpp +0 -0
  180. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/module.cpp +0 -0
  181. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/module.hpp +0 -0
  182. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/py_utils.hpp +0 -0
  183. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  184. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  185. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_numpy_backend.py +0 -0
  186. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_random_journal.py +0 -0
  187. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/_utils.py +0 -0
  188. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/array_.py +0 -0
  189. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/attention.py +0 -0
  190. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/audio/__init__.py +0 -0
  191. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/audio/mel.py +0 -0
  192. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/audio/specaugment.py +0 -0
  193. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/backend.py +0 -0
  194. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/build_from_dict.py +0 -0
  195. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/cond.py +0 -0
  196. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/const.py +0 -0
  197. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/container.py +0 -0
  198. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/control_flow_ctx.py +0 -0
  199. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/conv.py +0 -0
  200. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/conversions/__init__.py +0 -0
  201. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  202. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/conversions/hf_llama.py +0 -0
  203. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/conversions/torch_nn.py +0 -0
  204. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/decoder/__init__.py +0 -0
  205. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/decoder/transformer.py +0 -0
  206. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/device.py +0 -0
  207. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/dims.py +0 -0
  208. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/dropout.py +0 -0
  209. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/dtype.py +0 -0
  210. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/encoder/__init__.py +0 -0
  211. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/encoder/base.py +0 -0
  212. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/encoder/conformer.py +0 -0
  213. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/encoder/conformer_v2.py +0 -0
  214. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/encoder/e_branchformer.py +0 -0
  215. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/encoder/transformer.py +0 -0
  216. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/gradient.py +0 -0
  217. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/graph.py +0 -0
  218. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/hooks.py +0 -0
  219. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/init.py +0 -0
  220. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/label_smoothing.py +0 -0
  221. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/linear.py +0 -0
  222. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/loop.py +0 -0
  223. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/loss.py +0 -0
  224. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/math_.py +0 -0
  225. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/matmul.py +0 -0
  226. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/module.py +0 -0
  227. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/normalization.py +0 -0
  228. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/parameter.py +0 -0
  229. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/parametrizations.py +0 -0
  230. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/parametrize.py +0 -0
  231. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/piecewise_linear.py +0 -0
  232. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/rand.py +0 -0
  233. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/rec.py +0 -0
  234. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/reduce.py +0 -0
  235. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/run_ctx.py +0 -0
  236. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/signal.py +0 -0
  237. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/state.py +0 -0
  238. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/stepwise_scheduler.py +0 -0
  239. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/tensor_array.py +0 -0
  240. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/frontend/types.py +0 -0
  241. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/import_/__init__.py +0 -0
  242. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/import_/common.py +0 -0
  243. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/import_/git.py +0 -0
  244. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/import_/import_.py +0 -0
  245. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/learning_rate_control.py +0 -0
  246. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/native_op.cpp +0 -0
  247. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/native_op.py +0 -0
  248. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/pretrain.py +0 -0
  249. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/sprint/__init__.py +0 -0
  250. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/sprint/cache.py +0 -0
  251. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/sprint/error_signals.py +0 -0
  252. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/sprint/extern_interface.py +0 -0
  253. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/README.md +0 -0
  254. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/__init__.py +0 -0
  255. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/_dim_extra.py +0 -0
  256. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/_tensor_extra.py +0 -0
  257. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/_tensor_mixin_base.py +0 -0
  258. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/_tensor_op_overloads.py +0 -0
  259. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/control_flow_ctx.py +0 -0
  260. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/dim.py +0 -0
  261. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/marked_dim.py +0 -0
  262. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/tensor.py +0 -0
  263. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/tensor_dict.py +0 -0
  264. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tensor/utils.py +0 -0
  265. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/__init__.py +0 -0
  266. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/compat.py +0 -0
  267. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/data_pipeline.py +0 -0
  268. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/distributed.py +0 -0
  269. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/engine.py +0 -0
  270. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/README.md +0 -0
  271. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/__init__.py +0 -0
  272. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/_backend.py +0 -0
  273. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/_utils.py +0 -0
  274. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/cond.py +0 -0
  275. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  276. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  277. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/dims.py +0 -0
  278. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/layer.py +0 -0
  279. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/loop.py +0 -0
  280. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/make_layer.py +0 -0
  281. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  282. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  283. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  284. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_low_level/__init__.py +0 -0
  285. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/frontend_low_level/_backend.py +0 -0
  286. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/horovod.py +0 -0
  287. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/hyper_param_tuning.py +0 -0
  288. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/layers/__init__.py +0 -0
  289. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/layers/base.py +0 -0
  290. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/layers/rec.py +0 -0
  291. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/layers/segmental_model.py +0 -0
  292. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/layers/signal_processing.py +0 -0
  293. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/layers/variable.py +0 -0
  294. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/native_op.py +0 -0
  295. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/network.py +0 -0
  296. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/sprint.py +0 -0
  297. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/updater.py +0 -0
  298. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/util/__init__.py +0 -0
  299. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/util/basic.py +0 -0
  300. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/util/data.py +0 -0
  301. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/util/gradient_checkpoint.py +0 -0
  302. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/util/ken_lm.py +0 -0
  303. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/tf/util/open_fst.py +0 -0
  304. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/README.md +0 -0
  305. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/__init__.py +0 -0
  306. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/data/__init__.py +0 -0
  307. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/data/extern_data.py +0 -0
  308. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/data/pipeline.py +0 -0
  309. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/data/queued_data_iter.py +0 -0
  310. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  311. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/data/tensor_utils.py +0 -0
  312. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/distributed.py +0 -0
  313. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/engine.py +0 -0
  314. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/frontend/__init__.py +0 -0
  315. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/frontend/_backend.py +0 -0
  316. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/frontend/_rand.py +0 -0
  317. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/frontend/bridge.py +0 -0
  318. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/frontend/raw_ops.py +0 -0
  319. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/optim/README.md +0 -0
  320. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/optim/__init__.py +0 -0
  321. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/optim/lion.py +0 -0
  322. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/updater.py +0 -0
  323. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/README.md +0 -0
  324. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/__init__.py +0 -0
  325. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/array_.py +0 -0
  326. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/debug_inf_nan.py +0 -0
  327. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/diagnose_gpu.py +0 -0
  328. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/exception_helper.py +0 -0
  329. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/gradient_checkpoint.py +0 -0
  330. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/module.py +0 -0
  331. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/torch/util/scaled_gradient.py +0 -0
  332. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/__init__.py +0 -0
  333. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/better_exchook.py +0 -0
  334. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/bpe.py +0 -0
  335. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/debug.py +0 -0
  336. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/debug_helpers.py +0 -0
  337. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/file_cache.py +0 -0
  338. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/fsa.py +0 -0
  339. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/literal_py_to_pickle.py +0 -0
  340. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/lru_cache.py +0 -0
  341. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/math.py +0 -0
  342. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  343. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/native_code_compiler.py +0 -0
  344. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/pprint.py +0 -0
  345. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/py-to-pickle.cpp +0 -0
  346. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/py_ext_mod_compiler.py +0 -0
  347. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/result_with_reason.py +0 -0
  348. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/sig_proc.py +0 -0
  349. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/task_system.py +0 -0
  350. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/train_proc_manager.py +0 -0
  351. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn/util/watch_memory.py +0 -0
  352. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn.egg-info/SOURCES.txt +0 -0
  353. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn.egg-info/dependency_links.txt +0 -0
  354. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/returnn.egg-info/top_level.txt +0 -0
  355. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/rnn.py +0 -0
  356. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/setup.cfg +0 -0
  357. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/setup.py +0 -0
  358. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/DummySprintExec.py +0 -0
  359. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm-inspection-profile.xml +0 -0
  360. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/.gitignore +0 -0
  361. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/.name +0 -0
  362. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  363. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  364. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  365. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  366. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  367. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/misc.xml +0 -0
  368. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/modules.xml +0 -0
  369. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/returnn.iml +0 -0
  370. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  371. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/_set_num_threads1.py +0 -0
  372. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/_setup_returnn_env.py +0 -0
  373. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/bpe-unicode-demo.codes +0 -0
  374. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/bpe-unicode-demo.vocab +0 -0
  375. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/lexicon_opt.fst +0 -0
  376. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/lexicon_opt.isyms +0 -0
  377. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/lexicon_opt.jpg +0 -0
  378. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/lexicon_opt.osyms +0 -0
  379. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/lint_common.py +0 -0
  380. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/pycharm-inspect.py +0 -0
  381. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/pylint.py +0 -0
  382. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/returnn-as-framework.py +0 -0
  383. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/rf_utils.py +0 -0
  384. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/spelling.dic +0 -0
  385. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_Config.py +0 -0
  386. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_Dataset.py +0 -0
  387. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_Fsa.py +0 -0
  388. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_GeneratingDataset.py +0 -0
  389. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_LearningRateControl.py +0 -0
  390. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_MultiProcDataset.py +0 -0
  391. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_Pretrain.py +0 -0
  392. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_ResNet.py +0 -0
  393. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_SprintDataset.py +0 -0
  394. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_SprintInterface.py +0 -0
  395. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TFEngine.py +0 -0
  396. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TFNativeOp.py +0 -0
  397. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TFNetworkRecLayer.py +0 -0
  398. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TFNetworkSigProcLayer.py +0 -0
  399. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TFUpdater.py +0 -0
  400. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TF_determinism.py +0 -0
  401. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TaskSystem.py +0 -0
  402. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_TaskSystem_SharedMem.py +0 -0
  403. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_demos.py +0 -0
  404. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_fork_exec.py +0 -0
  405. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_hdf_dump.py +0 -0
  406. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_array.py +0 -0
  407. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_attention.py +0 -0
  408. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_base.py +0 -0
  409. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_cond.py +0 -0
  410. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_const.py +0 -0
  411. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_container.py +0 -0
  412. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_conv.py +0 -0
  413. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_decoder_transformer.py +0 -0
  414. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_encoder_conformer.py +0 -0
  415. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_gradient.py +0 -0
  416. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_label_smoothing.py +0 -0
  417. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_loop.py +0 -0
  418. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_math.py +0 -0
  419. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_normalization.py +0 -0
  420. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_piecewise_linear.py +0 -0
  421. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_rec.py +0 -0
  422. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_reduce.py +0 -0
  423. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_rf_signal.py +0 -0
  424. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_tensor.py +0 -0
  425. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_threading.py +0 -0
  426. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_tools.py +0 -0
  427. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_torch_dataset.py +0 -0
  428. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_torch_engine.py +0 -0
  429. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_torch_frontend.py +0 -0
  430. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_torch_internal_frontend.py +0 -0
  431. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/test_torch_util.py +0 -0
  432. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tests/torch_utils.py +0 -0
  433. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/_setup_returnn_env.py +0 -0
  434. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/bliss-collect-seq-lens.py +0 -0
  435. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/bliss-dump-text.py +0 -0
  436. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/bliss-get-segment-names.py +0 -0
  437. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/bliss-to-ogg-zip.py +0 -0
  438. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/bpe-create-lexicon.py +0 -0
  439. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/cleanup-old-models.py +0 -0
  440. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/debug-plot-search-scores.py +0 -0
  441. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/dump-forward-stats.py +0 -0
  442. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/dump-forward.py +0 -0
  443. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/dump-network-json.py +0 -0
  444. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/dump-pickle.py +0 -0
  445. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/extract_state_tying_from_dataset.py +0 -0
  446. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/get-attention-weights.py +0 -0
  447. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/get-best-model-epoch.py +0 -0
  448. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/hdf_dump_translation_dataset.py +0 -0
  449. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/import-blocks-mt-model.py +0 -0
  450. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/import-t2t-mt-model.py +0 -0
  451. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/.gitignore +0 -0
  452. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/Makefile +0 -0
  453. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/README.md +0 -0
  454. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/example/README.md +0 -0
  455. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/example/libs_list +0 -0
  456. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  457. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  458. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  459. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/example/state_vars_list +0 -0
  460. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  461. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/file.h +0 -0
  462. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  463. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  464. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/main.cc +0 -0
  465. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/rescorer.h +0 -0
  466. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/vocabulary.cc +0 -0
  467. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/lattice_rescorer/vocabulary.h +0 -0
  468. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/tf_avg_checkpoints.py +0 -0
  469. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/tf_inspect_checkpoint.py +0 -0
  470. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/tf_inspect_summary_log.py +0 -0
  471. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/torch_avg_checkpoints.py +0 -0
  472. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/torch_inspect_checkpoint.py +0 -0
  473. {returnn-1.20250123.173545 → returnn-1.20250123.223321}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250123.173545
3
+ Version: 1.20250123.223321
4
4
  Summary: The RWTH extensible training framework for universal recurrent neural networks
5
5
  Home-page: https://github.com/rwth-i6/returnn/
6
6
  Author: Albert Zeyer
@@ -0,0 +1,2 @@
1
+ version = '1.20250123.223321'
2
+ long_version = '1.20250123.223321+git.eb6d734'
@@ -63,7 +63,6 @@ def init(config_filename, command_line_options):
63
63
  :param list[str] command_line_options:
64
64
  """
65
65
  rnn.init_better_exchook()
66
- rnn.init_thread_join_hack()
67
66
  rnn.init_config(config_filename, command_line_options)
68
67
  global config
69
68
  config = rnn.config
@@ -36,6 +36,7 @@ from returnn.util.basic import BackendEngine, BehaviorVersion
36
36
  # noinspection PyUnresolvedReferences
37
37
  from returnn.util.debug import init_ipython_kernel, init_better_exchook, init_faulthandler, debug_shell
38
38
 
39
+ # Some external scripts import those functions from here, thus keep this here.
39
40
  # noinspection PyUnresolvedReferences
40
41
  from returnn.util.basic import init_thread_join_hack, describe_returnn_version
41
42
 
@@ -454,7 +455,6 @@ def init(config_filename=None, command_line_options=(), config_updates=None, ext
454
455
  """
455
456
  with util.ReportImportedDevModules(description="RETURNN init"):
456
457
  debug_util.init_better_exchook()
457
- util.init_thread_join_hack()
458
458
  init_config(
459
459
  config_filename=config_filename, command_line_options=command_line_options, extra_updates=config_updates
460
460
  )
@@ -13,7 +13,6 @@ from .cached2 import CachedDataset2
13
13
  from .util.feature_extraction import ExtractAudioFeatures
14
14
  from .util.vocabulary import Vocabulary
15
15
  from .util.strings import str_to_numpy_array
16
- from returnn.util.basic import PY3
17
16
 
18
17
 
19
18
  class OggZipDataset(CachedDataset2):
@@ -553,11 +552,8 @@ class OggZipDataset(CachedDataset2):
553
552
  features["classes"] = numpy.array(targets, dtype="int32")
554
553
  raw_txt = str_to_numpy_array(txt)
555
554
  orth = txt.encode("utf8")
556
- if PY3:
557
- assert isinstance(orth, bytes)
558
- orth = list(orth)
559
- else:
560
- orth = list(map(ord, orth))
555
+ assert isinstance(orth, bytes)
556
+ orth = list(orth)
561
557
  orth = numpy.array(orth, dtype="uint8")
562
558
  return DatasetSeq(
563
559
  features={**features, "raw": raw_txt, "orth": orth},
@@ -3,8 +3,9 @@ Provides :class:`HDFDataset`.
3
3
  """
4
4
 
5
5
  from __future__ import annotations
6
- import bisect
6
+ from typing import Union
7
7
  import typing
8
+ import bisect
8
9
  import collections
9
10
  import gc
10
11
  import h5py
@@ -67,17 +68,8 @@ class HDFDataset(CachedDataset):
67
68
  del self.file_seq_start[:]
68
69
 
69
70
  @staticmethod
70
- def _decode(s):
71
- """
72
- :param str|bytes|unicode s:
73
- :rtype: str
74
- """
75
- from returnn.util.basic import unicode, PY3
76
-
77
- if not PY3 and isinstance(s, unicode):
78
- s = s.encode("utf8")
79
- assert isinstance(s, str) # Python 2
80
- if not isinstance(s, str): # bytes (Python 3)
71
+ def _decode(s: Union[str, bytes]) -> str:
72
+ if isinstance(s, bytes):
81
73
  s = s.decode("utf-8")
82
74
  s = s.split("\0")[0]
83
75
  return s
@@ -1431,7 +1423,7 @@ class HDFDatasetWriter:
1431
1423
  :param int|float end_seq:
1432
1424
  :param bool use_progress_bar:
1433
1425
  """
1434
- from returnn.util.basic import NumbersDict, human_size, progress_bar_with_time, try_run, PY3
1426
+ from returnn.util.basic import NumbersDict, human_size, progress_bar_with_time, try_run
1435
1427
 
1436
1428
  hdf_dataset = self.file
1437
1429
 
@@ -1544,8 +1536,7 @@ class HDFDatasetWriter:
1544
1536
  hdf_dataset["targets/size"].attrs[hdf_data_key_map[data_key]] = dataset.num_outputs[data_key]
1545
1537
  if data_key in dataset.labels:
1546
1538
  labels = dataset.labels[data_key]
1547
- if PY3:
1548
- labels = [label.encode("utf8") for label in labels]
1539
+ labels = [label.encode("utf8") for label in labels]
1549
1540
  assert len(labels) == dataset.num_outputs[data_key][0]
1550
1541
  else:
1551
1542
  labels = ["%s-class-%i" % (data_key, i) for i in range(dataset.get_data_dim(data_key))]
@@ -25,7 +25,7 @@ from returnn.datasets.basic import Dataset, DatasetSeq
25
25
  from .cached2 import CachedDataset2
26
26
  from returnn.log import log
27
27
  from returnn.util.task_system import numpy_copy_and_set_unused
28
- from returnn.util.basic import eval_shell_str, interrupt_main, unicode, PY3, close_all_fds_except
28
+ from returnn.util.basic import eval_shell_str, interrupt_main, unicode, close_all_fds_except
29
29
  import returnn.util.basic as util
30
30
 
31
31
 
@@ -442,11 +442,8 @@ class SprintDatasetBase(Dataset):
442
442
  if isinstance(v, unicode):
443
443
  v = v.encode("utf8")
444
444
  if isinstance(v, (str, bytes)):
445
- if PY3:
446
- assert isinstance(v, bytes)
447
- v = list(v)
448
- else:
449
- v = list(map(ord, v))
445
+ assert isinstance(v, bytes)
446
+ v = list(v)
450
447
  v = numpy.array(v, dtype="uint8")
451
448
  targets[key] = v
452
449
  if self.str_add_final_zero:
@@ -14,8 +14,6 @@ import contextlib
14
14
  import string
15
15
  import typing
16
16
 
17
- PY3 = sys.version_info[0] >= 3
18
-
19
17
 
20
18
  class Stream:
21
19
  """
@@ -47,7 +47,6 @@ print("RETURNN SprintControl[pid %i] Python module load" % os.getpid())
47
47
 
48
48
  rnn.init_better_exchook()
49
49
  debug.init_faulthandler(sigusr1_chain=True) # Sprint also handles SIGUSR1.
50
- rnn.init_thread_join_hack()
51
50
 
52
51
 
53
52
  # Start Sprint PythonControl interface. {
@@ -712,7 +712,6 @@ def _init_base(configfile=None, target_mode=None, epoch=None, sprint_opts=None):
712
712
  # Some subset of what we do in rnn.init().
713
713
 
714
714
  rnn.init_better_exchook()
715
- rnn.init_thread_join_hack()
716
715
 
717
716
  if configfile is None:
718
717
  configfile = DefaultSprintCrnnConfig
@@ -11,7 +11,7 @@ import contextlib
11
11
  from returnn.tensor import Tensor, Dim
12
12
  import returnn.tf.compat as tf_compat
13
13
  import returnn.tf.util.basic as tf_util
14
- from returnn.util.basic import unicode, NotSpecified
14
+ from returnn.util.basic import NotSpecified
15
15
  from returnn.tf.util.data import Data, SearchBeam, FeatureDim, SpatialDim
16
16
  from returnn.tf.util.basic import OutputWithActivation, dimshuffle, swapaxes
17
17
  from returnn.log import log
@@ -13407,7 +13407,7 @@ class ViaLayerLoss(Loss):
13407
13407
  error_signal = where_bc(seq_mask_bc, error_signal, 0.0)
13408
13408
  if self.loss_wrt_to_act_in:
13409
13409
  assert self.output_with_activation, "activation unknown, via %r" % self.output
13410
- if isinstance(self.loss_wrt_to_act_in, (str, unicode)):
13410
+ if isinstance(self.loss_wrt_to_act_in, str):
13411
13411
  from returnn.tf.util.basic import get_activation_function
13412
13412
 
13413
13413
  assert self.output_with_activation.act_func is get_activation_function(self.loss_wrt_to_act_in)
@@ -37,8 +37,6 @@ import builtins
37
37
 
38
38
  from .native_code_compiler import NativeCodeCompiler
39
39
 
40
- PY3 = sys.version_info[0] >= 3
41
-
42
40
  unicode = str
43
41
  long = int
44
42
  # noinspection PyShadowingBuiltins
@@ -392,8 +390,7 @@ def sys_cmd_out_lines(s):
392
390
  env=dict(os.environ, LANG="en_US.UTF-8", LC_ALL="en_US.UTF-8"),
393
391
  )
394
392
  stdout = p.communicate()[0]
395
- if PY3:
396
- stdout = stdout.decode("utf8")
393
+ stdout = stdout.decode("utf8")
397
394
  result = [line.strip() for line in stdout.split("\n")[:-1]]
398
395
  p.stdout.close()
399
396
  if p.returncode != 0:
@@ -1416,113 +1413,10 @@ def init_thread_join_hack():
1416
1413
  if _thread_join_hack_installed: # don't install twice
1417
1414
  return
1418
1415
  _thread_join_hack_installed = True
1419
- if PY3:
1420
- # These monkey patches are not necessary anymore. Nothing blocks signals anymore in Python 3.
1421
- # https://github.com/albertz/playground/blob/master/thread-join-block.py
1422
- # https://github.com/albertz/playground/blob/master/cond-wait-block.py
1423
- return
1424
- main_thread = threading.current_thread()
1425
- # noinspection PyUnresolvedReferences,PyProtectedMember
1426
- assert isinstance(main_thread, threading._MainThread)
1427
- main_thread_id = thread.get_ident()
1428
-
1429
- # Patch Thread.join().
1430
- join_orig = threading.Thread.join
1431
-
1432
- def join_hacked(thread_obj, timeout=None):
1433
- """
1434
- :type thread_obj: threading.Thread
1435
- :type timeout: float|None
1436
- :return: always None
1437
- """
1438
- if thread.get_ident() == main_thread_id and timeout is None:
1439
- # This is a HACK for Thread.join() if we are in the main thread.
1440
- # In that case, a Thread.join(timeout=None) would hang and even not respond to signals
1441
- # because signals will get delivered to other threads and Python would forward
1442
- # them for delayed handling to the main thread which hangs.
1443
- # See CPython signalmodule.c.
1444
- # Currently the best solution I can think of:
1445
- while thread_obj.is_alive():
1446
- join_orig(thread_obj, timeout=0.1)
1447
- elif thread.get_ident() == main_thread_id and timeout > 0.1:
1448
- # Limit the timeout. This should not matter for the underlying code.
1449
- join_orig(thread_obj, timeout=0.1)
1450
- else:
1451
- # In all other cases, we can use the original.
1452
- join_orig(thread_obj, timeout=timeout)
1453
-
1454
- threading.Thread.join = join_hacked
1455
-
1456
- # Mostly the same for Condition.wait().
1457
- if PY3:
1458
- # https://youtrack.jetbrains.com/issue/PY-34983
1459
- # noinspection PyPep8Naming
1460
- Condition = threading.Condition
1461
- else:
1462
- # noinspection PyUnresolvedReferences,PyPep8Naming,PyProtectedMember
1463
- Condition = threading._Condition
1464
- cond_wait_orig = Condition.wait
1465
-
1466
- # noinspection PyUnusedLocal
1467
- def cond_wait_hacked(cond, timeout=None, *args):
1468
- """
1469
- :param Condition cond:
1470
- :param float|None timeout:
1471
- :param args:
1472
- :rtype: bool
1473
- """
1474
- if thread.get_ident() == main_thread_id:
1475
- if timeout is None:
1476
- # Use a timeout anyway. This should not matter for the underlying code.
1477
- return cond_wait_orig(cond, timeout=0.1) # noqa # https://youtrack.jetbrains.com/issue/PY-43915
1478
- # There is some code (e.g. multiprocessing.pool) which relies on that
1479
- # we respect the real specified timeout.
1480
- # However, we cannot do multiple repeated calls to cond_wait_orig as we might miss the condition notify.
1481
- # But in some Python versions, the underlying cond_wait_orig will anyway also use sleep.
1482
- return cond_wait_orig(cond, timeout=timeout) # noqa
1483
- else:
1484
- return cond_wait_orig(cond, timeout=timeout) # noqa
1485
-
1486
- Condition.wait = cond_wait_hacked
1487
-
1488
- # And the same for Lock.acquire, very similar to Condition.wait.
1489
- # However: can't set attributes of built-in/extension type 'thread.lock'.
1490
- # We could wrap the whole threading.Lock, but that is too annoying for me now...
1491
- # noinspection PyPep8Naming
1492
- Lock = None
1493
- if Lock:
1494
- lock_acquire_orig = Lock.acquire # noqa
1495
-
1496
- # Note: timeout argument was introduced in Python 3.
1497
- def lock_acquire_hacked(lock, blocking=True, timeout=-1):
1498
- """
1499
- :param threading.Lock lock:
1500
- :param bool blocking:
1501
- :param float timeout:
1502
- :rtype: bool
1503
- """
1504
- if not blocking:
1505
- return lock_acquire_orig(lock, blocking=False) # no timeout if not blocking
1506
- # Everything is blocking now.
1507
- if thread.get_ident() == main_thread_id:
1508
- if timeout is None or timeout < 0: # blocking without timeout
1509
- if PY3:
1510
- while not lock_acquire_orig(lock, blocking=True, timeout=0.1):
1511
- pass
1512
- return True
1513
- else: # Python 2. cannot use timeout
1514
- while not lock_acquire_orig(lock, blocking=False):
1515
- time.sleep(0.1)
1516
- return True
1517
- else: # timeout is set. (Can only be with Python 3.)
1518
- # Use a capped timeout. This should not matter for the underlying code.
1519
- return lock_acquire_orig(lock, blocking=True, timeout=min(timeout, 0.1))
1520
- # Fallback to default.
1521
- if PY3:
1522
- return lock_acquire_orig(lock, blocking=True, timeout=timeout)
1523
- return lock_acquire_orig(lock, blocking=True)
1524
-
1525
- Lock.acquire = lock_acquire_hacked
1416
+ # These monkey patches are not necessary anymore. Nothing blocks signals anymore in Python 3.
1417
+ # https://github.com/albertz/playground/blob/master/thread-join-block.py
1418
+ # https://github.com/albertz/playground/blob/master/cond-wait-block.py
1419
+ log.print_deprecation_warning("init_thread_join_hack: not necessary anymore since Python 3 (does nothing)")
1526
1420
 
1527
1421
 
1528
1422
  def start_daemon_thread(target, args=()):
@@ -1944,25 +1838,6 @@ def json_remove_comments(string, strip_space=True):
1944
1838
  return "".join(new_str)
1945
1839
 
1946
1840
 
1947
- def _py2_unicode_to_str_recursive(s):
1948
- """
1949
- This is supposed to be run with Python 2.
1950
- Also see :func:`as_str` and :func:`py2_utf8_str_to_unicode`.
1951
-
1952
- :param str|unicode s: or any recursive structure such as dict, list, tuple
1953
- :return: Python 2 str (is like Python 3 UTF-8 formatted bytes)
1954
- :rtype: str
1955
- """
1956
- if isinstance(s, dict):
1957
- return {_py2_unicode_to_str_recursive(key): _py2_unicode_to_str_recursive(value) for key, value in s.items()}
1958
- elif isinstance(s, (list, tuple)):
1959
- return make_seq_of_type(type(s), [_py2_unicode_to_str_recursive(element) for element in s])
1960
- elif isinstance(s, unicode):
1961
- return s.encode("utf-8") # Python 2 str, Python 3 bytes
1962
- else:
1963
- return s
1964
-
1965
-
1966
1841
  def load_json(filename: Optional[str] = None, content: Optional[str] = None) -> Dict[str, Any]:
1967
1842
  """
1968
1843
  :param filename:
@@ -1980,8 +1855,6 @@ def load_json(filename: Optional[str] = None, content: Optional[str] = None) ->
1980
1855
  json_content = json.loads(content)
1981
1856
  except ValueError as e:
1982
1857
  raise Exception("config looks like JSON but invalid json content, %r" % e)
1983
- if not PY3:
1984
- json_content = _py2_unicode_to_str_recursive(json_content)
1985
1858
  return json_content
1986
1859
 
1987
1860
 
@@ -2425,11 +2298,7 @@ def getargspec(func):
2425
2298
  :param func:
2426
2299
  :return: FullArgSpec
2427
2300
  """
2428
- if PY3:
2429
- return inspect.getfullargspec(func)
2430
- else:
2431
- # noinspection PyDeprecation
2432
- return inspect.getargspec(func)
2301
+ return inspect.getfullargspec(func)
2433
2302
 
2434
2303
 
2435
2304
  def collect_mandatory_class_init_kwargs(cls):
@@ -2685,28 +2554,6 @@ def as_str(s):
2685
2554
  assert False, "unknown type %s" % type(s)
2686
2555
 
2687
2556
 
2688
- def py2_utf8_str_to_unicode(s):
2689
- """
2690
- :param str s: e.g. the string literal "äöü" in Python 3 is correct, but in Python 2 it should have been u"äöü",
2691
- but just using "äöü" will actually be the raw utf8 byte sequence.
2692
- This can happen when you eval() some string.
2693
- We assume that you are using Python 2, and got the string (not unicode object) "äöü", or maybe "abc".
2694
- Also see :func:`_py2_unicode_to_str_recursive` and :func:`as_str`.
2695
- :return: if it is indeed unicode, it will return the unicode object, otherwise it keeps the string
2696
- :rtype: str|unicode
2697
- """
2698
- assert not PY3
2699
- assert isinstance(s, str)
2700
- try:
2701
- # noinspection PyUnresolvedReferences
2702
- s.decode("ascii")
2703
- return s
2704
- except UnicodeDecodeError:
2705
- pass
2706
- # noinspection PyUnresolvedReferences
2707
- return s.decode("utf8")
2708
-
2709
-
2710
2557
  def unicode_to_str(s):
2711
2558
  """
2712
2559
  The behavior is different depending on Python 2 or Python 3. In all cases, the returned type is a str object.
@@ -2722,12 +2569,9 @@ def unicode_to_str(s):
2722
2569
  :param str|unicode|bytes s:
2723
2570
  :rtype: str
2724
2571
  """
2725
- if PY3 and isinstance(s, bytes):
2572
+ if isinstance(s, bytes):
2726
2573
  s = s.decode("utf8")
2727
2574
  assert isinstance(s, str)
2728
- if not PY3 and isinstance(s, unicode):
2729
- s = s.encode("utf8")
2730
- assert isinstance(s, str)
2731
2575
  assert isinstance(s, str)
2732
2576
  return s
2733
2577
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250123.173545
3
+ Version: 1.20250123.223321
4
4
  Summary: The RWTH extensible training framework for universal recurrent neural networks
5
5
  Home-page: https://github.com/rwth-i6/returnn/
6
6
  Author: Albert Zeyer
@@ -42,8 +42,6 @@ def setup():
42
42
 
43
43
  import returnn.util.basic as util
44
44
 
45
- util.init_thread_join_hack()
46
-
47
45
  # noinspection PyProtectedMember
48
46
  util.BehaviorVersion.set_min_behavior_version(util.BehaviorVersion._latest_behavior_version)
49
47
 
@@ -290,11 +290,10 @@ def test_SimpleHDFWriter_small():
290
290
  for i, seq_len in enumerate(seq_lens):
291
291
  assert reader.seq_lens[i]["data"] == seq_len
292
292
 
293
- if sys.version_info[0] >= 3: # gzip.compress is >=PY3
294
- print("raw content (gzipped):")
295
- import gzip
293
+ print("raw content (gzipped):")
294
+ import gzip
296
295
 
297
- print(repr(gzip.compress(open(fn, "rb").read())))
296
+ print(repr(gzip.compress(open(fn, "rb").read())))
298
297
 
299
298
 
300
299
  def test_SimpleHDFWriter_empty_extra():
@@ -354,8 +353,6 @@ def test_SimpleHDFWriter_empty_extra():
354
353
 
355
354
 
356
355
  def test_read_simple_hdf():
357
- if sys.version_info[0] <= 2: # gzip.decompress is >=PY3
358
- raise unittest.SkipTest
359
356
  # n_dim, seq_lens, raw_gzipped is via test_SimpleHDFWriter_small
360
357
  n_dim = 3
361
358
  seq_lens = [2, 3]
@@ -18,7 +18,6 @@ __my_dir__ = os.path.dirname(os.path.abspath(__file__))
18
18
  __base_dir__ = os.path.dirname(__my_dir__)
19
19
  __main_entry__ = __base_dir__ + "/rnn.py"
20
20
  py = sys.executable
21
- PY3 = sys.version_info[0] >= 3
22
21
 
23
22
 
24
23
  def build_env():
@@ -178,9 +177,7 @@ def test_StreamIO():
178
177
 
179
178
  buf.write("hello")
180
179
  print("buf: %r" % buf.getvalue())
181
- if PY3:
182
- # This behavior is not correct in Python 2.7. https://bugs.python.org/issue30250
183
- assert buf.getvalue() == "\x00\x00\x00\x00\x00hello" # zero-filled
180
+ assert buf.getvalue() == "\x00\x00\x00\x00\x00hello" # zero-filled
184
181
  buf.truncate(0)
185
182
  buf.seek(0)
186
183
  print("buf: %r" % buf.getvalue())
@@ -11630,8 +11630,6 @@ def test_subnetwork_unused_output():
11630
11630
 
11631
11631
  def test_subnetwork_deep_stack():
11632
11632
  # https://github.com/rwth-i6/returnn/issues/993
11633
- if not util.PY3:
11634
- raise unittest.SkipTest("test case needs python 3") # __qualname__, __func__, etc
11635
11633
  with make_scope() as session:
11636
11634
  import better_exchook
11637
11635
  import traceback
@@ -4133,8 +4133,6 @@ def test_softmax_cross_entropy_over_size_n_batch():
4133
4133
 
4134
4134
 
4135
4135
  def test_softmax_cross_entropy_over_size_n_batch_real():
4136
- if sys.version_info[0] <= 2: # gzip.decompress is >=PY3
4137
- raise unittest.SkipTest
4138
4136
  import gzip
4139
4137
  import base64
4140
4138
 
@@ -12,11 +12,6 @@ import pickle
12
12
  import _setup_test_env # noqa
13
13
  from returnn.util import better_exchook
14
14
  from returnn.datasets.lm import TranslationDataset, TranslationFactorsDataset
15
- from returnn.util.basic import init_thread_join_hack
16
-
17
- better_exchook.install()
18
- better_exchook.replace_traceback_format_tb()
19
- init_thread_join_hack()
20
15
 
21
16
 
22
17
  dummy_source_text = (
@@ -496,14 +496,6 @@ def test_obj_diff_list_allowed_mapping():
496
496
  ]
497
497
 
498
498
 
499
- @unittest.skipIf(PY3, "only for Python 2")
500
- def test_py2_utf8_str_to_unicode():
501
- assert py2_utf8_str_to_unicode("a") == "a"
502
- assert type(py2_utf8_str_to_unicode("a")) is str
503
- assert py2_utf8_str_to_unicode("äöü") == "äöü"
504
- assert type(py2_utf8_str_to_unicode("äöü")) is unicode
505
-
506
-
507
499
  def test_CollectionReadCheckCovered():
508
500
  x = CollectionReadCheckCovered.from_bool_or_dict(True)
509
501
  assert x and x.truth_value
@@ -144,7 +144,6 @@ def init(config_str, config_dataset, use_pretrain, epoch, verbosity):
144
144
  :param int verbosity:
145
145
  """
146
146
  rnn.init_better_exchook()
147
- rnn.init_thread_join_hack()
148
147
  dataset_opts = None
149
148
  config_filename = None
150
149
  if config_str.strip().startswith("{"):
@@ -158,7 +158,6 @@ def init(config_filename, log_verbosity):
158
158
  :param int log_verbosity:
159
159
  """
160
160
  rnn.init_better_exchook()
161
- rnn.init_thread_join_hack()
162
161
  if config_filename:
163
162
  print("Using config file %r." % config_filename)
164
163
  assert os.path.exists(config_filename)
@@ -225,7 +225,6 @@ def collect_stats(options, iter_corpus):
225
225
 
226
226
  def init(config_filename=None):
227
227
  rnn.init_better_exchook()
228
- rnn.init_thread_join_hack()
229
228
  if config_filename:
230
229
  rnn.init_config(config_filename, command_line_options=[])
231
230
  rnn.init_log()
@@ -141,7 +141,6 @@ def init(config_filename=None):
141
141
  :param str config_filename:
142
142
  """
143
143
  rnn.init_better_exchook()
144
- rnn.init_thread_join_hack()
145
144
  if config_filename:
146
145
  rnn.init_config(config_filename, command_line_options=[])
147
146
  rnn.init_log()
@@ -29,7 +29,6 @@ def init(config_filename, log_verbosity):
29
29
  :param int log_verbosity:
30
30
  """
31
31
  rnn.init_better_exchook()
32
- rnn.init_thread_join_hack()
33
32
  if config_filename:
34
33
  print("Using config file %r." % config_filename)
35
34
  assert os.path.exists(config_filename)
@@ -44,7 +44,6 @@ def init(config_filename, log_verbosity, device):
44
44
  :param str device:
45
45
  """
46
46
  rnn.init_better_exchook()
47
- rnn.init_thread_join_hack()
48
47
  print("Using config file %r." % config_filename)
49
48
  assert os.path.exists(config_filename)
50
49
  rnn.init_config(
@@ -37,7 +37,6 @@ def init(config_filename, log_verbosity, remaining_args=()):
37
37
  :param list[str] remaining_args:
38
38
  """
39
39
  rnn.init_better_exchook()
40
- rnn.init_thread_join_hack()
41
40
  print("Using config file %r." % config_filename)
42
41
  assert os.path.exists(config_filename)
43
42
  rnn.init_config(
@@ -91,7 +91,6 @@ def init(config_filename, log_verbosity):
91
91
  :param int log_verbosity:
92
92
  """
93
93
  rnn.init_better_exchook()
94
- rnn.init_thread_join_hack()
95
94
  if config_filename:
96
95
  print("Using config file %r." % config_filename)
97
96
  assert os.path.exists(config_filename)
@@ -253,7 +253,6 @@ def init(options):
253
253
  """
254
254
  global dataset
255
255
  rnn.init_better_exchook()
256
- rnn.init_thread_join_hack()
257
256
  dataset_dict = None
258
257
  config_filename = None
259
258
  config_str = options.returnn_config
@@ -55,7 +55,6 @@ def init(config_filename, cmd_line_opts, dataset_config_str):
55
55
  :param str dataset_config_str: dataset via init_dataset_via_str()
56
56
  """
57
57
  rnn.init_better_exchook()
58
- rnn.init_thread_join_hack()
59
58
  if config_filename:
60
59
  rnn.init_config(config_filename, cmd_line_opts)
61
60
  rnn.init_log()
@@ -62,7 +62,6 @@ def init(config_filename: str, checkpoint: str, log_verbosity: int, device: str)
62
62
  """
63
63
  assert os.path.exists(checkpoint), "The specified checkpoint doesn't exist."
64
64
  rnn.init_better_exchook()
65
- rnn.init_thread_join_hack()
66
65
  assert os.path.exists(config_filename), "The specified config doesn't exist."
67
66
  print("Using config file %r." % config_filename)
68
67
  rnn.init_config(
@@ -1,2 +0,0 @@
1
- version = '1.20250123.173545'
2
- long_version = '1.20250123.173545+git.5dab449'