returnn 1.20260105.192646__py3-none-any.whl → 1.20260119.15400__py3-none-any.whl

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.
Files changed (42) hide show
  1. returnn/PKG-INFO +1 -1
  2. returnn/__old_mod_loader__.py +26 -2
  3. returnn/_setup_info_generated.py +2 -2
  4. returnn/datasets/lm.py +110 -42
  5. returnn/frontend/__init__.py +1 -0
  6. returnn/frontend/_backend.py +41 -0
  7. returnn/frontend/_native/__init__.py +22 -0
  8. returnn/frontend/_numpy_backend.py +7 -0
  9. returnn/frontend/_utils.py +1 -1
  10. returnn/frontend/array_.py +6 -5
  11. returnn/frontend/assert_.py +35 -0
  12. returnn/frontend/device.py +14 -1
  13. returnn/frontend/encoder/conformer.py +19 -0
  14. returnn/frontend/loss.py +183 -3
  15. returnn/frontend/math_.py +54 -14
  16. returnn/native_op.cpp +104 -174
  17. returnn/native_op.py +36 -31
  18. returnn/tensor/_dim_extra.py +7 -7
  19. returnn/tensor/_tensor_extra.py +10 -10
  20. returnn/tensor/utils.py +1 -1
  21. returnn/tf/frontend_layers/_backend.py +3 -1
  22. returnn/tf/layers/basic.py +13 -2
  23. returnn/tf/native_op.py +16 -5
  24. returnn/tf/util/basic.py +7 -201
  25. returnn/torch/engine.py +120 -3
  26. returnn/torch/frontend/_backend.py +166 -22
  27. returnn/torch/frontend/bridge.py +61 -0
  28. returnn/torch/frontend/compile_helper.py +106 -0
  29. returnn/torch/util/array_.py +30 -0
  30. returnn/torch/util/assert_.py +122 -0
  31. returnn/torch/util/native_op.py +885 -0
  32. returnn/torch/util/native_op_code_compiler.py +308 -0
  33. returnn/util/basic.py +3 -1
  34. returnn/util/cuda_env.py +332 -0
  35. returnn/util/debug.py +1 -0
  36. returnn/util/fsa.py +17 -13
  37. returnn/util/native_code_compiler.py +104 -47
  38. {returnn-1.20260105.192646.dist-info → returnn-1.20260119.15400.dist-info}/METADATA +1 -1
  39. {returnn-1.20260105.192646.dist-info → returnn-1.20260119.15400.dist-info}/RECORD +42 -36
  40. {returnn-1.20260105.192646.dist-info → returnn-1.20260119.15400.dist-info}/WHEEL +1 -1
  41. {returnn-1.20260105.192646.dist-info → returnn-1.20260119.15400.dist-info}/LICENSE +0 -0
  42. {returnn-1.20260105.192646.dist-info → returnn-1.20260119.15400.dist-info}/top_level.txt +0 -0
returnn/util/fsa.py CHANGED
@@ -10,7 +10,7 @@ from __future__ import annotations
10
10
  import numpy
11
11
  import pickle
12
12
  import itertools
13
- import typing
13
+ from typing import Optional, List, Tuple
14
14
  from copy import deepcopy
15
15
  from os.path import isfile
16
16
  from returnn.log import log
@@ -397,7 +397,7 @@ class Ctc:
397
397
  e_end_3 = Edge(self.fsa.num_states, self.fsa.num_states + 1, self.fsa.lem_list[-1][-1], 1.0)
398
398
  self.fsa.edges.append(e_end_3)
399
399
  self.fsa.num_states += 3
400
- # add node nuber of final state
400
+ # add node number of final state
401
401
  self.final_states.append(self.fsa.num_states - 1)
402
402
 
403
403
  elif self.fsa.lem_edges is not None:
@@ -806,7 +806,7 @@ class Ngram:
806
806
  :param int n: size of the gram (1, 2, 3)
807
807
  """
808
808
  self.n = n
809
- self.lexicon = None # type: typing.Optional[Lexicon]
809
+ self.lexicon: Optional[Lexicon] = None
810
810
  # lexicon consists of 3 entries: phoneme_list, phonemes and lemmas
811
811
  # phoneme_list: list of string phonemes in the lexicon
812
812
  # phonemes: dict of dict of str {phone: {index: , symbol: , variation:}}
@@ -1059,7 +1059,7 @@ class FastBwFsaShared:
1059
1059
 
1060
1060
  def __init__(self):
1061
1061
  self.num_states = 1
1062
- self.edges = [] # type: typing.List[Edge]
1062
+ self.edges: List[Edge] = []
1063
1063
 
1064
1064
  def add_edge(self, source_state_idx, target_state_idx, emission_idx, weight=0.0):
1065
1065
  """
@@ -1148,17 +1148,20 @@ class FastBwFsaShared:
1148
1148
  )
1149
1149
 
1150
1150
 
1151
- def get_ctc_fsa_fast_bw(targets, seq_lens, blank_idx):
1151
+ def get_ctc_fsa_fast_bw(
1152
+ *, targets: numpy.ndarray, seq_lens: numpy.ndarray, blank_idx: int, label_loop: bool = True
1153
+ ) -> FastBaumWelchBatchFsa:
1152
1154
  """
1153
- :param numpy.ndarray targets: shape (batch,time)
1154
- :param numpy.ndarray seq_lens: shape (batch)
1155
- :param int blank_idx:
1156
- :rtype: FastBaumWelchBatchFsa
1155
+ :param targets: shape (batch,time)
1156
+ :param seq_lens: shape (batch)
1157
+ :param blank_idx:
1158
+ :param label_loop:
1159
+ :return: FSA
1157
1160
  """
1158
1161
  n_batch, n_time = targets.shape
1159
1162
  assert seq_lens.shape == (n_batch,)
1160
- edges = [] # type: typing.List[typing.Tuple[int,int,int,int]] # list of (from,to,emission_idx,sequence_idx)
1161
- start_end_states = [] # type: typing.List[typing.Tuple[int,int]] # list of (start,end), same len as batch
1163
+ edges: List[Tuple[int, int, int, int]] = [] # list of (from,to,emission_idx,sequence_idx)
1164
+ start_end_states: List[Tuple[int, int]] = [] # list of (start,end), same len as batch
1162
1165
  state_idx = 0
1163
1166
  # Note: We don't use weights on the edges, i.e. they are all set to zero.
1164
1167
  # I.e. we want that all strings for some given length T have the same probability.
@@ -1188,9 +1191,10 @@ def get_ctc_fsa_fast_bw(targets, seq_lens, blank_idx):
1188
1191
  # Skip directly to final state (state_idx + 3).
1189
1192
  edges.append((state_idx, state_idx + 3, label_idx, batch_idx)) # label
1190
1193
  state_idx += 1
1191
- edges.append((state_idx, state_idx, label_idx, batch_idx)) # label loop
1194
+ if label_loop:
1195
+ edges.append((state_idx, state_idx, label_idx, batch_idx)) # label loop
1192
1196
  edges.append((state_idx, state_idx + 1, blank_idx, batch_idx)) # blank
1193
- if not is_final_label and label_idx != next_label_idx:
1197
+ if not is_final_label and (not label_loop or label_idx != next_label_idx):
1194
1198
  # Skip over blank is allowed in this case.
1195
1199
  edges.append((state_idx, state_idx + 2, next_label_idx, batch_idx)) # next label
1196
1200
  if next_is_final_label:
@@ -3,10 +3,11 @@ Native code compiler
3
3
  """
4
4
 
5
5
  from __future__ import annotations
6
- from typing import Optional, List
6
+ from typing import Optional, Union, Sequence, List, Tuple, Dict
7
7
  import typing
8
8
  import os
9
9
  import sys
10
+ import shutil
10
11
 
11
12
  from . import basic as util
12
13
 
@@ -17,47 +18,50 @@ class NativeCodeCompiler:
17
18
  """
18
19
 
19
20
  CacheDirName = "returnn_native"
20
- CollectedCompilers = None # type: Optional[List[NativeCodeCompiler]]
21
+ CollectedCompilers: Optional[List[NativeCodeCompiler]] = None
21
22
 
22
23
  def __init__(
23
24
  self,
24
- base_name,
25
- code_version,
26
- code,
27
- is_cpp=True,
28
- c_macro_defines=None,
29
- ld_flags=None,
30
- include_paths=(),
31
- include_deps=None,
32
- static_version_name=None,
33
- should_cleanup_old_all=True,
34
- should_cleanup_old_mydir=False,
35
- use_cxx11_abi=False,
36
- log_stream=None,
37
- verbose=False,
25
+ base_name: str,
26
+ *,
27
+ code_version: Union[int, Tuple[int, ...]] = 1,
28
+ code: str,
29
+ is_cpp: bool = True,
30
+ c_macro_defines: Optional[Dict[str, Union[str, int, None]]] = None,
31
+ ld_flags: Optional[Sequence[str]] = None,
32
+ include_paths: Optional[Sequence[str]] = (),
33
+ include_deps: Optional[Sequence[str]] = None,
34
+ static_version_name: Optional[str] = None,
35
+ should_cleanup_old_all: bool = True,
36
+ should_cleanup_old_mydir: bool = False,
37
+ use_cxx11_abi: bool = False,
38
+ log_stream: Optional[typing.TextIO] = None,
39
+ verbose: Optional[bool] = None,
38
40
  ):
39
41
  """
40
- :param str base_name: base name for the module, e.g. "zero_out"
41
- :param int|tuple[int] code_version: check for the cache whether to reuse
42
- :param str code: the source code itself
43
- :param bool is_cpp: if False, C is assumed
44
- :param dict[str,str|int|None]|None c_macro_defines: e.g. {"TENSORFLOW": 1}
45
- :param list[str]|None ld_flags: e.g. ["-lblas"]
46
- :param list[str]|tuple[str] include_paths:
47
- :param list[str]|None include_deps: if provided and an existing lib file,
42
+ :param base_name: base name for the module, e.g. "zero_out"
43
+ :param code_version: check for the cache whether to reuse
44
+ :param code: the source code itself
45
+ :param is_cpp: if False, C is assumed
46
+ :param c_macro_defines: e.g. {"TENSORFLOW": 1}
47
+ :param ld_flags: e.g. ["-lblas"]
48
+ :param include_paths:
49
+ :param include_deps: if provided and an existing lib file,
48
50
  we will check if any dependency is newer
49
51
  and we need to recompile. we could also do it automatically via -MD but that seems overkill and too slow.
50
- :param str|None static_version_name: normally, we use .../base_name/hash as the dir
52
+ :param static_version_name: normally, we use .../base_name/hash as the dir
51
53
  but this would use .../base_name/static_version_name.
52
- :param bool should_cleanup_old_all: whether we should look in the cache dir
54
+ :param should_cleanup_old_all: whether we should look in the cache dir
53
55
  and check all ops if we can delete some old ones which are older than some limit
54
56
  (self._cleanup_time_limit_days)
55
- :param bool should_cleanup_old_mydir: whether we should delete our op dir before we compile there.
56
- :param typing.TextIO|None log_stream: file stream for print statements
57
- :param bool verbose: be slightly more verbose
57
+ :param should_cleanup_old_mydir: whether we should delete our op dir before we compile there.
58
+ :param log_stream: file stream for print statements
59
+ :param verbose: be slightly more verbose
58
60
  """
59
61
  if self.CollectedCompilers is not None:
60
62
  self.CollectedCompilers.append(self)
63
+ if verbose is None:
64
+ verbose = os.environ.get("RETURNN_NATIVE_CODE_COMPILER_VERBOSE") == "1"
61
65
  self.verbose = verbose
62
66
  self.cache_dir = "%s/%s" % (util.get_cache_dir(), self.CacheDirName)
63
67
  self._include_paths = list(include_paths)
@@ -69,6 +73,7 @@ class NativeCodeCompiler:
69
73
  self.ld_flags = ld_flags or []
70
74
  self.include_deps = include_deps
71
75
  self.static_version_name = static_version_name
76
+ self.use_cxx11_abi = use_cxx11_abi
72
77
  self._code_hash = self._make_code_hash()
73
78
  self._info_dict = self._make_info_dict()
74
79
  self._hash = self._make_hash()
@@ -76,7 +81,6 @@ class NativeCodeCompiler:
76
81
  if should_cleanup_old_all:
77
82
  self._cleanup_old()
78
83
  self._should_cleanup_old_mydir = should_cleanup_old_mydir
79
- self.use_cxx11_abi = use_cxx11_abi
80
84
  self._log_stream = log_stream
81
85
  if self.verbose:
82
86
  print("%s: %r" % (self.__class__.__name__, self), file=log_stream)
@@ -157,7 +161,16 @@ class NativeCodeCompiler:
157
161
  assert isinstance(res, dict)
158
162
  return res
159
163
 
160
- _relevant_info_keys = ("code_version", "code_hash", "c_macro_defines", "ld_flags", "compiler_bin", "platform")
164
+ _relevant_info_keys = (
165
+ "code_version",
166
+ "code_hash",
167
+ "c_macro_defines",
168
+ "ld_flags",
169
+ "compiler_bin",
170
+ "platform",
171
+ "use_cxx11_abi",
172
+ "cpp_version",
173
+ )
161
174
 
162
175
  def _make_info_dict(self):
163
176
  """
@@ -174,6 +187,8 @@ class NativeCodeCompiler:
174
187
  "ld_flags": self.ld_flags,
175
188
  "compiler_bin": self._get_compiler_bin(),
176
189
  "platform": platform.platform(),
190
+ "use_cxx11_abi": self.use_cxx11_abi,
191
+ "cpp_version": self.cpp_version,
177
192
  }
178
193
 
179
194
  def _make_code_hash(self):
@@ -251,8 +266,8 @@ class NativeCodeCompiler:
251
266
  :rtype: str
252
267
  """
253
268
  if self.is_cpp:
254
- return "g++"
255
- return "gcc"
269
+ return get_cpp_bin()
270
+ return get_cc_bin()
256
271
 
257
272
  def _transform_compiler_opts(self, opts):
258
273
  """
@@ -261,27 +276,35 @@ class NativeCodeCompiler:
261
276
  """
262
277
  return opts
263
278
 
279
+ cpp_version = 11
280
+
264
281
  def _extra_common_opts(self):
265
282
  """
266
283
  :rtype: list[str]
267
284
  """
268
285
  if self.is_cpp:
269
- return ["-std=c++11"]
286
+ return [f"-std=c++{self.cpp_version}"]
270
287
  return []
271
288
 
272
- @classmethod
273
- def _transform_ld_flag(cls, opt):
274
- """
275
- :param str opt:
276
- :rtype: str
277
- """
289
+ def _transform_ld_flags(self, opts: Sequence[str]) -> Sequence[str]:
290
+ res = []
291
+ for opt in opts:
292
+ if opt.startswith("-l") or opt.startswith("-L"):
293
+ res.append(opt)
294
+ else:
295
+ res.append("-Wl," + opt)
296
+ opts = res
278
297
  if sys.platform == "darwin":
279
- # It seems some versions of MacOS ld cannot handle the `-l:filename` argument correctly.
280
- # E.g. TensorFlow 1.14 incorrectly uses this.
281
- # https://github.com/tensorflow/tensorflow/issues/30564
282
- if opt.startswith("-l:lib") and opt.endswith(".dylib"):
283
- return "-l%s" % opt[len("-l:lib") : -len(".dylib")]
284
- return opt
298
+ res = []
299
+ for opt in opts:
300
+ # It seems some versions of MacOS ld cannot handle the `-l:filename` argument correctly.
301
+ # E.g. TensorFlow 1.14 incorrectly uses this.
302
+ # https://github.com/tensorflow/tensorflow/issues/30564
303
+ if opt.startswith("-l:lib") and opt.endswith(".dylib"):
304
+ opt = "-l%s" % opt[len("-l:lib") : -len(".dylib")]
305
+ res.append(opt)
306
+ return res
307
+ return opts
285
308
 
286
309
  def _maybe_compile_inner(self):
287
310
  # Directory should be created by the locking mechanism.
@@ -300,7 +323,7 @@ class NativeCodeCompiler:
300
323
  common_opts += ["-D%s=%s" % item for item in sorted(self.c_macro_defines.items())]
301
324
  common_opts += ["-g"]
302
325
  opts = common_opts + [self._c_filename, "-o", self._so_filename]
303
- opts += list(map(self._transform_ld_flag, self.ld_flags))
326
+ opts += self._transform_ld_flags(self.ld_flags)
304
327
  cmd_bin = self._get_compiler_bin()
305
328
  cmd_args = [cmd_bin] + opts
306
329
  from subprocess import Popen, PIPE, STDOUT, CalledProcessError
@@ -348,3 +371,37 @@ class NativeCodeCompiler:
348
371
  """
349
372
  self._maybe_compile()
350
373
  return self._so_filename
374
+
375
+
376
+ def get_cc_bin() -> str:
377
+ """
378
+ :return: path
379
+ """
380
+ cc_bin = os.environ.get("CC", "")
381
+ if cc_bin:
382
+ if cc_bin.startswith("/"):
383
+ return cc_bin
384
+ cc_bin = shutil.which(cc_bin)
385
+ if cc_bin:
386
+ return cc_bin
387
+ cc_bin = shutil.which("cc") or shutil.which("clang") or shutil.which("gcc")
388
+ if not cc_bin:
389
+ raise RuntimeError("Cannot find C compiler (cc, clang, gcc) in PATH")
390
+ return cc_bin
391
+
392
+
393
+ def get_cpp_bin() -> str:
394
+ """
395
+ :return: path
396
+ """
397
+ cpp_bin = os.environ.get("CXX", "")
398
+ if cpp_bin:
399
+ if cpp_bin.startswith("/"):
400
+ return cpp_bin
401
+ cpp_bin = shutil.which(cpp_bin)
402
+ if cpp_bin:
403
+ return cpp_bin
404
+ cpp_bin = shutil.which("c++") or shutil.which("cpp") or shutil.which("clang++") or shutil.which("g++")
405
+ if not cpp_bin:
406
+ raise RuntimeError("Cannot find C++ compiler (c++, cpp, clang++, g++) in PATH")
407
+ return cpp_bin
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20260105.192646
3
+ Version: 1.20260119.15400
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
@@ -1,15 +1,15 @@
1
- returnn/PKG-INFO,sha256=jqFiOkEQgJcdKNaO9ISAulL31UxmgD3XbysYERiHCp0,5216
1
+ returnn/PKG-INFO,sha256=nQf6tM6K9xgVpz2swsHGgZ3_KKOTmOxapJUGOhaHKtw,5215
2
2
  returnn/__init__.py,sha256=biBtRsM0WZ406vShaeH-9WFoqJ8XwTbn6g0EeFJ7l8E,1012
3
3
  returnn/__main__.py,sha256=lHyZcu_0yc9f7Vf_Kfdy9PmeU0T76XVXnpalHi5WKro,31740
4
- returnn/__old_mod_loader__.py,sha256=nvsNY-xELdS_IPNkv66Q9Rmvg4dbGW0-EBRDcCmctos,7654
4
+ returnn/__old_mod_loader__.py,sha256=-XAtilhq87CqmWmK2awbfGLoPAwjLGVu8t4QAxCw0fQ,9436
5
5
  returnn/__setup__.py,sha256=22kQn2fh11iPM0hLb2Fy5sLmoU1JGvmDxXRYuRgQkwU,4659
6
- returnn/_setup_info_generated.py,sha256=DDcUMIhrwQNitCW-h7MYuVKCTHNiUEIm4-xXNzgxHV4,77
6
+ returnn/_setup_info_generated.py,sha256=XH82je_dpqKnzUiIkr5fglLLaBi9laA2hmccLLMN3Ig,77
7
7
  returnn/config.py,sha256=JK8EjDsUdyY2c90s0KY1rLD1kesVfz6vRT0gxy_AQ5I,29142
8
8
  returnn/forward_iface.py,sha256=A_OJiaXsX4MlXQRzST86ylyxSUZbC402PQL1REcqHjM,911
9
9
  returnn/learning_rate_control.py,sha256=ZvWryAn_tv9DhV8sh1LV3eE34Yltl3On3mYZAG4hR9s,34684
10
10
  returnn/log.py,sha256=WoTDv4XDovgvgXa7iiav-nA8pb25lOEzndbnVrDLfUo,12319
11
- returnn/native_op.cpp,sha256=itGDV05Nqg59g37qXAt-Z4c-rX7eDRQFY9efDPjaVlg,38613
12
- returnn/native_op.py,sha256=4_NnvfNxsM8GE_FsD6yOg6PZegqIdtJ3Sl1GdBWmFvg,244424
11
+ returnn/native_op.cpp,sha256=qvaK7-v5pBh9T5pgYUoBc9hAUM-cFIzK2xQ1pmo0a4E,35962
12
+ returnn/native_op.py,sha256=ASGoaZuynbITviP4miyVHyHWH40AvXUfJiQcBAQT7iU,244711
13
13
  returnn/pretrain.py,sha256=MHiXJZqkQFmDVyaYsGpd_Acv20wxl7Pr6s6qJzAT2FI,22648
14
14
  returnn/datasets/__init__.py,sha256=PvDlfDOaaopIeUIt0OSvHD2eHZkdkyE-sjMXf35EH5U,390
15
15
  returnn/datasets/audio.py,sha256=Gmj7a08dnvYh7Z-G1TNapz42L50AIcDE9JeIZaO1s1M,23334
@@ -21,7 +21,7 @@ returnn/datasets/distrib_files.py,sha256=48edqdf7YpnPJ-TOis3Mz5U9A2DSxfiYT1HCMSt
21
21
  returnn/datasets/generating.py,sha256=o9-JZ2s5QKssux6GcSaM3oivf_PE6nhSOeytRyGB7pQ,99574
22
22
  returnn/datasets/hdf.py,sha256=v5sjBenURR9Z-g7AQ9tsL84yDSye5RtbLpym3M6HSDE,67833
23
23
  returnn/datasets/huggingface.py,sha256=ls9WMR6gUcMgGksl80g0An1az5Xjya_V3ojbbbsZqrU,20047
24
- returnn/datasets/lm.py,sha256=CXl_g-Z28RWlBTzx35uC4r_GCwOP05LIsUp0iSi6JG4,100652
24
+ returnn/datasets/lm.py,sha256=riDa7rkwOuPX53_0y9wgQ_s2A9453BX0gWGV0HX29_M,103614
25
25
  returnn/datasets/map.py,sha256=kOBJVZmwDhLsOplzDNByIfa0NRSUaMo2Lsy36lBvxrM,10907
26
26
  returnn/datasets/meta.py,sha256=hTtfwINIxP2S4JQ5IQXzvTh2MixwxzeF06pPTW36yl0,101456
27
27
  returnn/datasets/multi_proc.py,sha256=BClXq0fActi1XQa4vcMhHmhYF0Q-fnnDzlIlbBM6_DM,22614
@@ -75,13 +75,14 @@ returnn/extern/graph_editor/select.py,sha256=VAds2FqTGU7o4K2l6TW2KMOxUxh-kLl4bn7
75
75
  returnn/extern/graph_editor/subgraph.py,sha256=q9o0zVBLDrTIidaXg5WG5daDW0mLbwv2J-Zse8059gM,26569
76
76
  returnn/extern/graph_editor/transform.py,sha256=qMGSenpbAnGqdG6QP6iWjlm6_ccySYJaZKOoAj1dbOM,29348
77
77
  returnn/extern/graph_editor/util.py,sha256=HfRbyQPmQ6_n5-O-096n0KeJtllQXFtaurpeJS_URZ0,18706
78
- returnn/frontend/__init__.py,sha256=2aS7nbxXniIrBp2DODl0xN0f3IJ_dX4Bi9ZlR7W5_DE,1472
79
- returnn/frontend/_backend.py,sha256=MVZn2HSkF3tsqchYvy2QM9pA4ILdKq07kj-_AAHGUy0,50942
78
+ returnn/frontend/__init__.py,sha256=2enFj5UdFgbDFUmKUoNH55LmAKr_65GZKyoYHmmy6QQ,1495
79
+ returnn/frontend/_backend.py,sha256=fLVSGf4FwoxemGx8JynX0m6VQRREWAAfNNFyADLQXnQ,52002
80
80
  returnn/frontend/_cache.py,sha256=Uao2xzfvVaKABk1fkxcpXzxKIGJaI9FwwlTvvoNUstk,8550
81
- returnn/frontend/_numpy_backend.py,sha256=fZjks7p3dgxVZ6tSDazTTgBxNjJqXjfqgw_7mA7rDEE,9066
81
+ returnn/frontend/_numpy_backend.py,sha256=R1xw0CDhTzigg_X7i456GkTxKbdda0MWpdMxxJK665k,9319
82
82
  returnn/frontend/_random_journal.py,sha256=_ktP_mjgx8vtQQGX_DofdhewJj0aPiczefTWeemPkmo,5457
83
- returnn/frontend/_utils.py,sha256=uVQldGHyYKIyhSEmumJ04ix5eP5tjZw4CEC0w6-zhyQ,12074
84
- returnn/frontend/array_.py,sha256=O-q137hb7V-Rw1xWV2ezDyFYepVXQlnqWcPDZ_WLUN8,56660
83
+ returnn/frontend/_utils.py,sha256=LTwYQJBT9XjRdC2kVvHy29eUN5qARNSLGMJk90a8PjI,12076
84
+ returnn/frontend/array_.py,sha256=2VQYtlB6OiKdpkU9H_w_jIUrb7mlxizz7KKOHjnYaeo,56795
85
+ returnn/frontend/assert_.py,sha256=jLckJYV6gfb5TaaoRq6Q7pyqr3gNySbzjryEotb8zPs,995
85
86
  returnn/frontend/attention.py,sha256=bFD9Ei6GxSi-BC1OfueDyTIE-51a3dKKZOWdSIbz7l8,46633
86
87
  returnn/frontend/backend.py,sha256=iQ9w4xl8Ea7bgpb0VUaCKq50rV5Bl2E5J8Rhd-oqD_c,883
87
88
  returnn/frontend/build_from_dict.py,sha256=rfWa2rjjhIR_kIQED_nMrygrQBunS6unegzWTLVbC98,3017
@@ -90,7 +91,7 @@ returnn/frontend/const.py,sha256=A5fP9w6Akv56d89pPvdoZaXvC9ZTYcexepnS9O2clOc,394
90
91
  returnn/frontend/container.py,sha256=wF3OlQN7WlOVmmdapUth_Unha3DVf6h1B7okBJAuJDA,8011
91
92
  returnn/frontend/control_flow_ctx.py,sha256=v17CsNwRnZYe8GdMtGJt2ftibfxMCGK1i0l-GX5ILu0,699
92
93
  returnn/frontend/conv.py,sha256=RbVyFGspn40VNT1B-KWWaDBBUhd7VFhKTN-V_SrwPlU,39514
93
- returnn/frontend/device.py,sha256=Sjara0EmFLhu9O55cN_p6OwU0NgdNCCQjyAuQhiWpGw,1437
94
+ returnn/frontend/device.py,sha256=gX7zPRZrnhjMgpgg6aACtE7Lg6qYlzerYbeCTiRhxhw,1665
94
95
  returnn/frontend/dims.py,sha256=_HDU-Kxn3pApicFkm0F4Fs-ZAuF1gKXG8rroQHCFQQI,13073
95
96
  returnn/frontend/dropout.py,sha256=TjqZCKDIOBeHr14-NCemOm9m3p84LxQuPH1DvRAYg88,5028
96
97
  returnn/frontend/dtype.py,sha256=Ooc5BrcNrTp6XShuFEV9g5V6-niuy4ImP_Lt_Qgq3jE,1886
@@ -101,8 +102,8 @@ returnn/frontend/init.py,sha256=bVB7bpghaY8DI_HL0mkB_9z95onWnIX2zlW4hlMYnRw,7494
101
102
  returnn/frontend/label_smoothing.py,sha256=lxmaowNr61sCMzMewqHhu1r0CcklYfhLXlFnBu8DeAU,5676
102
103
  returnn/frontend/linear.py,sha256=xRUjnkD3MTWDezSaYATBYJQ2fa1RhKMNrTuhC54hhVs,2252
103
104
  returnn/frontend/loop.py,sha256=t-z6ke1X03I2aPUEqLYmVZWyMzfW3IedFvKUGc-TCX8,16160
104
- returnn/frontend/loss.py,sha256=aSKzjhjIikeNJqzcUBBlaBTXILuAoW6wrmsExGtJJBY,8572
105
- returnn/frontend/math_.py,sha256=A_RkZ5lH2uXMchfPIH3itraWtMNNCVckQHHpf7aIIZQ,17295
105
+ returnn/frontend/loss.py,sha256=uY4nPuUH4O2VTe5jIqqlFagVwtejZflT6JN-fn-S3Fo,16422
106
+ returnn/frontend/math_.py,sha256=wIWYtjcIEV_QXNJiNT1lYsVRQdNLxtBbTYiAPr_OR3Y,18442
106
107
  returnn/frontend/matmul.py,sha256=xkueyxzSDz8MsYaWxPSjmV2Yy-tcaiOQDXbFt1IQM2A,1944
107
108
  returnn/frontend/module.py,sha256=nt35I9xyHuH42qobLHGUFoNI5-mVieAtA36SqK6NhpY,11065
108
109
  returnn/frontend/nested.py,sha256=PKsKWHwE2SI19DjZ9vRI8q4-ywIGMK3-TTUuqdXrVlM,15592
@@ -120,7 +121,7 @@ returnn/frontend/state.py,sha256=EePdrx6PtWL4mJ2XZmGlh5dl4nq6G9wZpqP4hdDEzfY,293
120
121
  returnn/frontend/stepwise_scheduler.py,sha256=fMOTR7npGCDXrXDmSQ4VwmudoHEbY3Yr-QGyjFdQJSc,927
121
122
  returnn/frontend/tensor_array.py,sha256=Ej7CHtvpY0yBROlAk5vFe3CTXh-iAuqu9qcXS3Qxt2I,4328
122
123
  returnn/frontend/types.py,sha256=r-QsxPQyFSr9WwCRzqTn_X5jQLbjthrtjHavY8XIDmk,1099
123
- returnn/frontend/_native/__init__.py,sha256=fVjazAujt0rdICXZL-GgW1sjFeL1HB4NPuy2m5rmMsc,6480
124
+ returnn/frontend/_native/__init__.py,sha256=VVK0x6Z7OZa3Sb4QDSz9sRrBhX8FfYdvrwhAg4W9-cc,6839
124
125
  returnn/frontend/_native/backend.cpp,sha256=MeHczHypwj_ncntOxRqanK8SqGyV9Eq1X0cpMWb_WII,4768
125
126
  returnn/frontend/_native/backend.hpp,sha256=Wq80dcEzXfRNxGOXFnIgHllkiv1rDi3KpHK-xxJsSDI,791
126
127
  returnn/frontend/_native/module.cpp,sha256=9BCUoDTZDJ6hlXp4pUus1BlN7-oxcRy6tK9ctyCkwk0,15709
@@ -139,7 +140,7 @@ returnn/frontend/decoder/__init__.py,sha256=A-koKyPVlXp_V_2bk6GKZ1Xfv4rYIcfxGMXQ
139
140
  returnn/frontend/decoder/transformer.py,sha256=64Z1IY_WcDuj8Ti73BGwbT_grrEpxBl5mIsBZkqJzHQ,24650
140
141
  returnn/frontend/encoder/__init__.py,sha256=0QGLlujRIKx3zBREeShza_-xhGIxj73zbd7t-g1m-ho,17
141
142
  returnn/frontend/encoder/base.py,sha256=A759EwCYAmSi-kzXz1vaTjR2l59TvNGQlzaNdp3UOKs,2109
142
- returnn/frontend/encoder/conformer.py,sha256=FQYXdeNaE8ZCiexAVNPk5fiP3x1gEOTzTga5N0HBcHo,21370
143
+ returnn/frontend/encoder/conformer.py,sha256=I1OeaU2P7lm-N_ODS_P4BVQaplJR4Ies1Yd7Lr9mdFw,22225
143
144
  returnn/frontend/encoder/conformer_v2.py,sha256=vAYdT8m2Zzg3IIZZafeccClFHU1_c9T-EgBOsHadQPA,7701
144
145
  returnn/frontend/encoder/e_branchformer.py,sha256=SZdhpb90FaQdpzgvSOtFPLbLCa0NdycbB5Z4vMoY4TM,12279
145
146
  returnn/frontend/encoder/transformer.py,sha256=0-ku9A8r_w3USQd0aAQ0fdPvFILNWcGaGZ7g3SE-Xjo,11656
@@ -155,8 +156,8 @@ returnn/sprint/extern_interface.py,sha256=l-v1X-Yg0UpTFe7Y3c4FwWOqpSNuv9Oy5EzqlK
155
156
  returnn/sprint/interface.py,sha256=1j5SB0V8hSW8A5song9ciZtcBnZoKKfNipk9ezOIMuA,36491
156
157
  returnn/tensor/README.md,sha256=X6BqcRLrPLPnwF9yR69uqIFrMnNluj9pBkOPHwNgzuo,501
157
158
  returnn/tensor/__init__.py,sha256=on6j5PEOQpck50UcsR4nJzJSDmoVy34z1Oq4efv6Ax0,154
158
- returnn/tensor/_dim_extra.py,sha256=tHE3N6hUKqbzedJ8RNhn9aJHxvhTQuI9JckCLsPbKKI,116776
159
- returnn/tensor/_tensor_extra.py,sha256=1UPNisRAbljkvfMcrEXaPAF-2Dz7AdgC3jAKVVAnAO8,165084
159
+ returnn/tensor/_dim_extra.py,sha256=8HLTvgEnThCp7GdtB714Tvs4ad939jZmhpS3qab03sU,116790
160
+ returnn/tensor/_tensor_extra.py,sha256=ClwZBfaOavDtapXYpYRhDTGE85bzvRqox5mF_OnEHds,165112
160
161
  returnn/tensor/_tensor_mixin_base.py,sha256=H5z86I0NejxrSgMH1c5oXQzBqS6L9HpvP4y7oegBaSc,643
161
162
  returnn/tensor/_tensor_op_overloads.py,sha256=HklwuTBjy7mH_665VKaCUdu-oC3aa7Uz1ZQiCz4jeZc,5448
162
163
  returnn/tensor/control_flow_ctx.py,sha256=L9e32AfYDUDgsEDHL07thSFyYFqwhyVSqzE_bM03Y4M,5252
@@ -164,7 +165,7 @@ returnn/tensor/dim.py,sha256=652DlcSe6o6l5OyY5xt9Yigij_Xry-ToG9AemMX3roY,4208
164
165
  returnn/tensor/marked_dim.py,sha256=Ae2hQIb5QixRU2gDhQEm0tmYt8TmomWoGERB414jR8o,1884
165
166
  returnn/tensor/tensor.py,sha256=IIHbDu0D_aX8U4LKTm5ThD_fuoGhn98B9EyvVBsPJ3E,9083
166
167
  returnn/tensor/tensor_dict.py,sha256=-20YPbXfRDE9WurkfQM-Mw6H8ouaBGL_90SDmK0b4cw,7534
167
- returnn/tensor/utils.py,sha256=GoA4J7Cm8Q1e-NjkGEvCPMOqa4-KdCUjyGLnGTAPlDk,9957
168
+ returnn/tensor/utils.py,sha256=4BUBot_FKtkqqe_ubfBW-QZXZWA_X5HGJwL7fs7Q3W4,9998
168
169
  returnn/tf/__init__.py,sha256=X4g2LFCFTl0uiybMRkfBY8AYkgMa6HX0vVxxTk0nMiE,88
169
170
  returnn/tf/compat.py,sha256=NkAkdlR37m2d9qh3i33sIfEGilOaFBeCofAQpQwnZpY,1632
170
171
  returnn/tf/data_pipeline.py,sha256=iNkNHv5PiGcudlajG8eO336rPD3hya5kWMDrjhWa4jA,36632
@@ -172,13 +173,13 @@ returnn/tf/distributed.py,sha256=PCLspuNg4XP4ZX3Q444IlohUJEy0Dc8rp8YlmDqVbEc,151
172
173
  returnn/tf/engine.py,sha256=nhAMSEVUIf6Onm8jaRkT2CuY5XbOV5CEeWyOMUk67kY,146610
173
174
  returnn/tf/horovod.py,sha256=Dpv_3wZxB8q8Gqk6xah4iJ4vKGKWWg1-7PPhpSMPlec,5404
174
175
  returnn/tf/hyper_param_tuning.py,sha256=IfVRYYz-oSwOa2E7-vwh-pnWL4j-StHHbSYv7VbvcPE,31619
175
- returnn/tf/native_op.py,sha256=LuwPj-0lMBDZeP9q79cI1FuIYudnMavUlKsTQWMrkl4,77382
176
+ returnn/tf/native_op.py,sha256=OAoenmPU96GKE-QG2LSeezV6-PjQ6U2WZU_xelLuF88,77723
176
177
  returnn/tf/network.py,sha256=ZBo5qXOZHBJLjv2E8y9APeiRIpz5KEQdc6GN3rl6LBM,224668
177
178
  returnn/tf/sprint.py,sha256=Yqjh0-6sCWHpdDPQCzHKx7TwQCOjJyjfd0KHtnYdd-8,5471
178
179
  returnn/tf/updater.py,sha256=RcvoGnjBcObbLfLHH_mDRSY2lTeLyNoAFsZpHUiIgRY,72036
179
180
  returnn/tf/frontend_layers/README.md,sha256=P4vVl_EK-4jT55m40mq-K4Nr9yFY0tJR5fmDzTHSDFE,1096
180
181
  returnn/tf/frontend_layers/__init__.py,sha256=MGUn7rv6fOefbtkX-5pq6fC1T6Y5h0oh1uOPSEcv1_I,506
181
- returnn/tf/frontend_layers/_backend.py,sha256=tsCUuDGOXlEAPNXAz4dH-pxsKtEe_vKZRp3hfHvEr7k,47709
182
+ returnn/tf/frontend_layers/_backend.py,sha256=nSQQi7v3r82J1MooJZLo808MuhMlboRY0YnRVi0xSPk,47773
182
183
  returnn/tf/frontend_layers/_utils.py,sha256=ijByaDOqPDod5mZC9EoTkt8PHBEODXHsWbkwDOF9XW4,4205
183
184
  returnn/tf/frontend_layers/cond.py,sha256=bGd_g2tzpKXO218Xk-so59vFPJF-jF_ZvoZIU-1qBzw,14832
184
185
  returnn/tf/frontend_layers/config_entry_points.py,sha256=t01RWOiaZohzuqPXX-MLV0P5yCOfE0dz-9dZ77_pK4c,5751
@@ -194,13 +195,13 @@ returnn/tf/frontend_low_level/__init__.py,sha256=34469k3KzMUIGowxReOZnbf6WdTjxY7
194
195
  returnn/tf/frontend_low_level/_backend.py,sha256=Hv838I2eyOP2qVNWs5DJxseyxUbAET2lm0ZZcbW_CsE,24991
195
196
  returnn/tf/layers/__init__.py,sha256=Ngu-X84nWFgz7ndDu88DqoZ-5lUMMTQWH4g7N8pSoCg,72
196
197
  returnn/tf/layers/base.py,sha256=sUxEfh6WxaHWHG7O3cfxB6gG6YpEHkFKUJVayKvTBSI,152968
197
- returnn/tf/layers/basic.py,sha256=ujn8ltTgEK4GDL8Y9CmtVSKXSnCCGdfx30-vGphBWFA,614275
198
+ returnn/tf/layers/basic.py,sha256=swpmYuzuXv29ypfhqw5Bgghv00zaOxzwN9HxCSOavkY,614435
198
199
  returnn/tf/layers/rec.py,sha256=3f6M_5aAMPvx7aAHdPV3VSFRHf7tjpp8lrXSzmk1I5c,548435
199
200
  returnn/tf/layers/segmental_model.py,sha256=wUyDZGr-eTVIIQWcsHLML0wtOxuWn_NFKOIrUKQcvoI,21515
200
201
  returnn/tf/layers/signal_processing.py,sha256=vRlkN7k7otk9_Qdv0qr_l6V0VT5Q6dO2MxwZWb2HH2M,52693
201
202
  returnn/tf/layers/variable.py,sha256=G1dIEoq0iQsXp-uOAUPTaBKHSOQfx7Sn-spD8MRv0HM,11446
202
203
  returnn/tf/util/__init__.py,sha256=mEg5jNVbQBLO2TGwO4Ff2F5qQN5_Zg4hAAQfX5taeec,92
203
- returnn/tf/util/basic.py,sha256=ezK-XBKQcscVKmCL43wsieiUZntHUVOZwhDZtVItOqg,304088
204
+ returnn/tf/util/basic.py,sha256=ODlBV5rFgKuhCrBh9GdMDo8WJb44ZQLe6m2T62o5qfI,297397
204
205
  returnn/tf/util/data.py,sha256=AlSa0r_IaXtjKG1q1vxUybFazpjt4lUX8LYq0STJv-w,29471
205
206
  returnn/tf/util/gradient_checkpoint.py,sha256=_1NGAmNZ5NiGhFYVRWvBV5yejt-EZWbbvxNWHbESp5Q,7426
206
207
  returnn/tf/util/ken_lm.py,sha256=R60UAoywriuDIeQ2Hk3Vm_waf2Hxxc88ofzEw6X6Sd4,17313
@@ -208,7 +209,7 @@ returnn/tf/util/open_fst.py,sha256=sZRDw4TbxvhGqpGdUJWy1ebvlZm4_RPhygpRw9uLAOQ,1
208
209
  returnn/torch/README.md,sha256=jzJ2FpOHW02vxN69yKaV97C9LI-hmvjBglKfdZXIDdc,85
209
210
  returnn/torch/__init__.py,sha256=MHEUyNHB20Vy89uKAqZoj6FxJKF1Gq3HW-i6ra1pNcI,24
210
211
  returnn/torch/distributed.py,sha256=_lyJR71HIoCHpMi5GztGM7YwrX54Am8zSkjnDkE1Lbk,7524
211
- returnn/torch/engine.py,sha256=XaJhVpF181sf8M1iXAs3u0zr37VVUG3SW81-DIZgg3g,81280
212
+ returnn/torch/engine.py,sha256=JnoGrAakIUIsSXVEIVIXqTOVcDYJASVoRNZQrOPNrdA,85368
212
213
  returnn/torch/updater.py,sha256=nNd1mBPQyvIB096BEFi0KKmRI-U3jnRETzb743p2B9c,32064
213
214
  returnn/torch/data/__init__.py,sha256=6cLNEi8KoGI12PF6akN7mI_mtjlx-0hcQAfMYoExwik,132
214
215
  returnn/torch/data/extern_data.py,sha256=5al706ZaYtHWLp5VH2vS-rW69YXP3NHyOFRKY0WY714,7810
@@ -217,36 +218,41 @@ returnn/torch/data/queued_data_iter.py,sha256=PoOsGHdHVZjTmcyfq_ZOw--P6hyfTdmAWI
217
218
  returnn/torch/data/returnn_dataset_wrapper.py,sha256=fMahf05G0SPYm6HxSQpVm8JhsIHons-i1Ce4aQv4IjM,8332
218
219
  returnn/torch/data/tensor_utils.py,sha256=-Teqi--LLbt6q_5mDRdoHZHmPgSdC83W706ukif_YiU,1284
219
220
  returnn/torch/frontend/__init__.py,sha256=AA48HZnC17ASuKA0EWy8loZ-Bib_yUtqF4T1wYvjst4,62
220
- returnn/torch/frontend/_backend.py,sha256=e55BNxK4mAxl6nxK0mBR0IVkJUEFZ9wVJCvaIwAfT6A,107824
221
+ returnn/torch/frontend/_backend.py,sha256=WpdsoF1_d6iszPshRa4QNkdNmsjZd3issuyV9OdKT3U,115398
221
222
  returnn/torch/frontend/_rand.py,sha256=1JgIkV2XmpgJD86zXZ-NCAe-QuoP2swr6NaS1oz3Qa8,1830
222
- returnn/torch/frontend/bridge.py,sha256=c_mVBCBo29sjm8Bhxarv00szwGPgxjwoIqAHOmceGQw,7842
223
+ returnn/torch/frontend/bridge.py,sha256=RBtAIlYWn_AC-GaHWperrOncPjMLWAOrU30pWk2789A,9775
224
+ returnn/torch/frontend/compile_helper.py,sha256=ax8ax5mjC8PDHtwTQzHYWUNRoKjZMuYHF6me9VdxiSY,2969
223
225
  returnn/torch/frontend/raw_ops.py,sha256=lF0h-KtYYsdaaqQADylVZp9qzPskOOXA4MfmYDyx5IU,296
224
226
  returnn/torch/optim/README.md,sha256=0iH5FiKb7iDrVK5n8V6yCh4ciCFG2YSbyh7lPneT5ik,360
225
227
  returnn/torch/optim/__init__.py,sha256=yxdbnOkXAHzZ_t6cHi6zn5x_DQNlLZJ-KxZByHTIg1U,29
226
228
  returnn/torch/optim/lion.py,sha256=jV_qfwyyO5HAgqW94caap-ALkVjU688RpRgkZyLNZ5Y,5432
227
229
  returnn/torch/util/README.md,sha256=AW-6ueWhgcwDcm57md6sm227QXNkvLnlRLwaH7NlS-w,193
228
230
  returnn/torch/util/__init__.py,sha256=AOXYUjzPm0XrzFJCPAXo9Jj_FvqD1XH3FfKtho80Vl8,26
229
- returnn/torch/util/array_.py,sha256=ell3VZvn01SLtF9Pw2fvPzFNO-XDQ7tSB9VCrVSKmSA,2556
231
+ returnn/torch/util/array_.py,sha256=e0BKaF5S_asqDKjeC-ui66lKAQ_zwUOBKhpRcvtzELY,3795
232
+ returnn/torch/util/assert_.py,sha256=dVtEue0jRCMbniZPAPRKHPuffznm6URRwovRbzi2xCk,3834
230
233
  returnn/torch/util/debug_inf_nan.py,sha256=fmzSSTJJyLf7i5yDWRHLeDI0gxvadeqLE8RxMuSHx_4,6398
231
234
  returnn/torch/util/diagnose_gpu.py,sha256=_yswLmwR8Q2rCsv2jI5FUQNBT__453jBmiWYwazdu20,6808
232
235
  returnn/torch/util/exception_helper.py,sha256=54IzlsXYp6E_rEEWIpgppkFid9stb-2PZVRU8d5mFNE,4497
233
236
  returnn/torch/util/gradient_checkpoint.py,sha256=iLy-FB65DC8O6LxzmMvFjnSdpIVpko87ppIvRKAbtpQ,27995
234
237
  returnn/torch/util/module.py,sha256=MXHIrF9Isu575DDJIa81212ULKwdqu1oOLxDVZecVSk,1693
238
+ returnn/torch/util/native_op.py,sha256=44z5-9-w6uKVcupmOAoLZq2gr80HJ5-VbCrHP66A89c,33740
239
+ returnn/torch/util/native_op_code_compiler.py,sha256=6DFpf_Gmygv3g1crx1jzoTqo6do2K1vDGuWL5OoEbqk,11651
235
240
  returnn/torch/util/scaled_gradient.py,sha256=C5e79mpqtxdtw08OTSy413TSBSlOertRisc-ioiFIaU,3191
236
241
  returnn/util/__init__.py,sha256=UIG1qw4idqhW71BV60ha7h9PktxvEVcBIu0lYRossK8,336
237
- returnn/util/basic.py,sha256=rFeg3XwjNcNDbBgjkhisStbjTFA8CEfIrdwHjfdkJKw,143212
242
+ returnn/util/basic.py,sha256=WW0EFnCaY8tIMbHKeADMP1nmtBD4Q3jj4qcGLWVi1FI,143247
238
243
  returnn/util/better_exchook.py,sha256=hOKazwv2q2-d0XMfxkJXMbLZyNTtraV3jPHplFcrMsg,71014
239
244
  returnn/util/bpe.py,sha256=LWFhICZsEOnMwNws0lybPNzKRX6rSr8yKCvP65vjl9Y,19656
240
245
  returnn/util/collect_outputs_dict.py,sha256=CjpsftoMgmvyE4wNKTO6F-QQ_44QHXcOZIXMUMQVZ-8,2637
241
- returnn/util/debug.py,sha256=0ED4etMKG9lVqU0HPKEiCK-HoS8hBgnQza444QCE6ec,28576
246
+ returnn/util/cuda_env.py,sha256=8aZRGZnYhSOY2wu7P8KZTWW_IcWEhwOQd3Lq0bEsqS8,11602
247
+ returnn/util/debug.py,sha256=Ndq5nz-tMEG9ZNwZTbgOkQYB9JSvAwF8r0o53Gf2EbM,28653
242
248
  returnn/util/debug_helpers.py,sha256=0EINLK4uLtoSt5_kHs1M2NIFpMd0S7i4c4rx90U4fJk,2914
243
249
  returnn/util/file_cache.py,sha256=8xE4zMQi38g7ZIGwNohd13_CgjzpIs18ILxFCKttzxE,29439
244
- returnn/util/fsa.py,sha256=k2lJ8tyf_g44Xk1EPVLwDwpP4spoMTqIigDVOWocQHY,59177
250
+ returnn/util/fsa.py,sha256=j0e3DM_OxFTKjt0kW5GSdbNPz6rLWmBxsMQ2xtwSRo0,59254
245
251
  returnn/util/literal_py_to_pickle.py,sha256=3dnjWPeeiDT2xp4bRDgIf9yddx7b1AG7mOKEn_jiSl8,2173
246
252
  returnn/util/lru_cache.py,sha256=7Q5H3a8b07E8e1iB7PA9jCpRnxMJZOFS2KO07cy0gqk,11446
247
253
  returnn/util/math.py,sha256=ximPqNsv0Wu6VNcCLqNfsmSu1s-VPsAJYt5nEvFZVtY,6691
248
254
  returnn/util/multi_proc_non_daemonic_spawn.py,sha256=YCW3Gry0RJ9Dsc5bKfZ77Q06eLjq6winGniYllJE7PU,9057
249
- returnn/util/native_code_compiler.py,sha256=T6eZwzNA7AnkpNpo61AbYVNVtKqdWBbQfvJEQVe-cHE,13172
255
+ returnn/util/native_code_compiler.py,sha256=DEqp8MwQZwihCfV4IlEjmq4_nX4HbicwskDhw2UNx-s,14928
250
256
  returnn/util/pprint.py,sha256=1bbfe07X8ESFDzZFKuCqsRaCFKM8C4ftbsCSjYve93k,8131
251
257
  returnn/util/py-to-pickle.cpp,sha256=ByU4cwy5MGEihaoYiRo1sSsJfYn10_riDwVqSHRLwp8,14864
252
258
  returnn/util/py_ext_mod_compiler.py,sha256=I1w9laIPqJbQGb2lFp-3llBjORS-217ZGIbPCp6PIes,1708
@@ -255,8 +261,8 @@ returnn/util/sig_proc.py,sha256=Tjz0VOAVyqu2qDCF5HZ1JjALjcFsHcNkcd96WgZeKfE,7265
255
261
  returnn/util/task_system.py,sha256=7Dz7Nvi_1-o5pDv9OZYdAnlJw6OSvgbYUmQ72P0Fgkw,26002
256
262
  returnn/util/train_proc_manager.py,sha256=Pjht28k6uz6BNQ47uW6Gf880iyq5q4wx7P_K2tmoAM8,3266
257
263
  returnn/util/watch_memory.py,sha256=BR5P2kvBN6UI81cE0_1WAA6Hd1SByLbBaiDxvLhPOew,4213
258
- returnn-1.20260105.192646.dist-info/LICENSE,sha256=ywBD_U2aD4vpuoIgNAsjIGBYydl0tVKll3De0Z8s77c,11041
259
- returnn-1.20260105.192646.dist-info/METADATA,sha256=jqFiOkEQgJcdKNaO9ISAulL31UxmgD3XbysYERiHCp0,5216
260
- returnn-1.20260105.192646.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
261
- returnn-1.20260105.192646.dist-info/top_level.txt,sha256=Lsn4WZc5Pbfk0-xDQOgnFCxOoqxL4CyeM3N1TFbJncw,8
262
- returnn-1.20260105.192646.dist-info/RECORD,,
264
+ returnn-1.20260119.15400.dist-info/LICENSE,sha256=ywBD_U2aD4vpuoIgNAsjIGBYydl0tVKll3De0Z8s77c,11041
265
+ returnn-1.20260119.15400.dist-info/METADATA,sha256=nQf6tM6K9xgVpz2swsHGgZ3_KKOTmOxapJUGOhaHKtw,5215
266
+ returnn-1.20260119.15400.dist-info/WHEEL,sha256=WnJ8fYhv8N4SYVK2lLYNI6N0kVATA7b0piVUNvqIIJE,91
267
+ returnn-1.20260119.15400.dist-info/top_level.txt,sha256=Lsn4WZc5Pbfk0-xDQOgnFCxOoqxL4CyeM3N1TFbJncw,8
268
+ returnn-1.20260119.15400.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.2)
2
+ Generator: setuptools (75.3.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5